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

swfchan turned sixteen years old yesterday! (5may2024)

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

Over-Web.swf

This is the info page for
Flash #127286

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


Text
value

<p align="left"><font face="Kristen ITC" size="18" color="#000000" letterSpacing="0.000000" kerning="1"><b>caption:</b></font></p>

<p align="center"><font face="Kristen ITC" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>STAT</b></font></p>

<p align="center"><font face="Kristen ITC" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>DYN</b></font></p>

PAUSE

CLICK TO CONTINUE

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

!"#$%&'()*+,-./0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ mass = 0; center = new b2Vec2(0, 0); I = 0; super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public function GetCoreVertices():Array{ return (m_coreVertices); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local5:Array; var _local6:Number; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2Shape { public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var angle:Number;// = 0 public var m_friction:Number; public var center:b2Vec2; public var m_next:b2Shape; public var m_restitution:Number; public var m_userData; public var m_isSensor:Boolean; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ center = new b2Vec2(0, 0); angle = 0; super(); m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); _local3 = s_resetAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ var _local4:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; _local4 = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; _local3 = s_proxyAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var isSensor:Boolean;// = false public var density:Number;// = 0 public var type:int;// = -1 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); _local10 = 0; _local11 = 0; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.lowerBound.x; _local5 = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); _local6 = _arg3.upperBound.x; _local7 = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; _local10 = 0; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; _local7 = 0; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:Array; var _local9:int; var _local10:Array; var _local11:b2Mat22; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local6 = _arg1.m_vertexCount; _local7 = _arg1.m_vertices; _local8 = _arg1.m_normals; _local9 = _arg4.m_vertexCount; _local10 = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; _local13 = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); _local14 = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; _local15 = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); _local16 = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; _local20 = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local21 = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; _local22 = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local23 = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); _local24 = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg2.lowerBound; _local4 = _arg1.upperBound; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; _local7 = (_local3.x - _local4.x); _local8 = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local7:int; var _local8:Array; var _local9:int; var _local10:Array; var _local11:Array; var _local12:b2Mat22; var _local13:b2Vec2; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:ClipVertex; var _local21:int; var _local22:int; var _local23:Number; _local7 = _arg2.m_vertexCount; _local8 = _arg2.m_normals; _local9 = _arg5.m_vertexCount; _local10 = _arg5.m_vertices; _local11 = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; _local14 = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); _local15 = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; _local16 = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; _local21 = _local17; _local22 = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local7:int; var _local8:Array; var _local9:Number; var _local10:int; var _local11:Array; var _local12:Number; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local15:b2XForm; var _local16:b2XForm; var _local17:int; var _local18:uint; var _local19:Number; var _local20:Number; var _local21:Array; var _local22:int; var _local23:Array; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:b2Vec2; var _local28:b2Vec2; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Array; var _local33:Array; var _local34:int; var _local35:int; var _local36:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; _local7 = 0; _local8 = [_local7]; _local9 = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; _local10 = 0; _local11 = [_local10]; _local12 = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; _local15 = new b2XForm(); _local16 = new b2XForm(); _local19 = 0.98; _local20 = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; _local21 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); _local22 = _local13.m_vertexCount; _local23 = _local13.m_vertices; _local24 = _local23[_local17]; _local25 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; _local26 = b2Math.SubtractVV(_local37, _local25); _local27 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); _local28 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); _local29 = b2Math.b2Dot(_local28, _local25); _local30 = -(b2Math.b2Dot(_local27, _local25)); _local31 = b2Math.b2Dot(_local27, _local37); _local32 = [new ClipVertex(), new ClipVertex()]; _local33 = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); _local35 = 0; _local36 = 0; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:b2Vec2; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:int; var _local15:Number; var _local16:int; var _local17:Number; var _local18:int; var _local19:Number; var _local20:int; var _local21:Number; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; _local6 = _arg2.m_vertexCount; _local7 = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; _local10 = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); _local11 = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); _local12 = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); _local13 = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); _local14 = 0; _local15 = -(Number.MAX_VALUE); _local16 = 0; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; _local18 = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); _local19 = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; _local20 = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; _local21 = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); _local10 = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2ManifoldPoint; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; _local8 = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local9 = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; _local10 = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local11 = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local14 = ((_local12 * _local12) + (_local13 * _local13)); _local15 = _arg2.m_radius; _local16 = _arg4.m_radius; _local17 = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; _local19 = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); _local20 = (0.5 * (_local8 + _local10)); _local21 = (0.5 * (_local9 + _local11)); _local22 = (_local20 - _arg3.position.x); _local23 = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; var _local21:int; var _local22:Array; var _local23:Array; var _local24:int; var _local25:int; var _local26:int; var _local27:b2Vec2; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; _local13 = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); _local14 = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; _local15 = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local16 = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local18 = 0; _local19 = -(Number.MAX_VALUE); _local20 = _arg4.m_radius; _local21 = _arg2.m_vertexCount; _local22 = _arg2.m_vertices; _local23 = _arg2.m_normals; _local24 = 0; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; _local25 = _local18; _local26 = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; _local27 = _local22[_local26]; _local28 = (_local27.x - _local11.x); _local29 = (_local27.y - _local11.y); _local30 = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local31 = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID; _local1 = new b2ContactID(); _local1.key = key; return (_local1); } public function get key():uint{ return (_key); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactPoint { public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var friction:Number; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local4:Number; var _local5:int; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local4 = (100 * Number.MIN_VALUE); _local5 = 0; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local8:Array; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Number; var _local13:int; var _local14:int; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; _local8 = s_p1s; _local9 = s_p2s; _local10 = s_points; _local11 = 0; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); _local12 = 0; _local13 = 20; _local14 = 0; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - _local21) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; _local9 = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local10 = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; _local11 = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local12 = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); _local16 = (_arg3.m_radius - b2Settings.b2_toiSlop); _local17 = (_arg5.m_radius - b2Settings.b2_toiSlop); _local18 = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; _local14 = _arg4[2]; _local15 = _local6.x; _local16 = _local6.y; _local17 = _local7.x; _local18 = _local7.y; _local19 = _local8.x; _local20 = _local8.y; _local21 = (_local17 - _local15); _local22 = (_local18 - _local16); _local23 = (_local19 - _local15); _local24 = (_local20 - _local16); _local25 = (_local19 - _local17); _local26 = (_local20 - _local18); _local27 = -(((_local15 * _local21) + (_local16 * _local22))); _local28 = ((_local17 * _local21) + (_local18 * _local22)); _local29 = -(((_local15 * _local23) + (_local16 * _local24))); _local30 = ((_local19 * _local23) + (_local20 * _local24)); _local31 = -(((_local17 * _local25) + (_local18 * _local26))); _local32 = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; _local33 = ((_local21 * _local24) - (_local22 * _local23)); _local34 = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); _local36 = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; _local37 = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; _local38 = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); _local39 = (_local36 * _local38); _local40 = (_local37 * _local38); _local41 = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:b2Point; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local9 = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local10 = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); _local11 = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int; var _local8:int; _local7 = _arg3.m_type; _local8 = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; _local12 = -(_local7.x); _local13 = -(_local7.y); _local14 = (_local6.x - _local7.x); _local15 = (_local6.y - _local7.y); _local16 = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var points:Array; public var pointCount:int;// = 0 public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; pointCount = 0; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ var _local2:int; pointCount = _arg1.pointCount; _local2 = 0; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var userData;// = null public var proxyId1:uint; public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function b2Pair(){ userData = null; super(); } public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint; _local5 = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local3:int; var _local4:Array; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; _local3 = 0; _local4 = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local4:uint; var _local5:uint; var _local6:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; _local4 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local5 = m_hashTable[_local4]; _local6 = null; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:b2Pair; var _local5:uint; var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; _local5 = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint; _local3 = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var lowerBounds:Array; public var upperBounds:Array; public var userData;// = null public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; userData = null; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; _local5 = _arg3.p1; _local6 = (_arg3.p2.x - _local5.x); _local7 = (_arg3.p2.y - _local5.y); _local8 = (p2.x - p1.x); _local9 = (p2.y - p1.y); _local10 = _local9; _local11 = -(_local8); _local12 = (100 * Number.MIN_VALUE); _local13 = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local6) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:int; var _local20:int; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; _local7 = _arg1.m_sweepRadius; _local8 = _arg3.m_sweepRadius; _local9 = _arg2.t0; _local10 = (_arg2.c.x - _arg2.c0.x); _local11 = (_arg2.c.y - _arg2.c0.y); _local12 = (_arg4.c.x - _arg4.c0.x); _local13 = (_arg4.c.y - _arg4.c0.y); _local14 = (_arg2.a - _arg2.a0); _local15 = (_arg4.a - _arg4.a0); _local16 = 0; _local17 = s_p1; _local18 = s_p2; _local19 = 20; _local20 = 0; _local21 = 0; _local22 = 0; _local23 = 0; _local24 = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var v:b2Vec2; public var id:b2ContactID; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function Set(_arg1:Number):void{ var _local2:Number; var _local3:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = col1.x; _local3 = col2.x; _local4 = col1.y; _local5 = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = col1.x; _local5 = col2.x; _local6 = col1.y; _local7 = col2.y; _local8 = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22; _local2 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Mat22; _local3 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); _local4 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); _local5 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean; _local2 = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number; _local3 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c:b2Vec2; public var a:Number; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; _local3 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function SetZero():void{ x = 0; y = 0; } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function Subtracted(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((x - _arg1.x), (y - _arg1.y))); } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function Normalized():b2Vec2{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); _local2 = (1 / _local1); return (new b2Vec2((x * _local2), (y * _local2))); } public function Added(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((x + _arg1.x), (y + _arg1.y))); } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function Normalize():Number{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Multipled(_arg1:Number):b2Vec2{ return (new b2Vec2((x * _arg1), (y * _arg1))); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function GetAngle():Number{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); if (_local1 == 0){ _local1 = 1E-9; }; _local2 = 0; if (y > 0){ _local2 = Math.acos((x / _local1)); } else { _local2 = -(Math.acos((x / _local1))); }; return (_local2); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var R:b2Mat22; public var position:b2Vec2; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _g:uint;// = 0 private var _b:uint;// = 0 private var _r:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = 0; _g = 0; _b = 0; super(); _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function GetShape1():b2Shape{ return (m_shape1); } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetManifolds():Array{ return (null); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function Update(_arg1:b2ContactListener):void{ var _local2:int; var _local3:int; var _local4:b2Body; var _local5:b2Body; _local2 = m_manifoldCount; Evaluate(_arg1); _local3 = m_manifoldCount; _local4 = m_shape1.m_body; _local5 = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local1:int; var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); _local1 = 0; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ var _local3:int; var _local4:int; var _local5:b2ContactRegister; var _local6:Function; if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; _local3 = _arg1.m_shape1.m_type; _local4 = _arg1.m_shape2.m_type; _local5 = s_registers[_local3][_local4]; _local6 = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local4:int; var _local5:int; var _local6:b2ContactRegister; var _local7:Function; var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5]; _local7 = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:int; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; _local9 = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; _local2 = 0; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local19:int; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; _local19 = 0; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; _local1 = 0; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function GetManifolds():Array{ return (null); } override public function Evaluate(_arg1:b2ContactListener):void{ } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); _local8 = [false, false]; _local9 = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); _local9 = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_mass:Number; public var m_u:b2Vec2; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_localAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; if (m_frequencyHz > 0){ return (true); }; _local2 = m_body1; _local3 = m_body2; _local1 = _local2.m_xf.R; _local4 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; _local7 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; _local9 = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); _local10 = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); _local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); _local12 = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local13 = (-(m_mass) * _local12); m_u.Set(_local9, _local10); _local14 = (_local13 * m_u.x); _local15 = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); _local10 = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; _local11 = ((_local6 * m_u.y) - (_local7 * m_u.x)); _local12 = ((_local8 * m_u.y) - (_local9 * m_u.x)); _local13 = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local3 = m_body1; _local4 = m_body2; _local2 = _local3.m_xf.R; _local5 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; _local8 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; _local10 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); _local11 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); _local12 = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); _local13 = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); _local14 = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); _local15 = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); _local16 = (_local15 * m_u.x); _local17 = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2DistanceJointDef extends b2JointDef { public var length:Number; public var dampingRatio:Number; public var frequencyHz:Number; public var localAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ var _local5:Number; var _local6:Number; body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); _local5 = (_arg4.x - _arg3.x); _local6 = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_force:Number; public var m_mass:Number; public var m_prismatic1:b2PrismaticJoint; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_ground2:b2Body; public var m_constant:Number; public var m_revolute1:b2RevoluteJoint; public var m_revolute2:b2RevoluteJoint; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local2:int; var _local3:int; var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); _local2 = _arg1.joint1.m_type; _local3 = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = 0; _local2 = m_body1; _local3 = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; _local6 = (m_constant - (_local4 + (m_ratio * _local5))); _local7 = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local2 = m_ground1; _local3 = m_ground2; _local4 = m_body1; _local5 = m_body2; _local14 = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = m_body2.m_xf.R; _local2 = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); _local3 = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); _local4 = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); _local6 = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint2:b2Joint; public var joint1:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular2:Number; public var angular1:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; _local3 = null; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var collideConnected:Boolean; public var body1:b2Body; public var body2:b2Body; public var userData; public var type:int; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var joint:b2Joint; public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; } }//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { public var m_beta:Number; public var m_mass:b2Mat22; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_localAnchor:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K:b2Mat22; public var m_gamma:Number; public var m_C:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); _local4 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); _local5 = m_body2.m_mass; _local6 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local7 = (((2 * _local5) * _arg1.dampingRatio) * _local6); _local8 = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); _local9 = (_arg1.dt * m_impulse.x); _local10 = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local6 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; _local8 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); _local9 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); _local10 = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); _local11 = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); _local12 = m_impulse.x; _local13 = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); _local14 = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local15 = (_arg1.dt * _local10); _local16 = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 57
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var frequencyHz:Number; public var dampingRatio:Number; public var maxForce:Number; public var target:b2Vec2; public var timeStep:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_refAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_torque:Number; public var m_enableLimit:Boolean; public var m_motorForce:Number; public var m_force:Number; public var m_localYAxis1:b2Vec2; public var m_motorMass:Number; public var m_maxMotorForce:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_angularMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_linearJacobian:b2Jacobian; public var m_enableMotor:Boolean; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; _local1 = m_body1; _local2 = m_body2; _local4 = _local1.GetWorldPoint(m_localAnchor1); _local5 = _local2.GetWorldPoint(m_localAnchor2); _local6 = (_local5.x - _local4.x); _local7 = (_local5.y - _local4.y); _local8 = _local1.GetWorldVector(m_localXAxis1); _local9 = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_xf.R; _local2 = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); _local3 = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); _local4 = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); _local5 = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; _local3 = m_body1; _local4 = m_body2; _local5 = _local3.m_invMass; _local6 = _local4.m_invMass; _local7 = _local3.m_invI; _local8 = _local4.m_invI; _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local21 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local22 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local23 = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local24 = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); _local25 = b2Math.b2Abs(_local23); _local26 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local27 = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local28 = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_xf.R; _local4 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; _local7 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; _local9 = (_local1.m_sweep.c.x + _local4); _local10 = (_local1.m_sweep.c.y + _local5); _local11 = (_local2.m_sweep.c.x + _local7); _local12 = (_local2.m_sweep.c.y + _local8); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = _local1.GetWorldVector(m_localXAxis1); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; _local4 = _local2.m_xf.R; _local14 = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); _local15 = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); _local16 = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); _local17 = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_invMass; _local5 = _local3.m_invMass; _local6 = _local2.m_invI; _local7 = _local3.m_invI; _local9 = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local10 = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); _local11 = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); _local12 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local13 = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); _local14 = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2PrismaticJointDef extends b2JointDef { public var localAxis1:b2Vec2; public var referenceAngle:Number; public var maxMotorForce:Number; public var motorSpeed:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_ground:b2Body; public var m_maxLength2:Number; public var m_limitForce1:Number; public var m_maxLength1:Number; public var m_limitState1:int; public var m_limitState2:int; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_limitPositionImpulse1:Number; public var m_constant:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_positionImpulse:Number; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitForce2:Number; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local5 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local6 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local7 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local23 = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; _local10 = (_local2.m_sweep.c.x + _local5); _local11 = (_local2.m_sweep.c.y + _local6); _local12 = (_local3.m_sweep.c.x + _local8); _local13 = (_local3.m_sweep.c.y + _local9); _local14 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local15 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local16 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local17 = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); _local18 = m_u1.Length(); _local19 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; _local20 = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; _local21 = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); _local22 = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.GetWorldPoint(m_localAnchor2); _local2 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.GetWorldPoint(m_localAnchor1); _local2 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength2:Number; public var length1:Number; public var length2:Number; public var maxLength1:Number; public var ratio:Number; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); _local8 = (_arg5.x - _arg3.x); _local9 = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local10 = (_arg6.x - _arg4.x); _local11 = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; _local12 = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_motorForce:Number; public var m_pivotMass:b2Mat22; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_xf.R; _local7 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; _local10 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; _local12 = (_local3.m_sweep.c.x + _local7); _local13 = (_local3.m_sweep.c.y + _local8); _local14 = (_local4.m_sweep.c.x + _local10); _local15 = (_local4.m_sweep.c.y + _local11); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); _local18 = _local3.m_invMass; _local19 = _local4.m_invMass; _local20 = _local3.m_invI; _local21 = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local22 = tImpulse.x; _local23 = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local24 = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local11 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); _local12 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); _local13 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); _local14 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); _local15 = (_arg1.dt * _local13); _local16 = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2RevoluteJointDef extends b2JointDef { public var referenceAngle:Number; public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var maxMotorTorque:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_next:b2Body; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_mass:Number; public var m_sweep:b2Sweep; public var m_xf:b2XForm; public var m_torque:Number; public var m_userData; public var m_flags:uint; public var m_world:b2World; public var m_prev:b2Body; public var m_invMass:Number; public var m_linearDamping:Number; public var m_type:int; public var m_angularDamping:Number; public var m_invI:Number; public var m_sleepTime:Number; public var m_shapeCount:int; public var m_jointList:b2JointEdge; public var m_linearVelocity:b2Vec2; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ var _local3:b2Mat22; var _local4:b2Vec2; m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetPosition(_arg1:b2Vec2):void{ m_xf.position = _arg1; } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function SynchronizeTransform():void{ var _local1:b2Mat22; var _local2:b2Vec2; m_xf.R.Set(m_sweep.a); _local1 = m_xf.R; _local2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function GetInertia():Number{ return (m_I); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function GetJointList():b2JointEdge{ return (m_jointList); } 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; var _local2:Number; var _local3:Number; var _local4:b2MassData; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:int; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; _local2 = 0; _local3 = 0; _local4 = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); _local5 = m_xf.R; _local6 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; _local7 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local4:b2Mat22; var _local5:b2Vec2; var _local6:Boolean; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); _local4 = m_xf.R; _local5 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); _local6 = false; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function ApplyCenterImpulse(_arg1: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 * ((m_sweep.c.x * _arg1.y) - (m_sweep.c.y * _arg1.x)))); } public function SynchronizeShapes():Boolean{ var _local1:b2XForm; var _local2:b2Mat22; var _local3:b2Vec2; var _local4:b2Shape; var _local5:Boolean; _local1 = s_xf1; _local1.R.Set(m_sweep.a0); _local2 = _local1.R; _local3 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); _local5 = true; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetXForm():b2XForm{ return (m_xf); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } 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 SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; _local5 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetShapeList():b2Shape{ return (m_shapeList); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge; _local2 = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function DestroyShape(_arg1:b2Shape):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:Boolean; if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); _local2 = m_shapeList; _local3 = null; _local4 = false; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function ApplyCenterForce(_arg1: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 + ((m_sweep.c.x * _arg1.y) - (m_sweep.c.y * _arg1.x))); } public function LocalToGlobal(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2(((Math.cos((_arg1.GetAngle() + GetAngle())) * _arg1.Length()) + GetPosition().x), ((Math.sin((_arg1.GetAngle() + GetAngle())) * _arg1.Length()) + GetPosition().y))); } public function GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GlobalToLocal(_arg1:b2Vec2):b2Vec2{ var _local2:*; _local2 = new b2Vec2((_arg1.x - GetPosition().x), (_arg1.y - GetPosition().y)); return (new b2Vec2((Math.cos((_local2.GetAngle() - GetAngle())) * _local2.Length()), (Math.sin((_local2.GetAngle() - GetAngle())) * _local2.Length()))); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetPosition():b2Vec2{ return (m_xf.position); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2BodyDef { public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; _local5 = _local2.m_body; _local6 = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; 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_lineThickness:Number;// = 1 public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawScale = 1; m_lineThickness = 1; m_alpha = 1; m_fillAlpha = 1; m_xformScale = 1; super(); m_drawFlags = 0; } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, 9151693, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } } }//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeShape(_arg1:b2Shape):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local4:int; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; _local4 = 0; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:b2ContactSolver; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; _local8 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; _local4 = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ var _local4:b2BodyDef; m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2XForm; var _local5:b2XForm; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; _local2 = _arg1.m_body1; _local3 = _arg1.m_body2; _local4 = _local2.m_xf; _local5 = _local3.m_xf; _local6 = _local4.position; _local7 = _local5.position; _local8 = _arg1.GetAnchor1(); _local9 = _arg1.GetAnchor2(); _local10 = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var _local1:uint; var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2XForm; var _local12:b2AABB; var _local13:b2AABB; var _local14:Array; var _local15:Boolean; var _local16:uint; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); _local1 = m_debugDraw.GetFlags(); _local7 = new b2Vec2(); _local8 = new b2Vec2(); _local9 = new b2Vec2(); _local10 = new b2Color(0, 0, 0); _local12 = new b2AABB(); _local13 = new b2AABB(); _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local6 = m_broadPhase; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.9, 0.3); _local2 = 0; while (_local2 < b2Pair.b2_tableCapacity) { _local16 = _local6.m_pairManager.m_hashTable[_local2]; while (_local16 != b2Pair.b2_nullPair) { _local17 = _local6.m_pairManager.m_pairs[_local16]; _local18 = _local6.m_proxyPool[_local17.proxyId1]; _local19 = _local6.m_proxyPool[_local17.proxyId2]; _local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value)); _local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value)); _local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value)); _local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value)); _local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value)); _local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value)); _local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value)); _local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value)); _local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x)); _local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y)); _local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x)); _local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y)); m_debugDraw.DrawSegment(_local8, _local9, _local10); _local16 = _local17.next; }; _local2++; }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local6 = m_broadPhase; _local20 = _local6.m_worldAABB.lowerBound; _local21 = _local6.m_worldAABB.upperBound; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.3, 0.9); _local2 = 0; while (_local2 < b2Settings.b2_maxProxies) { _local22 = _local6.m_proxyPool[_local2]; if (_local22.IsValid() == false){ } else { _local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value)); _local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value)); _local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value)); _local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value)); _local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y); _local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y); _local14[2].Set(_local12.upperBound.x, _local12.upperBound.y); _local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local2++; }; _local14[0].Set(_local20.x, _local20.y); _local14[1].Set(_local21.x, _local20.y); _local14[2].Set(_local21.x, _local21.y); _local14[3].Set(_local20.x, _local21.y); m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((_local1 & b2DebugDraw.e_obbBit)){ _local10.Set(0.5, 0.3, 0.5); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local4.m_type != b2Shape.e_polygonShape){ } else { _local23 = (_local4 as b2PolygonShape); _local24 = _local23.GetOBB(); _local25 = _local24.extents; _local14[0].Set(-(_local25.x), -(_local25.y)); _local14[1].Set(_local25.x, -(_local25.y)); _local14[2].Set(_local25.x, _local25.y); _local14[3].Set(-(_local25.x), _local25.y); _local2 = 0; while (_local2 < 4) { _local26 = _local24.R; _local27 = _local14[_local2]; _local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local26 = _local11.R; _local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local2++; }; m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawXForm(_local11); _local3 = _local3.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local2:b2JointEdge; var _local3:b2Shape; var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; _local2 = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; _local3 = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local5:b2Color; var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; _local5 = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Island; var _local4:b2Contact; var _local5:b2Joint; var _local6:int; var _local7:Array; var _local8:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; _local3 = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; _local4 = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; _local5 = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; _local6 = m_bodyCount; _local7 = new Array(_local6); _local8 = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; _local4 = new Array(_arg3); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Island; var _local9:int; var _local10:Array; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; _local8 = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); _local9 = m_bodyCount; _local10 = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function Validate():void{ m_broadPhase.Validate(); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local2:b2Joint; var _local3:b2Body; var _local4:b2Shape; _local2 = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local2:Boolean; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:b2Shape; _local2 = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; _local3 = _arg1.m_body1; _local4 = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ var _local2:b2Body; if (m_lock == true){ return (null); }; _local2 = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ var _local3:b2TimeStep; m_lock = true; _local3 = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 75
//AdLoader (CPMStar.AdLoader) package CPMStar { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public class AdLoader extends Sprite { private var contentspotid:String; private var cpmstarLoader:Loader; public function AdLoader(_arg1:String){ this.contentspotid = _arg1; addEventListener(Event.ADDED, addedHandler); } private function addedHandler(_arg1:Event):void{ var _local2:String; var _local3:DisplayObjectContainer; removeEventListener(Event.ADDED, addedHandler); Security.allowDomain("server.cpmstar.com"); _local2 = "http://server.cpmstar.com/adviewas3.swf"; _local3 = parent; cpmstarLoader = new Loader(); cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); cpmstarLoader.load(new URLRequest(((_local2 + "?contentspotid=") + contentspotid))); addChild(cpmstarLoader); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } } }//package CPMStar
Section 76
//sounds_17 (game_fla.sounds_17) package game_fla { import flash.display.*; public dynamic class sounds_17 extends MovieClip { public function sounds_17(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package game_fla
Section 77
//mMovieParticle (main.particles.mMovieParticle) package main.particles { import flash.display.*; public class mMovieParticle extends mParticle { public var obj; public var incScale:Number; public var rot; public function mMovieParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13:Number, _arg14:uint):void{ super(_arg1, _arg4, _arg5, _arg7, _arg8, _arg9, _arg10, _arg13, _arg14); incScale = _arg12; paintedType = 1; obj = _arg2; obj.width = (obj.width * _arg6); obj.height = (obj.height * _arg6); rot = _arg11; if (_arg3 > 0){ obj.gotoAndStop(_arg3); }; alpha = 1; addChild(obj); cacheAsBitmap = true; } } }//package main.particles
Section 78
//mParticle (main.particles.mParticle) package main.particles { import flash.display.*; public class mParticle extends MovieClip { public var parentClip:MovieClip; public var ay; public var ax; public var paintedType:Number;// = 0 public var color:uint; public var sy; public var timeLife:Number; public var sx; public var dy; public var nextParticle:mParticle; public var prevParticle; public function mParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number, _arg9:uint):void{ paintedType = 0; super(); x = _arg2; y = _arg3; sx = _arg4; sy = _arg5; ax = _arg6; ay = _arg7; dy = 0; color = _arg9; timeLife = _arg8; parentClip = _arg1; prevParticle = null; nextParticle = parentClip.particleList; if (parentClip.particleList){ parentClip.particleList.prevParticle = this; }; parentClip.particleList = this; parentClip.particleCount++; paintedType = 0; } public function destroy():void{ if (parentClip.particleCount > 0){ if (prevParticle){ prevParticle.nextParticle = nextParticle; }; if (nextParticle){ nextParticle.prevParticle = prevParticle; }; if (this == parentClip.particleList){ parentClip.particleList = nextParticle; }; parentClip.particleCount--; if (parentClip.particleCount == 0){ parentClip.particleList = null; }; parent.removeChild(this); } else { visible = false; }; } } }//package main.particles
Section 79
//mParticleEngine (main.particles.mParticleEngine) package main.particles { import main.*; import flash.display.*; import flash.events.*; import flash.geom.*; public class mParticleEngine extends MovieClip { public var particleCount:Number;// = 0 public var particleList:mParticle; public var paintSprite:Sprite; public function mParticleEngine(_arg1:MovieClip):void{ particleCount = 0; super(); paintSprite = new Sprite(); _arg1.addChild(paintSprite); } public function addTextParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _arg16:Number):void{ var _local17:*; _local17 = new mTextParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _arg16); addChild(_local17); } public function addMovieParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13:Number, _arg14:uint):void{ var _local15:*; _local15 = new mMovieParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14); addChild(_local15); } public function update(_arg1:Event):void{ var _local2:mParticle; paintSprite.graphics.clear(); _local2 = particleList; while (_local2) { _local2.x = (_local2.x + _local2.sx); _local2.y = (_local2.y + _local2.sy); _local2.sx = (_local2.sx + _local2.ax); _local2.sy = (_local2.sy + _local2.ay); if (_local2.paintedType == 1){ _local2.width = (_local2.width + mMovieParticle(_local2).incScale); _local2.height = (_local2.height + mMovieParticle(_local2).incScale); _local2.rotation = (_local2.rotation + mMovieParticle(_local2).rot); } else { if (_local2.paintedType == 2){ } else { paintSprite.graphics.lineStyle(2, _local2.color, (_local2.timeLife / 10)); paintSprite.graphics.moveTo(_local2.x, _local2.y); paintSprite.graphics.lineTo((_local2.x + _local2.sx), (_local2.y + _local2.sy)); }; }; _local2.timeLife = (_local2.timeLife - 1); if (_local2.timeLife < 0){ if (_local2.paintedType == 1){ mMovieParticle(_local2).alpha = (mMovieParticle(_local2).alpha - 0.09); if (mMovieParticle(_local2).alpha < 0.1){ _local2.destroy(); }; } else { if (_local2.paintedType == 2){ mTextParticle(_local2).alpha = (mTextParticle(_local2).alpha - 0.09); if (mTextParticle(_local2).alpha < 0.1){ mTextParticle(_local2).grad.mask = null; _local2.removeChild(mTextParticle(_local2).grad); _local2.removeChild(mTextParticle(_local2).obj); _local2.destroy(); }; } else { _local2.destroy(); }; }; }; _local2 = _local2.nextParticle; }; } public function addExp(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:uint):void{ var _local7:*; var _local8:*; _local7 = 0; while (_local7 < _arg3) { _local8 = new mParticle(this, _arg1, _arg2, ((Math.random() * _arg4) - (_arg4 / 2)), ((Math.random() * _arg4) - (_arg4 / 2)), 0, 1.5, _arg5, _arg6); addChild(_local8); _local7++; }; } } }//package main.particles
Section 80
//mTextParticle (main.particles.mTextParticle) package main.particles { import main.*; import flash.display.*; import flash.text.*; public class mTextParticle extends mParticle { public var obj; public var incScale:Number; public var grad; public var rot; public function mTextParticle(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11, _arg12, _arg13, _arg14, _arg15, _arg16:Number):void{ super(_arg1, _arg4, _arg5, _arg10, _arg11, _arg12, _arg13, _arg16, 0); incScale = _arg15; paintedType = 2; obj = new mText(_arg1, 0, 0, _arg6, _arg7, _arg3, _arg9, _arg8, 0, true, 0); obj.x = (width / 2); obj.autoSize = TextFieldAutoSize.LEFT; addChild(obj); grad = _arg2; grad.width = _arg6; grad.height = _arg7; grad.x = (width / 2); grad.y = 0; addChild(grad); grad.mask = obj; rot = _arg14; alpha = 1; } } }//package main.particles
Section 81
//game (main.game) package main { import flash.display.*; import flash.events.*; import Box2D.Common.Math.*; import mochi.as3.*; import main.particles.*; public dynamic class game extends MovieClip { public const SAVE_LEVEL_SCRIPT_URL:String = "http://how-i-make-games.in/overweb/savelevel.php"; public const VIEWER_SCRIPT_URL:String = "http://how-i-make-games.in/overweb/getlevels.php"; public const SAVE_PNG_SCRIPT_URL:String = "http://how-i-make-games.in/overweb/savepng.php"; public const CODE:String = "ASDZXC65LJUIW2POASD54AKJHS2IUOY"; public var preloader:mPreloader; static const sharedObjectName:String = "overweb"; static var unitList:mBaseUnit; static var currentUrl:String; static var whileLoad:mWhileLoad; static var gameStage; static var globalPause:Boolean = false; static var playerUnit:mPlayerUnit; static var interfaceEngine:mInterfaceEngine; static var flashMovie:MovieClip; static var levelEngine:mLevelEngine; static var awayPause:MovieClip; static var unitCount:Number; static var inputEngine:mInputEngine; static var rootMovie:MovieClip; static var soundEngine:mSoundEngine; static var physEngine:mPhysEngine; static var levelViewer:mLevelViewer; static var particleEngine:mParticleEngine; public function game():void{ var _local1:*; super(); addFrameScript(0, frame1, 2, frame3); MochiServices.connect("3205c84ac50d4698", root); rootMovie = new MovieClip(); addChild(rootMovie); currentUrl = root.loaderInfo.url; _local1 = new mLoadFon(); rootMovie.addChild(_local1); preloader = new mPreloader(rootMovie, utils.WIDTH, utils.HEIGHT, 600, !(utils.checkDomains("http://chat.kongregate.com"))); addEventListener(Event.ENTER_FRAME, preUpdate, false, 0, true); gameStage = stage; } public function clearAll():void{ removeEventListener(Event.ENTER_FRAME, game.update); if (playerUnit){ playerUnit.destroy(); }; unitList = null; unitCount = 0; if (soundEngine){ soundEngine.clearAll(); }; if (physEngine){ removeEventListener(Event.ENTER_FRAME, physEngine.update); }; if (levelEngine){ levelEngine.clearAll(); }; if (physEngine){ physEngine.clearAll(); }; if (interfaceEngine){ interfaceEngine.clearAll(); }; while (0 < rootMovie.numChildren) { rootMovie.removeChildAt(0); }; } public function flashLoaded():void{ var tempButtom:*; gotoAndStop(3); removeEventListener(Event.ENTER_FRAME, preUpdate); rootMovie.removeChild(preloader); contextMenu = utils.adjustContexMenu(); interfaceEngine = new mInterfaceEngine(); addEventListener(Event.ENTER_FRAME, interfaceEngine.update, false, 0, true); tempButtom = new mButton(rootMovie, "mButtonBack", 1, 1, (utils.WIDTH / 2), (utils.HEIGHT - 50), 160, 30, true, "Play", 16, function (){ clearAll(); utils.addMovie(rootMovie, "mOurSplash", 0, 0, false, "http://paegames.com", function (){ loadGame(); }); }); } public function deactivateHandler(_arg1:Event):void{ if (game.soundEngine){ game.soundEngine.pleaseStopAll(); }; awayPause.visible = true; } public function preUpdate(_arg1:Event):void{ if (preloader.loadingComplete){ flashLoaded(); }; } public function highScores():void{ var o:Object; var boardID:String; o = {n:[10, 6, 15, 5, 1, 11, 12, 10, 9, 14, 10, 2, 3, 9, 15, 6], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, "a6f51bca9ea239f6"); MochiScores.showLeaderboard({boardID:boardID}); } function frame3(){ MochiBot.track(this, "da158736"); } public function awayPauseClickHandler(_arg1:MouseEvent):void{ awayPause.visible = false; stage.focus = game.rootMovie; game.soundEngine.checkMusic(); } function frame1(){ stop(); } public function loadTitleMenu():void{ var tempButton:*; var tempMovie:*; levelEngine.addFon(); tempButton = new mButton(rootMovie, "mButtonBack", 1, 1, (utils.WIDTH / 2), ((utils.HEIGHT / 2) - 40), 160, 30, (levelEngine.levelsCompleted > 0), "continue", 23, function (){ clearAll(); levelEngine.loadLevelSelectScreen(); }); tempButton.buttonText.setFont("Love Letters"); tempButton.buttonText.setFontSize(24); tempButton = new mButton(rootMovie, "mButtonBack", 1, 1, (utils.WIDTH / 2), (utils.HEIGHT / 2), 170, 30, true, "new game", 23, function (){ clearAll(); levelEngine.clearProgress(); levelEngine.saveProgress(); levelEngine.loadLevelSelectScreen(); }); tempButton.buttonText.setFont("Love Letters"); tempButton.buttonText.setFontSize(24); tempButton = new mButton(rootMovie, "mButtonBack", 1, 1, (utils.WIDTH / 2), ((utils.HEIGHT / 2) + 40), 200, 30, true, "more games", 23, function (){ toSponsorSite(); }); tempButton.buttonText.setFont("Love Letters"); tempButton.buttonText.setFontSize(24); tempButton = new mButton(rootMovie, "mButtonBack", 1, 1, (utils.WIDTH / 2), ((utils.HEIGHT / 2) + 80), 180, 30, true, "high scores", 23, function (){ highScores(); }); tempButton.buttonText.setFont("Love Letters"); tempButton.buttonText.setFontSize(24); tempButton = new mButton(rootMovie, "mButtonBack", 1, 1, (utils.WIDTH / 2), ((utils.HEIGHT / 2) + 120), 180, 30, true, "credits", 23, function (){ credits(); }); tempButton.buttonText.setFont("Love Letters"); tempButton.buttonText.setFontSize(24); tempButton = new mButton(rootMovie, "mButtonBack", 2, 2, 60, (utils.HEIGHT - 20), 120, 30, true, "(c) plus", 23, function (){ toOurSite(); }); tempButton.buttonText.setFont("Love Letters"); tempButton.buttonText.setFontSize(24); tempMovie = new mTitleName(); tempMovie.x = 350; tempMovie.y = 75; game.rootMovie.addChild(tempMovie); if (game.soundEngine){ game.soundEngine.addButtons(); game.soundEngine.playSound("loadLevel"); game.soundEngine.playMusic("track1"); }; addFlash(); } public function credits():void{ var tempDialog:*; tempDialog = new mDialogWindow(game.rootMovie, "Visit this sites:", "Our Site", function (){ toOurSite(); }, "Box2D.org", function (){ toBox2D(); }, "cancel", function (){ }); } public function loadGame():void{ clearAll(); inputEngine = new mInputEngine(stage); physEngine = new mPhysEngine(rootMovie); levelEngine = new mLevelEngine(this, SAVE_LEVEL_SCRIPT_URL, SAVE_PNG_SCRIPT_URL, CODE); levelEngine.loadProgress(); levelViewer = new mLevelViewer(VIEWER_SCRIPT_URL, CODE, this, function (){ clearAll(); loadTitleMenu(); }); whileLoad = new mWhileLoad(this); physEngine.DebugPhysDraw(this); soundEngine = new mSoundEngine(utils.WIDTH, utils.HEIGHT); particleEngine = new mParticleEngine(this); awayPause = new mAwayPause(); awayPause.visible = false; addChild(awayPause); awayPause.addEventListener(MouseEvent.CLICK, awayPauseClickHandler); flashMovie = new mFlashMovie(); flashMovie.x = 0; flashMovie.y = 0; addChild(flashMovie); flashMovie.visible = false; addEventListener(Event.ENTER_FRAME, levelEngine.update, false, 0, true); addEventListener(Event.ENTER_FRAME, particleEngine.update, false, 0, true); addEventListener(Event.ENTER_FRAME, flashUpdate, false, 0, true); addEventListener(Event.DEACTIVATE, deactivateHandler); loadTitleMenu(); } public static function update(_arg1:Event):void{ var _local2:mBaseUnit; if (((!(globalPause)) && (!(awayPause.visible)))){ _local2 = unitList; while (_local2) { _local2.update(); _local2 = _local2.nextUnit; }; }; } static function toSponsorSite():void{ utils.goToUrl("http://paegames.com"); } public static function addFlash():void{ flashMovie.visible = true; flashMovie.alpha = 1; } public static function addPlayerUnit(_arg1, _arg2:Number):void{ game.playerUnit = new mPlayerUnit(game.levelEngine.fon, _arg1, _arg2, "mPlayer"); } public static function flashUpdate(_arg1:Event):void{ if (flashMovie){ if (flashMovie.visible){ flashMovie.alpha = (flashMovie.alpha - (0.2 / 2)); if (flashMovie.alpha < 0.1){ flashMovie.visible = false; }; }; }; } public static function addUnit(_arg1, _arg2:Number, _arg3:String):mUnit{ var _local4:*; _local4 = new mUnit(game.levelEngine.fon, _arg1, _arg2, _arg3); return (_local4); } public static function setPlayerXY(_arg1, _arg2:Number):void{ if (playerUnit){ playerUnit.setPosition(_arg1, _arg2); playerUnit.unitMovie.x = _arg1; playerUnit.unitMovie.y = _arg2; }; } public static function addRecycle(_arg1:Number, _arg2:Number):void{ var _local3:*; _local3 = new mRecycle(game.levelEngine.fon, _arg1, _arg2); } static function toOurSite():void{ utils.goToUrl("http://paegames.com"); } static function toBox2D():void{ utils.goToUrl("http://box2d.org"); } } }//package main
Section 82
//levels (main.levels) package main { public class levels { static var level40:XML = <level> <element par0="2">5</element> <element par0="587" par1="412" par2="21.095023109728988" par3="false" par4="mWheel" par5="2">3</element> <element par0="546" par1="413" par2="19" par3="false" par4="mWheel" par5="2">3</element> <element par0="504" par1="411" par2="20.09975124224178" par3="false" par4="mWheel" par5="2">3</element> <element par0="462" par1="410" par2="19.1049731745428" par3="false" par4="mWheel" par5="2">3</element> <element par0="421" par1="411" par2="20" par3="false" par4="mWheel" par5="2">3</element> <element par0="377" par1="412" par2="21.095023109728988" par3="false" par4="mWheel" par5="2">3</element> <element par0="331" par1="410" par2="21.37755832643195" par3="false" par4="mWheel" par5="2">3</element> <element par0="289" par1="410" par2="20.024984394500787" par3="false" par4="mWheel" par5="2">3</element> <element par0="247" par1="408" par2="21.095023109728988" par3="false" par4="mWheel" par5="2">3</element> <element par0="204" par1="408" par2="20.024984394500787" par3="false" par4="mWheel" par5="2">3</element> <element par0="160.5" par1="407.5" par2="100" par3="1">8</element> <element par0="203" par1="408" par2="50" par3="1">8</element> <element par0="247" par1="409" par2="100" par3="1">8</element> <element par0="290" par1="411" par2="100" par3="1">8</element> <element par0="332" par1="411" par2="100" par3="1">8</element> <element par0="377" par1="412" par2="100" par3="1">8</element> <element par0="423" par1="411" par2="100" par3="1">8</element> <element par0="462" par1="410" par2="100" par3="1">8</element> <element par0="504" par1="411" par2="100" par3="1">8</element> <element par0="547" par1="413" par2="100" par3="1">8</element> <element par0="588" par1="411" par2="100" par3="1">8</element> <element par0="162" par1="408" par2="20.024984394500787" par3="false" par4="mWheel" par5="2">3</element> <element par0="161" par1="408" par2="50" par3="1">8</element> <element par0="383" par1="124">0</element> <element par0="115.5" par1="238.5" par2="147.00340132119393" par3="10" par4="-90.38976119531807cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="196.5" par1="244" par2="157.01273833673497" par3="10" par4="-179.27015693597585cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="501" par1="153.5" par2="158.00316452527144" par3="10" par4="-179.64874097223935cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="480.5" par1="215" par2="118.00423721205946" par3="10" par4="-90.48554583000814cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="577.5" par1="274.5" par2="191.0026177831079" par3="10" par4="179.70002483769534cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="549" par1="215">4</element> </level> ; static var level41:XML = <level> <element par0="7">5</element> <element par0="545.5" par1="347.5" par2="159.00314462299164" par3="10" par4="-0.3603460633869158cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="248" par1="383">0</element> <element par0="443.5" par1="258.5" par2="177.00282483621552" par3="10" par4="0.32370152491965987cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="273" par1="259.5" par2="166.02710622064097" par3="10" par4="-1.0353531865448309cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="194.5" par1="348.5" par2="187.0240626229684" par3="10" par4="-0.9191047837141731cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="100.5" par1="268.5" par2="163.00306745579974" par3="10" par4="89.64849656012666cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="181.5" par1="182" par2="165.04847772699995" par3="10" par4="178.61128341044864cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="538.5" par1="180" par2="165.01212076693034" par3="10" par4="0.6944602875498287cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="621" par1="265" par2="164.01219466856725" par3="10" par4="90.69869438298348cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="268.5" par1="90" par2="177.01129907438113" par3="10" par4="179.35261761305838cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="441" par1="87.5" par2="176.02556632489498" par3="10" par4="179.02346196423832cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="352" par1="34">4</element> <element par0="171" par1="472.5" par2="128" par3="29" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="418" par1="474" par2="128" par3="30" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="542.5" par1="474.5" par2="127" par3="33" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="292.5" par1="473.5" par2="125" par3="31" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> </level> ; static var level43:XML = <level> <element par0="3">5</element> <element par0="541" par1="217" par2="132.015150645674" par3="10" par4="-90.86805144974555cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="477.5" par1="223.5" par2="141.00354605470034" par3="10" par4="-0.4063462333090632cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="471" par1="151">0</element> <element par0="359.5" par1="255" par2="121.26417442921878" par3="10" par4="-31.855132382449256cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="140" par1="278" par2="130.43005788544295" par3="10" par4="-35.63980919808667cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="142" par1="164" par2="115.39497389401325" par3="10" par4="25.67681568183821cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="114" par1="222">4</element> <element par0="191.5" par1="213.5" par2="131.00381673829202" par3="10" par4="-90.43736386752073cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="431" par1="281.5" par2="122.7721466783081" par3="10" par4="-113.01475441878998cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="300.5" par1="154.5" par2="124.16923934694937" par3="10" par4="-59.51105950016907cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="271.5" par1="263.5" par2="123.00406497347964" par3="10" par4="-90.465809082765cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="114" par1="462.5" par2="164" par3="35" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="274.5" par1="463" par2="163" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="431" par1="464.5" par2="156" par3="33" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="580.5" par1="464" par2="153" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> </level> ; static var level45:XML = <level> <element par0="5">5</element> <element par0="321" par1="356.5" par2="128.00390619039717" par3="10" par4="-179.5523858291394cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="322.5" par1="409" par2="98.00510190801293" par3="10" par4="-89.41536947929482cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="322" par1="295.5" par2="113" par3="10" par4="88.84848110603623cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="320.5" par1="239" par2="131.01526628603247" par3="10" par4="179.1253232288789cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="320" par1="191" par2="94.08506789071261" par3="10" par4="88.75671836114856cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="320.5" par1="143.5" par2="157.0286598045083" par3="10" par4="179.98397278198047cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="71.5" par1="195" par2="117" par3="24" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="74.5" par1="316.5" par2="109" par3="23" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="456" par1="193" par2="120" par3="24" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="456.5" par1="310" par2="119" par3="30" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="317.5" par1="479.5" par2="155.0290295396317" par3="10" par4="-178.89118787224035cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="165" par1="477" par2="154.0519392932137" par3="10" par4="-178.51213247117204cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="183" par1="469" par2="152.0526224699857" par3="10" par4="-178.49256424122515cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="466" par1="461.5" par2="154.0811474515945" par3="10" par4="179.23562288732404cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="331" par1="470.5" par2="154.00324671902212" par3="10" par4="-179.6279547127971cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="484" par1="470.5" par2="154.02921800749363" par3="10" par4="179.2377546363797cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="166" par1="460.5" par2="154.00324671902212" par3="10" par4="-179.6279547127971cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="317" par1="461.5" par2="154.02921800749363" par3="10" par4="-178.88398960859269cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="463.5" par1="480" par2="167.01197561851666" par3="10" par4="-179.4079825371395cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="140" par1="354">0</element> <element par0="457" par1="405">4</element> </level> ; static var level42:XML = <level> <element par0="90" par1="425" par2="84" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="131" par1="394" par2="66" par3="10" par4="90cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="171" par1="363" par2="92" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="221.5" par1="334" par2="68.00735254367721" par3="10" par4="90.84252426074042cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="269" par1="306" par2="104" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="316.5" par1="274" par2="72.00694410957877" par3="10" par4="90.79572355273928cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="360" par1="240.5" par2="94.04786015641186" par3="10" par4="178.17203175569483cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="403" par1="206" par2="72" par3="10" par4="90cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="442.5" par1="173.5" par2="87.00574693662483" par3="10" par4="179.34145682243587cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="480" par1="142" par2="68" par3="10" par4="90cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="547.5" par1="112.5" par2="141.00354605470034" par3="10" par4="-179.59365376669092cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="306" par1="363">4</element> <element par0="249" par1="425" par2="244.00819658363937" par3="10" par4="-179.53037298031072cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="91" par1="135">0</element> <element par0="631" par1="414" par2="76.02631123499285" par3="10" par4="-178.49256424122515cel" par5="true" par6="mBalka" par7="8">1</element> </level> ; static var level44:XML = <level> <element par0="7">5</element> <element par0="8">5</element> <element par0="153" par1="173" par2="160.0124995117569" par3="10" par4="-179.2838400545299cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="227.5" par1="236.5" par2="117.00427342623003" par3="10" par4="-89.51030440687079cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="77" par1="233.5" par2="131.01526628603247" par3="10" par4="-89.12532322887868cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="143" par1="232">4</element> <element par0="345" par1="445.5" par2="154" par3="33" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="500" par1="446" par2="160" par3="30" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="518" par1="257">0</element> <element par0="417" par1="363.5" par2="138" par3="27" par4="-91.49133995354248cel" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="332" par1="374" par2="32.38826948140329" par3="false" par4="mWheel" par5="3">3</element> </level> ; static var level46:XML = <level> <element par0="7">5</element> <element par0="2">5</element> <element par0="120" par1="85.5" par2="106.00471687618433" par3="10" par4="-179.45948981286983cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="267" par1="84" par2="134" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="267.5" par1="204.5" par2="107.00467279516349" par3="10" par4="-90.53545898556453cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="168" par1="153.5" par2="129.0155029444136" par3="10" par4="-90.88823549523977cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="169.5" par1="284" par2="134.03357788255897" par3="10" par4="-91.28252708271016cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="345" par1="351.5" par2="144.00347218036097" par3="10" par4="179.6021190381659cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="138" par1="48">0</element> <element par0="478" par1="351.5" par2="134.00373129133382" par3="10" par4="-179.57242749316686cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="590" par1="349" par2="106.01886624558857" par3="10" par4="177.81043626347707cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="267.5" par1="14" par2="44.01136216933077" par3="10" par4="88.69804732742112cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="537" par1="170.5" par2="148.00337833982033" par3="10" par4="-179.61287224584976cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="545" par1="116">4</element> </level> ; static var level48:XML = <level> <element par0="6">5</element> <element par0="163.5" par1="248" par2="124.00403219250575" par3="10" par4="-90.46205272143078cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="267" par1="307.5" par2="206.0218435020908" par3="10" par4="-179.35168671639696cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="237" par1="175">0</element> <element par0="43" par1="312">0</element> <element par0="314" par1="181">0</element> <element par0="267" par1="187">0</element> <element par0="106.5" par1="309.5" par2="117.03845521878696" par3="10" par4="-1.4688007143859239cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="93" par1="234">4</element> <element par0="300" par1="330.5" par2="150" par3="35" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="222" par1="331" par2="148" par3="38" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="81.5" par1="331" par2="147" par3="34" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="163.5" par1="134" par2="110.00454536063498" par3="10" par4="90.52085637450196cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="556" par1="156" par2="9.055385138137417" par3="true" par4="mWheel" par5="6">3</element> <element par0="439" par1="155" par2="9.219544457292887" par3="true" par4="mWheel" par5="6">3</element> <element par0="77" par1="86" par2="11.180339887498949" par3="true" par4="mWheel" par5="6">3</element> </level> ; static var level49:XML = <level> <element par0="8">5</element> <element par0="546" par1="158">4</element> <element par0="546" par1="93" par2="148.0135128966271" par3="10" par4="-179.22577983507188cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="187" par1="393.5" par2="183" par3="10" par4="-10.388857815469613cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="359.5" par1="397" par2="182.98907071188705" par3="10" par4="-168.01458588092024cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="114.5" par1="263.5" par2="90.52071586106685" par3="10" par4="-106.03233935393598cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="365" par1="259" par2="15" par3="true" par4="mWheel" par5="7">3</element> <element par0="208" par1="291">0</element> <element par0="362" par1="224" par2="14.317821063276353" par3="true" par4="mWheel" par5="1">3</element> <element par0="360" par1="193" par2="12.041594578792296" par3="true" par4="mWheel" par5="2">3</element> <element par0="355" par1="159" par2="11.704699910719626" par3="true" par4="mWheel" par5="3">3</element> </level> ; static var level47:XML = <level> <element par0="135" par1="155" par2="7.211102550927978" par3="true" par4="mWheel" par5="1">3</element> <element par0="260" par1="157" par2="8.54400374531753" par3="true" par4="mWheel" par5="1">3</element> <element par0="405" par1="230" par2="6" par3="true" par4="mWheel" par5="1">3</element> <element par0="282" par1="303" par2="6.082762530298219" par3="true" par4="mWheel" par5="1">3</element> <element par0="167" par1="334" par2="7.280109889280518" par3="true" par4="mWheel" par5="1">3</element> <element par0="389" par1="340" par2="8.06225774829855" par3="true" par4="mWheel" par5="1">3</element> <element par0="539" par1="279" par2="7.0710678118654755" par3="true" par4="mWheel" par5="1">3</element> <element par0="547" par1="139" par2="6.082762530298219" par3="true" par4="mWheel" par5="1">3</element> <element par0="412" par1="69" par2="7.211102550927978" par3="true" par4="mWheel" par5="1">3</element> <element par0="512" par1="439" par2="6.708203932499369" par3="true" par4="mWheel" par5="1">3</element> <element par0="131" par1="404" par2="9.055385138137417" par3="true" par4="mWheel" par5="1">3</element> <element par0="586" par1="442.5" par2="80.00624975587844" par3="10" par4="-179.2838400545299cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="580" par1="387">0</element> <element par0="97" par1="55">4</element> </level> ; static var level50:XML = <level> <element par0="281" par1="104.5" par2="130.64838307457157" par3="10" par4="-61.66954191445994cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="227.5" par1="210" par2="117.63077828527702" par3="10" par4="-64.30630034060039cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="175.5" par1="316.5" par2="124.77980605851253" par3="10" par4="-62.818888914522795cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="241" par1="41">0</element> <element par0="11" par1="480" par2="6.708203932499369" par3="true" par4="mWheel" par5="1">3</element> <element par0="144" par1="482" par2="6.082762530298219" par3="true" par4="mWheel" par5="1">3</element> <element par0="289" par1="449" par2="9.486832980505138" par3="true" par4="mWheel" par5="1">3</element> <element par0="451" par1="452" par2="8.246211251235321" par3="true" par4="mWheel" par5="1">3</element> <element par0="163" par1="377" par2="37.57658845611187" par3="10" par4="-154.79887635452494cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="203" par1="331.5" par2="120.7683733433551" par3="10" par4="117.62596286734221cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="256" par1="229.5" par2="119" par3="10" par4="118.07248693585296cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="312.5" par1="123.5" par2="132.09844813622905" par3="10" par4="119.47588900324575cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="327" par1="58.5" par2="42.485291572496" par3="10" par4="-153.43494882292202cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="188.5" par1="326" par2="122.3315167894194" par3="10" par4="129.45214219688586" par5="true" par6="mBalka" par7="1">1</element> <element par0="188" par1="326" par2="122.78436382536663" par3="10" par4="-77.77487732426425cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="239.5" par1="224" par2="115.31261856362468" par3="10" par4="133.2430116900918cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="238.5" par1="223.5" par2="117.27744881263405" par3="10" par4="101.30993247402021cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="296.5" par1="119" par2="135.10366390294527" par3="10" par4="133.50045296202236cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="294.5" par1="117" par2="130.8166656049603" par3="10" par4="-78.08878456802842cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="592.5" par1="343" par2="163" par3="46" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="317" par1="246.5" par2="123.06502346320826" par3="10" par4="-151.3523835431911cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="396.5" par1="216" par2="132.00378782444085" par3="10" par4="118.50653756799237cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="347" par1="184">4</element> <element par0="567" par1="114" par2="13.038404810405298" par3="false" par4="mWheel" par5="1">3</element> <element par0="565" par1="114.5" par2="10" par3="-1">9</element> </level> ; static var level1:XML = <level> <element par0="134" par1="424" par2="192.01041638411183" par3="10" par4="-179.40319054877077cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="324" par1="425.5" par2="188.0026595556563" par3="10" par4="-179.69523808957825cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="508" par1="428" par2="180.0444389588304" par3="10" par4="-178.726969979943cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="607.5" par1="372.5" par2="127.09838708654017" par3="10" par4="92.25457496593505cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="532" par1="314" par2="142.01408380861386" par3="10" par4="0.8069294551026784cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="544" par1="372">4</element> <element par0="102" par1="351">0</element> </level> ; static var level2:XML = <level> <element par0="157.5" par1="448" par2="197" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="499" par1="444" par2="194.0103090044444" par3="10" par4="179.40934278535372cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="502" par1="219" par2="587" par3="140">7</element> <element par0="490" par1="188" par2="50.44799302251776" par3="false" par4="mWheel" par5="6">3</element> <element par0="492" par1="188" par2="602" par3="110">7</element> <element par0="113" par1="391">4</element> <element par0="548" par1="378">0</element> </level> ; static var level3:XML = <level> <element par0="137.5" par1="428" par2="177.01129907438113" par3="10" par4="-179.35261761305838cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="322" par1="429" par2="192" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="532.5" par1="429.5" par2="229.00218339570478" par3="10" par4="-179.74980167980118cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="647.5" par1="389" par2="82.00609733428362" par3="10" par4="90.69869438298348cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="533.5" par1="348.5" par2="229.00218339570478" par3="10" par4="-0.25019832019882116cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="419" par1="387.5" par2="77" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="480" par1="387" par2="144.80331487918363" par3="10" par4="147.40741852740078cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="592" par1="387.5" par2="135" par3="10" par4="-143.13010235415598cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="592" par1="388" par2="143.69411957348845" par3="10" par4="-34.79602627826831cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="476.5" par1="390.5" par2="136.74063039199433" par3="10" par4="34.271140701989964cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="587" par1="290">4</element> <element par0="646.5" par1="288" par2="106.00471687618433" par3="10" par4="89.45948981286934cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="533.5" par1="236" par2="225.00888871331284" par3="10" par4="-0.5092824049777226cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="426" par1="282" par2="98.02040603874276" par3="10" par4="-88.8308606720926cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="428" par1="239" par2="0" par3="0">6</element> <element par0="112" par1="352">0</element> <element par0="325" par1="451" par2="186" par3="38" par4="0" par5="false" par6="mWidthBalka" par7="3">2</element> <element par0="530.5" par1="451" par2="229" par3="38" par4="0" par5="false" par6="mWidthBalka" par7="3">2</element> <element par0="142" par1="450.5" par2="176" par3="39" par4="0" par5="false" par6="mWidthBalka" par7="3">2</element> <element par0="141" par1="477" par2="174.01149387324966" par3="10" par4="179.34145682243587cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="323" par1="476" par2="186.01075237738274" par3="10" par4="179.38394009160072cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="531" par1="475" par2="230" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level4:XML = <level> <element par0="90" par1="234">0</element> <element par0="535" par1="319">4</element> <element par0="137" par1="275">0</element> <element par0="129" par1="287">0</element> <element par0="130" par1="318">0</element> <element par0="515.5" par1="373" par2="153.0130713370593" par3="10" par4="0.7489217828238856cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="347.5" par1="370" par2="183.04371062672436" par3="10" par4="1.252167375204091cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="177" par1="368.5" par2="164.02743672934722" par3="10" par4="1.047976646006723cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="134" par1="315">0</element> <element par0="138" par1="318">0</element> <element par0="353" par1="122.5" par2="170" par3="37" par4="0cel" par5="false" par6="mWidthBalka" par7="1">2</element> <element par0="353" par1="83" par2="170" par3="40" par4="0cel" par5="false" par6="mWidthBalka" par7="1">2</element> <element par0="514.5" par1="262" par2="145" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="183.5" par1="264" par2="155.05160431288675" par3="10" par4="1.4782726566890583cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="347" par1="42.5" par2="164" par3="39" par4="0cel" par5="false" par6="mWidthBalka" par7="1">2</element> </level> ; static var level5:XML = <level> <element par0="7">5</element> <element par0="561.5" par1="369.5" par2="141.00354605470034" par3="10" par4="179.59365376669092cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="561" par1="377" par2="140.0142849854971" par3="10" par4="-179.181544538311cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="280" par1="450" par2="150" par3="36" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="431" par1="451" par2="150" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="131" par1="450" par2="150" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="119" par1="376">0</element> <element par0="496.5" par1="408.5" par2="57.0087712549569" par3="10" par4="88.99491399474583cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="568" par1="458" par2="120.06664815842908" par3="10" par4="178.09084756700364cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="626" par1="418.5" par2="73" par3="10" par4="90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="564.5" par1="421" par2="133.98880550254935" par3="10" par4="147.49601104443752cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="532" par1="398" par2="75.17978451685" par3="10" par4="28.610459665965223cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="598.5" par1="438" par2="71.28113354878694" par3="10" par4="-145.86405992208773cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="129.5" par1="327" par2="139" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="128" par1="274">4</element> </level> ; static var level6:XML = <level> <element par0="238" par1="164" par2="10" par3="true" par4="mWheel" par5="1">3</element> <element par0="61" par1="163" par2="8.246211251235321" par3="true" par4="mWheel" par5="1">3</element> <element par0="119" par1="286" par2="10.04987562112089" par3="true" par4="mWheel" par5="1">3</element> <element par0="231" par1="285" par2="10.63014581273465" par3="true" par4="mWheel" par5="1">3</element> <element par0="121" par1="395" par2="8.246211251235321" par3="true" par4="mWheel" par5="1">3</element> <element par0="236" par1="393" par2="10.04987562112089" par3="true" par4="mWheel" par5="1">3</element> <element par0="353" par1="393" par2="10" par3="true" par4="mWheel" par5="1">3</element> <element par0="484" par1="392" par2="10.63014581273465" par3="true" par4="mWheel" par5="1">3</element> <element par0="601" par1="388" par2="12.041594578792296" par3="true" par4="mWheel" par5="1">3</element> <element par0="484" par1="291" par2="9.486832980505138" par3="true" par4="mWheel" par5="1">3</element> <element par0="597" par1="286" par2="9.433981132056603" par3="true" par4="mWheel" par5="1">3</element> <element par0="483" par1="177" par2="11.704699910719626" par3="true" par4="mWheel" par5="1">3</element> <element par0="600" par1="179" par2="12.727922061357855" par3="true" par4="mWheel" par5="1">3</element> <element par0="540" par1="236">4</element> <element par0="123" par1="164" par2="10.04987562112089" par3="true" par4="mWheel" par5="1">3</element> <element par0="96.5" par1="149" par2="87.02298546935747" par3="10" par4="178.68308759420654cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="92" par1="74">0</element> <element par0="238" par1="42" par2="10.770329614269007" par3="true" par4="mWheel" par5="1">3</element> <element par0="238.5" par1="104" par2="98.00510190801293" par3="10" par4="-89.41536947929482cel" par5="true" par6="mBalka" par7="3">1</element> </level> ; static var level7:XML = <level> <element par0="529" par1="352">4</element> <element par0="122" par1="356">0</element> <element par0="300" par1="238" par2="0" par3="0">6</element> <element par0="173" par1="416.5" par2="184" par3="31" par4="0cel" par5="true" par6="mWidthBalka" par7="5">2</element> <element par0="343.5" par1="417" par2="161" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="5">2</element> <element par0="501.5" par1="417.5" par2="157" par3="35" par4="0cel" par5="true" par6="mWidthBalka" par7="5">2</element> <element par0="476" par1="295" par2="0" par3="0">6</element> <element par0="85.5" par1="480" par2="94.00531899844816" par3="10" par4="-89.39049342332481cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="177" par1="479" par2="193.29769786523585" par3="10" par4="151.57879077547312cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="257.5" par1="483.5" par2="97.0051545022222" par3="10" par4="-89.40934278535333cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="167" par1="479" par2="196.22436138257655" par3="10" par4="29.96218409641775cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="426" par1="485.5" par2="105" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="575.5" par1="485" par2="102.00490184299969" par3="10" par4="-90.56170533256655cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="501" par1="482" par2="186.98663053812163" par3="10" par4="32.33018573505034cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="502.5" par1="481.5" par2="178.01685313475238" par3="10" par4="149.25703535965005cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="468" par1="257" par2="0" par3="0">6</element> <element par0="300" par1="204" par2="0" par3="0">6</element> <element par0="471" par1="233" par2="0" par3="0">6</element> <element par0="289" par1="192" par2="0" par3="0">6</element> <element par0="303" par1="211.5" par2="361.4484748895754" par3="10" par4="-168.91930101556076cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="473.5" par1="299" par2="116.00431026474836" par3="10" par4="-89.50608310138125cel" par5="false" par6="mBalka" par7="3">1</element> <element par0="471" par1="207" par2="0" par3="0">6</element> <element par0="294" par1="170" par2="0" par3="0">6</element> <element par0="474" par1="245" par2="0" par3="0">6</element> <element par0="301" par1="212" par2="0" par3="0">6</element> <element par0="564" par1="294.5" par2="168.00297616411441" par3="10" par4="-179.6589577211422cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="371.5" par1="292.5" par2="191.06543381784158" par3="10" par4="1.4995470379777116cel" par5="true" par6="mBalka" par7="5">1</element> </level> ; static var level8:XML = <level> <element par0="71" par1="401" par2="26.92582403567252" par3="false" par4="mWheel" par5="1">3</element> <element par0="241" par1="400" par2="26" par3="false" par4="mWheel" par5="2">3</element> <element par0="155.5" par1="401" par2="189.01058171435798" par3="10" par4="179.39371808448277cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="71" par1="402" par2="25" par3="1">8</element> <element par0="243" par1="399" par2="25" par3="1">8</element> <element par0="256.5" par1="451.5" par2="179" par3="47" par4="0cel" par5="true" par6="mWidthBalka" par7="1">2</element> <element par0="86.5" par1="451" par2="167" par3="46" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="152" par1="358">0</element> <element par0="108.5" par1="356" par2="96.00520819205592" par3="10" par4="89.40319054877082cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="152.5" par1="312" par2="95.02105029939419" par3="10" par4="178.79395122078003cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="194.5" par1="354.5" par2="93.04837451562494" par3="10" par4="-91.8476102659946cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="196" par1="398" par2="0" par3="0">6</element> <element par0="109" par1="401" par2="0" par3="0">6</element> <element par0="109" par1="314" par2="0" par3="0">6</element> <element par0="194" par1="313" par2="0" par3="0">6</element> <element par0="611" par1="375">4</element> <element par0="108" par1="357" par2="147" par3="400">7</element> <element par0="7">5</element> <element par0="2">5</element> <element par0="3">5</element> <element par0="591" par1="449.5" par2="144" par3="45" par4="0cel" par5="true" par6="mWidthBalka" par7="1">2</element> <element par0="588.5" par1="255" par2="133" par3="52" par4="0cel" par5="true" par6="mWidthBalka" par7="1">2</element> <element par0="735" par1="254" par2="142" par3="46" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> </level> ; static var level9:XML = <level> <element par0="187" par1="224.5" par2="170.02646852769718" par3="10" par4="-178.98900294766992cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="108.5" par1="249.5" par2="43.01162633521314" par3="10" par4="-88.66778014613037cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="192" par1="247.5" par2="156" par3="39" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="488.5" par1="248" par2="177" par3="46" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="396.5" par1="246.5" par2="45.0111097397076" par3="10" par4="88.72696997994328cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="484.5" par1="223.5" par2="187.0240626229684" par3="10" par4="179.08089521628585cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="163" par1="338">4</element> <element par0="187" par1="394" par2="154" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="107" par1="333.5" par2="129.0155029444136" par3="10" par4="-89.11176450476022cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="143" par1="164">0</element> <element par0="4">5</element> </level> ; static var level10:XML = <level> <element par0="476" par1="357">0</element> <element par0="330" par1="327">0</element> <element par0="261" par1="253">0</element> <element par0="249" par1="277">0</element> <element par0="326" par1="128">0</element> <element par0="6">5</element> <element par0="4">5</element> <element par0="272" par1="373" par2="168" par3="38" par4="-3.7787741215215007cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="140" par1="311">4</element> <element par0="164.5" par1="234.5" par2="161" par3="41" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="538" par1="164" par2="455" par3="59">7</element> <element par0="414" par1="190" par2="64.19501538281614" par3="false" par4="mWheel" par5="1">3</element> <element par0="130" par1="164">0</element> <element par0="440" par1="358.5" par2="172" par3="39" par4="-5.606431707074225cel" par5="true" par6="mWidthBalka" par7="2">2</element> </level> ; static var level11:XML = <level> <element par0="352" par1="186">4</element> <element par0="357" par1="130" par2="150" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="288" par1="184" par2="116.01724009818541" par3="10" par4="-90.98776039963982cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="426.5" par1="183" par2="112.0044641967453" par3="10" par4="-89.48844413341297cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="315.5" par1="476" par2="109.01834707974616" par3="10" par4="-178.94881925045644cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="405" par1="479" par2="100" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="258.5" par1="390" par2="69" par3="10" par4="0.37737129302813344" par5="true" par6="mBalka" par7="1">1</element> <element par0="360" par1="384">0</element> <element par0="289" par1="405.5" par2="39" par3="10" par4="90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="423" par1="407.5" par2="43.04648650006177" par3="10" par4="-87.33699923393286cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="451.5" par1="389.5" par2="63.00793600809346" par3="10" par4="-179.09061955080068cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="290" par1="350" par2="60" par3="10" par4="90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="425.5" par1="351" par2="56.00892785976178" par3="10" par4="91.02303018866783cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="289.5" par1="282.5" par2="63.00793600809346" par3="10" par4="89.09061955080087cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="427.5" par1="281" par2="70.00714249274856" par3="10" par4="-90.81845546168861cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level12:XML = <level> <element par0="5">5</element> <element par0="201" par1="398.5" par2="210.1927686672403" par3="10" par4="-179.91187345008686" par5="true" par6="mBalka" par7="5">1</element> <element par0="142" par1="327">0</element> <element par0="556" par1="329">4</element> <element par0="356.5" par1="397" par2="103.1746092796091" par3="10" par4="176.66614933846344cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="382.5" par1="378" par2="66.37017402418047" par3="10" par4="-149.18429424827082cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="330.5" par1="379.5" par2="66.52818951391959" par3="10" par4="137.43664824681014cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="352" par1="247" par2="100" par3="1">8</element> <element par0="353" par1="250" par2="40" par3="-1">9</element> <element par0="543" par1="275.5" par2="136.03308421115798" par3="10" par4="178.7363274483417cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="348" par1="243" par2="20" par3="-1">9</element> <element par0="350" par1="244" par2="20" par3="-1">9</element> <element par0="413" par1="396" par2="16.278820596099706" par3="true" par4="mWheel" par5="1">3</element> <element par0="473" par1="277" par2="17.029386365926403" par3="true" par4="mWheel" par5="1">3</element> <element par0="609" par1="384" par2="15" par3="true" par4="mWheel" par5="1">3</element> <element par0="200" par1="276" par2="202" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="198.5" par1="233.5" par2="219.02054698132775" par3="10" par4="23.40468955103232cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="100.5" par1="233.5" par2="89.00561780022652" par3="10" par4="-90.64374571417538cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="150" par1="255.5" par2="105.47511554864494" par3="10" par4="158.29946326068253cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="198" par1="254.5" par2="41" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="146" par1="231.5" par2="96.00520819205592" par3="10" par4="0.5968094512292472cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="171" par1="130" par2="70.02856560004639" par3="false" par4="mWheel" par5="5">3</element> </level> ; static var level13:XML = <level> <element par0="343" par1="135">0</element> <element par0="398" par1="348">0</element> <element par0="333" par1="95">0</element> <element par0="495" par1="264" par2="111.60645142642964" par3="10" par4="-143.74616226255523cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="595.5" par1="292" par2="117.01709276853532" par3="10" par4="179.0206803456604cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="243.5" par1="258" par2="119" par3="10" par4="-28.07248693585296cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="135" par1="287.5" par2="118.00423721205946" par3="10" par4="-0.4855458300081015cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="371" par1="200" par2="168.1071087134628" par3="10" par4="-178.06652585981445cel" par5="false" par6="mBalka" par7="2">1</element> <element par0="482.5" par1="370.5" par2="91.96738552334735" par3="10" par4="-46.76239102366051cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="279.5" par1="370" par2="92.63368717696602" par3="10" par4="45.43736386752074cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="379" par1="345">4</element> </level> ; static var level14:XML = <level> <element par0="474" par1="108" par2="186.01075237738274" par3="10" par4="-179.38394009160072cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="485" par1="174">4</element> <element par0="476.5" par1="278.5" par2="179.00279327429502" par3="10" par4="179.67991517621877cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="145" par1="173">0</element> <element par0="352.5" par1="321" par2="116.69190203266035" par3="10" par4="-46.04162667600998cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="314.5" par1="78" par2="155.07740002979156" par3="10" par4="22.761967284435485cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="148.5" par1="238.5" par2="93.13431161500041" par3="10" par4="1.221658515067368" par5="true" par6="mBalka" par7="1">1</element> <element par0="107.5" par1="135.5" par2="169.14490828872147" par3="10" par4="-2.371842189789093cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="21.5" par1="214.5" par2="161.00310556011024" par3="10" par4="-89.64413016937812cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="195" par1="50" par2="102.07840124139877" par3="10" par4="-2.2457425658952164cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="262.5" par1="361" par2="111.01801655587259" par3="10" par4="-1.0322446915657486cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="190.5" par1="185.5" par2="113.03981599418853" par3="10" par4="-88.47923033885623cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level15:XML = <level> <element par0="150" par1="315">0</element> <element par0="176.5" par1="390.5" par2="161.00310556011024" par3="10" par4="-179.64413016937766cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="326" par1="390.5" par2="144.00347218036097" par3="10" par4="179.6021190381659cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="443" par1="169">4</element> <element par0="1">5</element> <element par0="443.5" par1="238" par2="133.01503674397117" par3="10" par4="-179.13847426543276cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level16:XML = <level> <element par0="8">5</element> <element par0="127" par1="110.5" par2="136" par3="21" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="128" par1="18">0</element> <element par0="495" par1="364">4</element> <element par0="570.5" par1="361.5" par2="151" par3="31" par4="-88.69543980131866cel" par5="true" par6="mWidthBalka" par7="1">2</element> </level> ; static var level17:XML = <level> <element par0="244" par1="299">4</element> <element par0="272" par1="30">0</element> <element par0="181" par1="106" par2="140.0142849854971" par3="10" par4="-179.181544538311cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="314" par1="105.5" par2="132.00378782444085" par3="10" par4="179.56594936786078cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="444.5" par1="104.5" par2="139.00359707575916" par3="10" par4="179.58780725859785cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="129.5" par1="10" par2="35" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="490.5" par1="10.5" par2="29.017236257093817" par3="10" par4="-178.02506598911802cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="181" par1="217" par2="148" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="302.5" par1="248" par2="122.3315167894194" par3="10" par4="-147.34919770340446cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="205.5" par1="354" par2="113.01769772916099" par3="10" par4="-149.1231869209396cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="309" par1="382.5" par2="112.0044641967453" par3="10" par4="179.48844413341277cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level18:XML = <level><element par0="155" par1="351.5" par2="156" par3="25" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="306" par1="351" par2="154" par3="24" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="451.5" par1="351" par2="153" par3="26" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="583.5" par1="351.5" par2="153" par3="27" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="370" par1="272" par2="65" par3="false" par4="mWheel" par5="2">3</element> <element par0="595" par1="262">4</element> <element par0="133" par1="238">0</element> <element par0="63" par1="280.5" par2="168" par3="33" par4="-88.97784270490678cel" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="675" par1="283" par2="168" par3="34" par4="-90.06465573277343cel" par5="true" par6="mWidthBalka" par7="3">2</element> </level> ; static var level19:XML = <level> <element par0="326" par1="336">0</element> <element par0="540" par1="91">4</element> <element par0="315" par1="431" par2="168.01190434013895" par3="10" par4="-179.31793960682705cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="36.5" par1="207.5" par2="51.0098029794274" par3="10" par4="-178.87669728592434cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="648" par1="309" par2="48" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level20:XML = <level> <element par0="1">5</element> <element par0="2">5</element> <element par0="183.5" par1="198" par2="112.30761327710601" par3="10" par4="114.73950886974814cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="270.5" par1="151.5" par2="135.00370365289984" par3="10" par4="179.57559458063804cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="245" par1="190">0</element> <element par0="341" par1="288" par2="343" par3="152">7</element> <element par0="443" par1="288" par2="434" par3="149">7</element> <element par0="205" par1="252.5" par2="152.00328943809077" par3="10" par4="-179.62305952040373cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="218.5" par1="261" par2="147.0136048126159" par3="10" par4="-179.2205136788813cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="207" par1="270" par2="134.01492454200763" par3="10" par4="-179.14490260373321cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="218" par1="279" par2="140" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="512" par1="155" par2="10" par3="true" par4="mWheel" par5="1">3</element> <element par0="446" par1="290" par2="168" par3="10" par4="-180cel" par5="false" par6="mBalka" par7="5">1</element> <element par0="387" par1="152" par2="376" par3="289">7</element> <element par0="509" par1="153" par2="514" par3="288">7</element> <element par0="379" par1="157" par2="376" par3="290">7</element> <element par0="330" par1="151" par2="371" par3="288">7</element> <element par0="332" par1="150" par2="374" par3="290">7</element> <element par0="359" par1="156" par2="371" par3="291">7</element> <element par0="369" par1="157" par2="9.219544457292887" par3="true" par4="mWheel" par5="1">3</element> <element par0="368" par1="157" par2="371" par3="286">7</element> <element par0="120" par1="388">4</element> <element par0="460" par1="313" par2="8" par3="true" par4="mWheel" par5="1">3</element> <element par0="613" par1="311" par2="8.246211251235321" par3="true" par4="mWheel" par5="1">3</element> <element par0="534" par1="426" par2="186.01075237738274" par3="10" par4="179.38394009160072cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="460" par1="315" par2="452" par3="427">7</element> <element par0="611" par1="313" par2="621" par3="425">7</element> <element par0="53.5" par1="395" par2="126.00396819148197" par3="10" par4="-89.54528113830686cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="125.5" par1="453" par2="151.0132444522665" par3="10" par4="179.2411598757318cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level21:XML = <level> <element par0="562" par1="70">0</element> <element par0="603" par1="103" par2="120" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="603.5" par1="227.5" par2="129.00387591076478" par3="10" par4="-90.44414443311192cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="604.5" par1="325.5" par2="117.00427342623003" par3="10" par4="-89.51030440687079cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="513.5" par1="106.5" par2="117.00427342623003" par3="10" par4="-90.48969559312923cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="514.5" par1="225.5" par2="121.00413216084813" par3="10" par4="-90.47350805873494cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="514" par1="320.5" par2="117" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="636.5" par1="461" par2="69" par3="26" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="471" par1="460.5" par2="94" par3="21" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="453" par1="103">4</element> <element par0="452" par1="166.5" par2="124.00403219250575" par3="10" par4="-0.4620527214309559cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="81" par1="316" par2="11" par3="true" par4="mWheel" par5="5">3</element> <element par0="322" par1="241" par2="11.180339887498949" par3="true" par4="mWheel" par5="5">3</element> <element par0="136" par1="145" par2="12" par3="true" par4="mWheel" par5="5">3</element> </level> ; static var level22:XML = <level> <element par0="151.5" par1="428" par2="121" par3="26" par4="0" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="350.5" par1="426.5" par2="119" par3="23" par4="0" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="270" par1="427" par2="118" par3="24" par4="0" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="69.5" par1="196.5" par2="109" par3="21" par4="0" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="208" par1="346">0</element> <element par0="66" par1="137">4</element> </level> ; static var level23:XML = <level> <element par0="192" par1="417.5" par2="180.00277775634464" par3="10" par4="-179.68169338854798cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="504" par1="418" par2="176" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="354" par1="285.5" par2="119.01680553602503" par3="10" par4="89.03713637436378cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="186.5" par1="214" par2="137.01459776242822" par3="10" par4="0.8363753254223321cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="225" par1="102" par2="138.05795884337854" par3="10" par4="178.33971763101707cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="468.5" par1="101.5" par2="145.03103116229988" par3="10" par4="-178.81473918137775cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="340" par1="52">4</element> <element par0="161" par1="348">0</element> <element par0="83" par1="205" par2="75.31268153505093" par3="10" par4="10.713123022791063cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level24:XML = <level> <element par0="2">5</element> <element par0="218" par1="299">0</element> <element par0="210.5" par1="395" par2="103" par3="30" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="263.5" par1="245" par2="105" par3="30" par4="0cel" par5="true" par6="mWidthBalka" par7="1">2</element> <element par0="161" par1="246" par2="104" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="1">2</element> <element par0="308" par1="118.5" par2="104" par3="31" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="208.5" par1="118.5" par2="105" par3="33" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="105.5" par1="118" par2="107" par3="30" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="629" par1="93" par2="21.93171219946131" par3="true" par4="mWheel" par5="1">3</element> <element par0="137" par1="52">4</element> </level> ; static var level25:XML = <level> <element par0="362" par1="137" par2="220.03636063160107" par3="10" par4="-91.04162667600997cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="359" par1="136.5" par2="256.1581542719263" par3="10" par4="179.42843154873907" par5="true" par6="mBalka" par7="1">1</element> <element par0="431" par1="76">4</element> <element par0="282" par1="70">0</element> <element par0="120" par1="137" par2="7.0710678118654755" par3="true" par4="mWheel" par5="2">3</element> <element par0="587" par1="145" par2="10.198039027185569" par3="true" par4="mWheel" par5="2">3</element> <element par0="116" par1="184" par2="7" par3="true" par4="mWheel" par5="2">3</element> <element par0="584" par1="194" par2="8.06225774829855" par3="true" par4="mWheel" par5="2">3</element> </level> ; static var level26:XML = <level> <element par0="3">5</element> <element par0="128.5" par1="452" par2="153" par3="36" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="556.5" par1="454.5" par2="151" par3="31" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="272.5" par1="452" par2="147" par3="34" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="412" par1="453" par2="144" par3="32" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="324" par1="381" par2="106" par3="10" par4="90cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="323" par1="282.5" par2="95.02105029939419" par3="10" par4="88.79395122078004cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="322.5" par1="232" par2="102.04410811016969" par3="10" par4="88.31531568210372cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="346" par1="246.5" par2="126" par3="33" par4="-90.43874512200702" par5="false" par6="mWidthBalka" par7="4">2</element> <element par0="348" par1="372.5" par2="128" par3="35" par4="-90.59420348369368" par5="false" par6="mWidthBalka" par7="4">2</element> <element par0="109" par1="368">0</element> <element par0="559" par1="395">4</element> <element par0="566" par1="326.5" par2="118" par3="41" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="564.5" par1="290.5" par2="115" par3="37" par4="0cel" par5="true" par6="mWidthBalka" par7="7">2</element> <element par0="620" par1="394" par2="78.10249675906654" par3="10" par4="-92.93567344642118cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="271.5" par1="350" par2="91" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="110" par1="283" par2="106" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="261" par1="205.5" par2="110.00454536063498" par3="10" par4="179.4791436254985cel" par5="true" par6="mBalka" par7="7">1</element> </level> ; static var level27:XML = <level> <element par0="373" par1="169" par2="0" par3="0">6</element> <element par0="266" par1="250" par2="0" par3="0">6</element> <element par0="344" par1="356" par2="0" par3="0">6</element> <element par0="452" par1="279" par2="0" par3="0">6</element> <element par0="415" par1="228" par2="0" par3="0">6</element> <element par0="316" par1="212.5" par2="0" par3="0">6</element> <element par0="308" par1="304" par2="0" par3="0">6</element> <element par0="396" par1="318" par2="0" par3="0">6</element> <element par0="358" par1="267" par2="10" par3="1">8</element> <element par0="330" par1="229" par2="0" par3="0">6</element> <element par0="401" par1="239" par2="0" par3="0">6</element> <element par0="385" par1="302" par2="0" par3="0">6</element> <element par0="324.5" par1="293" par2="0" par3="0">6</element> <element par0="147" par1="384" par2="83.05419917138447" par3="true" par4="mWheel" par5="1">3</element> <element par0="244" par1="115" par2="78.00640999302557" par3="true" par4="mWheel" par5="2">3</element> <element par0="316" par1="343" par2="71.02112361825881" par3="true" par4="mWheel" par5="3">3</element> <element par0="475" par1="117" par2="82.29823813423954" par3="true" par4="mWheel" par5="6">3</element> <element par0="497" par1="407" par2="86.02325267042627" par3="true" par4="mWheel" par5="4">3</element> <element par0="103" par1="101">4</element> <element par0="658" par1="269.5" par2="103" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="610" par1="318.5" par2="96.00520819205592" par3="10" par4="-0.5968094512292472cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="609" par1="219">0</element> </level> ; static var level28:XML = <level> <element par0="2">5</element> <element par0="157.5" par1="448" par2="139.01438774457844" par3="10" par4="179.17565717915463cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="298.5" par1="446.5" par2="143.0034964607509" par3="10" par4="179.5993367442086cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="434" par1="445" par2="128.01562404644207" par3="10" par4="179.10482628978895cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="470" par1="135.5" par2="113.07077429645558" par3="10" par4="-92.02732270050019cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="536.5" par1="186.5" par2="137.00364958642524" par3="10" par4="179.5817900585038cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="597" par1="136" par2="104.17293314484334" par3="10" par4="86.69813432556501cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="530" par1="128">4</element> <element par0="131" par1="205" par2="126" par3="36" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="154" par1="299">0</element> </level> ; static var level29:XML = <level> <element par0="1">5</element> <element par0="131" par1="24">0</element> <element par0="136.5" par1="112" par2="125" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="297" par1="259" par2="104.01922899156675" par3="10" par4="178.89829388479365cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="406.5" par1="257" par2="105.01904589168576" par3="10" par4="178.9087837747373cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="406.5" par1="255" par2="0" par3="-1">9</element> <element par0="300" par1="258" par2="0" par3="-1">9</element> <element par0="194.5" par1="165.5" par2="115.00434774390054" par3="10" par4="-89.50178838738636cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="216" par1="235" par2="57.201398584300364" par3="10" par4="-143.53076560994816cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="419" par1="408" par2="114.0175425099138" par3="10" par4="-1.0050860052540562cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="305.5" par1="407.5" par2="103.00485425454472" par3="10" par4="-0.5562522270806515cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="193.5" par1="408.5" par2="111.00450441310929" par3="10" par4="-0.5161642297650046cel" par5="false" par6="mBalka" par7="1">1</element> <element par0="102" par1="200">4</element> <element par0="28" par1="161.5" par2="122.67436570041843" par3="10" par4="-49.297386663941694cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="417" par1="407" par2="0" par3="-1">9</element> <element par0="304" par1="408" par2="0" par3="-1">9</element> <element par0="195" par1="409.5" par2="0" par3="-1">9</element> </level> ; static var level30:XML = <level> <element par0="5">5</element> <element par0="133" par1="154" par2="102.07840124139877" par3="10" par4="178.64196367230335cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="293.5" par1="148.5" par2="89.1403387922662" par3="10" par4="178.7617992659041cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="318.5" par1="137.5" par2="341.11874765248535" par3="10" par4="178.4881456571734cel" par5="false" par6="mBalka" par7="5">1</element> <element par0="114" par1="37">0</element> <element par0="203" par1="288">4</element> <element par0="89" par1="205.5" par2="91" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="89.5" par1="293.5" par2="89.00561780022652" par3="10" par4="-89.35625428582463cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="330.5" par1="200.5" par2="103.00485425454472" par3="10" par4="-90.55625222708068cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="330" par1="292.5" par2="89.02246907382428" par3="10" par4="-91.28732894152503cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="448" par1="386.5" par2="110.00454536063498" par3="10" par4="179.4791436254985cel" par5="true" par6="mBalka" par7="1">1</element> </level> ; static var level31:XML = <level> <element par0="6">5</element> <element par0="297.5" par1="340.5" par2="148.00675660252813" par3="10" par4="162.29957221133282cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="440.5" par1="317.5" par2="155.00322577288512" par3="10" par4="179.63035493815383cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="158.5" par1="362.5" par2="151.16216457830973" par3="10" par4="-0.062048473322192876" par5="true" par6="mBalka" par7="6">1</element> <element par0="432.5" par1="196" par2="161" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="571" par1="174.5" par2="137.56816492197603" par3="10" par4="160.9065079995144cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="161" par1="107" par2="154" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="165" par1="57">4</element> <element par0="445.5" par1="461" par2="157" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="310.5" par1="426" par2="150.74813431681335" par3="10" par4="-148.84069549165562cel" par5="true" par6="mBalka" par7="6">1</element> <element par0="459" par1="354">0</element> </level> ; static var level32:XML = <level> <element par0="653" par1="391.5" par2="126" par3="29" par4="90.95722426201789" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="649.5" par1="280" par2="123" par3="24" par4="89.1185552870559" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="649.5" par1="169" par2="125" par3="28" par4="91.1126951993816" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="652.5" par1="59" par2="123" par3="26" par4="91.99076303143333" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="31.5" par1="394.5" par2="123" par3="27" par4="90.40805627629506" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="31" par1="283" par2="124" par3="28" par4="89.83230551441247" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="30.5" par1="173" par2="123" par3="26" par4="91.1479245567831" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="33" par1="62.5" par2="122" par3="25" par4="90.7485664954135" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="147" par1="428" par2="11.40175425099138" par3="true" par4="mWheel" par5="3">3</element> <element par0="517" par1="385" par2="10.770329614269007" par3="true" par4="mWheel" par5="3">3</element> <element par0="161" par1="318" par2="156.01281998605114" par3="10" par4="179.2654789657456cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="358" par1="48">4</element> <element par0="125" par1="357">0</element> <element par0="164.5" par1="407.5" par2="157.0286598045083" par3="10" par4="178.90530940814708cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="350.5" par1="215" par2="122.03687967167957" par3="10" par4="-123.29942053718419cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="440.5" par1="261.5" par2="123.00406497347964" par3="10" par4="-179.91897881597413" par5="true" par6="mBalka" par7="3">1</element> <element par0="488.5" par1="124.5" par2="127.00393694685216" par3="10" par4="-179.5488614532123cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="123" par1="219.5" par2="88.0056816347672" par3="10" par4="179.3489396197703cel" par5="true" par6="mBalka" par7="2">1</element> </level> ; static var level33:XML = <level> <element par0="8">5</element> <element par0="81" par1="209.5" par2="110.00454536063498" par3="10" par4="179.4791436254985cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="76" par1="141">4</element> <element par0="162" par1="376.5" par2="146.00342461736986" par3="10" par4="179.60756929065883cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="301.5" par1="376" par2="141" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="418" par1="375.5" par2="162.00308639035245" par3="10" par4="179.63009347718022cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="173" par1="386" par2="146" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="314" par1="385.5" par2="136.0036764208968" par3="10" par4="179.57871509583202cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="413" par1="384.5" par2="128.00390619039717" par3="10" par4="179.5523858291394cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="155" par1="311">0</element> <element par0="306" par1="280" par2="75.0066663703967" par3="false" par4="mWheel" par5="8">3</element> <element par0="137.5" par1="184.5" par2="55.226805085936306" par3="10" par4="95.19442890773482cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="197" par1="162.5" par2="118.00423721205946" par3="10" par4="-179.5144541699919cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="427" par1="163" par2="122" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="8">1</element> <element par0="553" par1="162" par2="136.01470508735443" par3="10" par4="179.15747573925995cel" par5="true" par6="mBalka" par7="8">1</element> </level> ; static var level34:XML = <level> <element par0="7">5</element> <element par0="122.5" par1="292" par2="135.0148140020198" par3="10" par4="179.15123572844652cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="500" par1="105" par2="156.11534197509224" par3="10" par4="177.7974018382344cel" par5="true" par6="mBalka" par7="7">1</element> <element par0="506" par1="44">4</element> <element par0="290" par1="237" par2="13" par3="true" par4="mWheel" par5="7">3</element> <element par0="129" par1="184">0</element> </level> ; static var level35:XML = <level> <element par0="173" par1="439.5" par2="152" par3="41" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="469.5" par1="439.5" par2="151" par3="37" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="319.5" par1="439" par2="151" par3="38" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="132" par1="348">0</element> <element par0="255.5" par1="293" par2="145.01379244747721" par3="10" par4="179.2097634975709cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="397" par1="291.5" par2="144.03124660989366" par3="10" par4="178.8065105760176cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="5">5</element> <element par0="126" par1="233">4</element> <element par0="125.5" par1="294" par2="121.01652779682617" par3="10" par4="-0.9469514467735517cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="65.5" par1="215.5" par2="159.00314462299164" par3="10" par4="90.36034606338723cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="137.5" par1="115" par2="156.20819440733575" par3="10" par4="-173.85756520868182" par5="true" par6="mBalka" par7="5">1</element> <element par0="273" par1="129" par2="124.1933975700802" par3="10" par4="-174.62365944853389" par5="true" par6="mBalka" par7="5">1</element> <element par0="369" par1="139" par2="74.43117626371358" par3="10" par4="-173.82982490497042cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="497" par1="289.5" par2="62.00806399170998" par3="10" par4="179.07595464722712cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="524" par1="237.5" par2="107.16809226630845" par3="10" par4="86.79051368220802cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="520.5" par1="138.5" par2="97.0051545022222" par3="10" par4="89.40934278535333cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="183" par1="247.5" par2="89.02246907382428" par3="10" par4="88.71267105847495cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="185.5" par1="38" par2="91.08786966440702" par3="10" par4="-179.50655918305242" par5="true" par6="mBalka" par7="5">1</element> <element par0="282" par1="37.5" par2="110.00454536063498" par3="10" par4="179.4791436254985cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="557.5" par1="93.5" par2="79.00632886041473" par3="10" par4="-179.27477570094032cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="639" par1="189.5" par2="68.00735254367721" par3="10" par4="179.15747573925995cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="563.5" par1="286.5" par2="77.00649323271382" par3="10" par4="-179.2559407971115cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="621.5" par1="369" par2="93.08598175880189" par3="10" par4="177.5371833240833cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="387" par1="35.5" par2="114.00438588054409" par3="10" par4="179.4974183332788cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="478.5" par1="34.5" par2="81.05553651663777" par3="10" par4="177.8789036033386cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="519" par1="64.5" par2="59.033888572581766" par3="10" par4="-91.94148639091438cel" par5="true" par6="mBalka" par7="5">1</element> </level> ; static var level36:XML = <level> <element par0="183" par1="171" par2="98" par3="10" par4="-90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="238" par1="217.5" par2="110.00454536063498" par3="10" par4="-179.4791436254985cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="293" par1="169.5" par2="97" par3="10" par4="90cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="238" par1="167">4</element> <element par0="281.5" par1="308.5" par2="159.00314462299164" par3="10" par4="-179.6013395170799" par5="true" par6="mBalka" par7="2">1</element> <element par0="409" par1="309" par2="146" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="424.5" par1="255" par2="115" par3="108" par4="0" par5="true" par6="mWidthBalka" par7="8">2</element> <element par0="500" par1="341">0</element> <element par0="241" par1="266" par2="32.14031735997639" par3="false" par4="mWheel" par5="1">3</element> <element par0="321.5" par1="294" par2="91" par3="22" par4="0" par5="true" par6="mWidthBalka" par7="1">2</element> <element par0="128" par1="155.5" par2="119.57006314291216" par3="10" par4="-29.566575504777155cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="44.5" par1="227.5" par2="94.2019108086455" par3="10" par4="-52.76516601842534cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="12" par1="291.5" par2="75.18643494673756" par3="10" par4="-76.14858098619501cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="253.5" par1="399" par2="103" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="354" par1="400.5" par2="106.00471687618433" par3="10" par4="-179.45948981286983cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="449.5" par1="400" par2="91.02197536858887" par3="10" par4="178.74095479282502cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="521" par1="309.5" par2="86.00581375697809" par3="10" par4="-179.3338000298168cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="563.5" par1="355.5" par2="91.00549433962765" par3="10" par4="-89.37040139158974cel" par5="true" par6="mBalka" par7="2">1</element> <element par0="527" par1="400" par2="72.02777242147643" par3="10" par4="1.5911402711945783cel" par5="true" par6="mBalka" par7="2">1</element> </level> ; static var level37:XML = <level> <element par0="3">5</element> <element par0="461" par1="380">0</element> <element par0="460" par1="460.5" par2="156.00320509528" par3="10" par4="179.6327243926617cel" par5="true" par6="mBalka" par7="3">1</element> <element par0="187" par1="362" par2="8.06225774829855" par3="true" par4="mWheel" par5="1">3</element> <element par0="452" par1="284" par2="7" par3="true" par4="mWheel" par5="1">3</element> <element par0="182" par1="201" par2="7" par3="true" par4="mWheel" par5="1">3</element> <element par0="450" par1="134" par2="10" par3="true" par4="mWheel" par5="1">3</element> <element par0="495" par1="161" par2="104.0768946500615" par3="10" par4="-92.2025981617658cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="499" par1="250.5" par2="81.09870529176159" par3="10" par4="-92.82712457816127cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="504" par1="349" par2="124.14507642270796" par3="10" par4="-92.7702157972002cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="508.5" par1="431.5" par2="49.09175083453431" par3="10" par4="-93.50353164478446cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="588" par1="390">4</element> <element par0="586" par1="460" par2="128" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="3">1</element> </level> ; static var level38:XML = <level> <element par0="6">5</element> <element par0="601" par1="239.5" par2="152" par3="31" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="196.5" par1="127.5" par2="134.2609399639374" par3="10" par4="0.40859329012118906cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="197" par1="146.5" par2="134.00373129133382" par3="10" par4="-179.57242749316686cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="130" par1="220" par2="134.01492454200763" par3="10" par4="179.14490260373321cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="130" par1="239" par2="132.015150645674" par3="10" par4="179.1319485502547cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="258.5" par1="228.5" par2="129.0348790056394" par3="10" par4="-179.1205174723559cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="364" par1="387">0</element> <element par0="386.5" par1="238.5" par2="129.0348790056394" par3="10" par4="-179.46153076783756cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="329.5" par1="137.5" par2="135.00370365289984" par3="10" par4="-179.57559458063804cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="465.5" par1="147.5" par2="137.00364958642524" par3="10" par4="-179.5817900585038cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="33" par1="221" par2="62" par3="10" par4="0cel" par5="true" par6="mBalka" par7="4">1</element> <element par0="18.5" par1="142.5" par2="149" par3="31" par4="-91.20834176105944cel" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="546.5" par1="163" par2="125" par3="26" par4="-90.27926791035624cel" par5="true" par6="mWidthBalka" par7="3">2</element> <element par0="621" par1="174">4</element> <element par0="593" par1="342" par2="130" par3="28" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="383.5" par1="342" par2="129" par3="26" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> <element par0="493.5" par1="464" par2="132.90974381135493" par3="10" par4="166.06831075819701cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="359.5" par1="481" par2="147.0136048126159" par3="10" par4="-0.7794863211186746cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="230.5" par1="460.5" par2="124.65151423067431" par3="10" par4="20.17945866451091cel" par5="true" par6="mBalka" par7="1">1</element> <element par0="37.5" par1="386" par2="71" par3="18" par4="0cel" par5="true" par6="mWidthBalka" par7="2">2</element> </level> ; static var level39:XML = <level> <element par0="5">5</element> <element par0="203.5" par1="155" par2="103.75451797391764" par3="10" par4="-100.55180950619228cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="279" par1="202" par2="132" par3="10" par4="-180cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="356" par1="153.5" par2="102.88342918079665" par3="10" par4="105.79240352885729cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="202" par1="251.5" par2="101.86756107809786" par3="10" par4="-76.37300514010846cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="352.5" par1="250.5" par2="101.20276676059801" par3="10" par4="-101.97613244420336cel" par5="true" par6="mBalka" par7="5">1</element> <element par0="484" par1="155" par2="14.560219778561036" par3="true" par4="mWheel" par5="5">3</element> <element par0="483" par1="242" par2="13" par3="true" par4="mWheel" par5="5">3</element> <element par0="281" par1="106">0</element> <element par0="269" par1="266">4</element> </level> ; static var levelXML:Array = new Array(level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, level11, level12, level13, level14, level15, level16, level17, level18, level19, level20, level21, level22, level23, level24, level25, level26, level27, level28, level29, level30, level31, level32, level33, level34, level35, level36, level37, level38, level39, level40, level41, level42, level43, level44, level45, level46, level47, level48, level49, level50); public static function getLevel(_arg1:Number):XML{ return (new XML(levelXML[(_arg1 - 1)])); } } }//package main
Section 83
//mBar (main.mBar) package main { import flash.display.*; import flash.utils.*; public class mBar extends mBaseInterface { public const BLINK_TTH = 30; public var bar:MovieClip; public var maxWidth:Number; public var blinkTtf;// = 0 public function mBar(_arg1:MovieClip, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number):void{ blinkTtf = 0; bar = new ((getDefinitionByName(_arg2) as Class)); bar.x = _arg3; bar.y = _arg4; maxWidth = bar.line.width; bar.line.width = ((maxWidth * _arg5) / 100); _arg1.addChild(bar); super(); } public function blink():void{ blinkTtf = BLINK_TTH; if (game.soundEngine){ game.soundEngine.playSound("beep"); }; } public function getProcents():Number{ return (Math.floor(((bar.line.width / maxWidth) * 100))); } override public function update():void{ super.update(); blinkTtf--; if (blinkTtf > 0){ bar.alpha = (0.75 + (0.25 * Math.sin(blinkTtf))); }; } public function setProcents(_arg1:Number):void{ if (_arg1 < 0){ _arg1 = 0; }; bar.line.width = ((maxWidth * _arg1) / 100); } } }//package main
Section 84
//mBaseInterface (main.mBaseInterface) package main { import flash.display.*; public class mBaseInterface extends MovieClip { public var prevInter; public var nextInter:mBaseInterface; public function mBaseInterface():void{ prevInter = null; nextInter = game.interfaceEngine.interList; if (game.interfaceEngine.interList){ game.interfaceEngine.interList.prevInter = this; }; game.interfaceEngine.interList = this; game.interfaceEngine.interCount++; } public function update():void{ } public function baseDestroy():void{ if (prevInter){ prevInter.nextInter = nextInter; }; if (nextInter){ nextInter.prevInter = prevInter; }; if (this == game.interfaceEngine.interList){ game.interfaceEngine.interList = nextInter; }; game.interfaceEngine.interCount--; if (game.interfaceEngine.interCount == 0){ game.interfaceEngine.interList = null; }; } } }//package main
Section 85
//mBaseUnit (main.mBaseUnit) package main { public class mBaseUnit { public var nextUnit:mBaseUnit; public var prevUnit; public function mBaseUnit():void{ prevUnit = null; nextUnit = game.unitList; if (game.unitList){ game.unitList.prevUnit = this; }; game.unitList = this; game.unitCount++; } public function update():void{ } public function destroy():void{ if (prevUnit){ prevUnit.nextUnit = nextUnit; }; if (nextUnit){ nextUnit.prevUnit = prevUnit; }; if (this == game.unitList){ game.unitList = nextUnit; }; game.unitCount--; if (game.unitCount == 0){ game.unitList = null; }; } } }//package main
Section 86
//mButton (main.mButton) package main { import flash.display.*; import flash.events.*; import flash.utils.*; public class mButton extends mBaseInterface { public var offMovie:MovieClip; public var defH:Number; public var parentClip:MovieClip; public var buttonText:mText; public var posX; public var onMovie; public var posY; public var buttonEnabled:Boolean;// = true public var downed:Boolean;// = false public var onClickProc:Function; public var defW; public function mButton(_arg1:MovieClip, _arg2:String, _arg3, _arg4:Number, _arg5, _arg6, _arg7, _arg8:Number, _arg9:Boolean, _arg10:String, _arg11:Number, _arg12:Function):void{ buttonEnabled = true; downed = false; super(); parentClip = _arg1; x = _arg5; y = _arg6; posX = _arg5; posY = _arg6; onClickProc = _arg12; buttonEnabled = _arg9; onMovie = new ((getDefinitionByName(_arg2) as Class)); onMovie.gotoAndStop(_arg3); onMovie.width = _arg7; onMovie.height = _arg8; onMovie.mouseChildren = false; addChild(onMovie); offMovie = new ((getDefinitionByName(_arg2) as Class)); offMovie.gotoAndStop(_arg4); offMovie.width = _arg7; offMovie.height = _arg8; offMovie.mouseChildren = false; addChild(offMovie); offMovie.visible = false; buttonText = new mText(this, 0, 0, (_arg7 + 20), _arg8, _arg10, "center", ((_arg8 * 20) / 30), 0xFFFFFF, true, 0); buttonText.setFont("Kristen ITC"); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); defW = width; defH = height; setEnabling(buttonEnabled); parentClip.addChild(this); } public function setEnabling(_arg1:Boolean):void{ buttonEnabled = _arg1; if (buttonEnabled){ addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); buttonText.setColor(0xFFFFFF); onMovie.alpha = 1; offMovie.alpha = 1; } else { removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); removeEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); buttonText.setColor(6706789); onMovie.alpha = 0.5; offMovie.alpha = 0.5; }; } public function mouseUpHandler(_arg1:MouseEvent):void{ x = posX; y = posY; onMovie.visible = !(onMovie.visible); offMovie.visible = !(offMovie.visible); downed = false; onClickProc(null); if (game.soundEngine){ game.soundEngine.playSound("buttonUp"); }; if (game.particleEngine){ game.particleEngine.addExp(game.rootMovie.mouseX, game.rootMovie.mouseY, 6, 15, 20, 6736998); }; } public function mouseDownHandler(_arg1:MouseEvent):void{ if (buttonEnabled){ x = (x + 2.5); y = (y + 2.5); }; } public function mouseOutHandler(_arg1:MouseEvent):void{ width = defW; height = defH; x = posX; y = posY; downed = false; } public function setOnOff(_arg1:Boolean):void{ onMovie.visible = _arg1; offMovie.visible = !(_arg1); } public function mouseOverHandler(_arg1:MouseEvent):void{ width = (defW + 5); height = (defH + 2.5); } } }//package main
Section 87
//mButtonPanel (main.mButtonPanel) package main { import flash.display.*; import flash.geom.*; public class mButtonPanel extends mPanel { public var startX; public var startY:Number; public var buttonsArray:Array; private var lastHeight:Number;// = 0 private var lastWidth:Number;// = 0 public var allocation:mAllocation; public function mButtonPanel(_arg1, _arg2:MovieClip, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9:Number, _arg10, _arg11:Number):void{ lastHeight = 0; lastWidth = 0; buttonsArray = new Array(); super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9); startX = _arg10; startY = _arg11; lastWidth = startX; lastHeight = startY; allocation = new mAllocation(); allocation.x = startX; allocation.y = startY; addChild(allocation); allocation.visible = false; } public function refreshAllocation(_arg1:Number):void{ var _local2:*; _local2 = 0; while (_local2 < buttonsArray.length) { if (buttonsArray[_local2].tag == _arg1){ allocation.x = buttonsArray[_local2].x; allocation.y = buttonsArray[_local2].y; }; _local2++; }; } public function addSlicer():void{ var _local1:*; var _local2:*; _local1 = getNextXY(100, 10); _local2 = new mSlicer(); _local2.x = _local1.x; _local2.y = (_local1.y + 10); addChild(_local2); } public function getNextXY(_arg1, _arg2):Point{ var _local3:*; if (((startX + lastWidth) + _arg1) > width){ lastWidth = startX; lastHeight = (lastHeight + (_arg2 + 5)); }; _local3 = new Point((lastWidth + (_arg1 / 2)), lastHeight); lastWidth = (lastWidth + (_arg1 + 5)); return (_local3); } public function addButton(_arg1:MovieClip):void{ buttonsArray[buttonsArray.length] = _arg1; } public function refreshAll():void{ var _local1:*; var _local2:*; lastWidth = startX; lastHeight = startY; _local1 = 0; while (_local1 < buttonsArray.length) { if (buttonsArray[_local1].visible){ _local2 = getNextXY(buttonsArray[_local1].width, buttonsArray[_local1].height); buttonsArray[_local1].x = _local2.x; buttonsArray[_local1].y = _local2.y; }; _local1++; }; } } }//package main
Section 88
//mDialogWindow (main.mDialogWindow) package main { import flash.display.*; import flash.events.*; public class mDialogWindow extends mBaseInterface { public const HEIGHT = 525; public const WINDOW_HEIGHT = 250; public const WINDOW_WIDTH = 400; public const WIDTH = 700; public var answered:Boolean;// = false public var tth:Number;// = 0 public function mDialogWindow(_arg1:MovieClip, _arg2:String, ... _args):void{ var _local4:*; var _local5:*; var _local6:*; var _local7:*; answered = false; tth = 0; super(); _arg1.addChild(this); _local4 = new mPanelBack(); _local4.x = ((WIDTH - WINDOW_WIDTH) / 2); _local4.y = ((HEIGHT - WINDOW_HEIGHT) / 2); _local4.width = WINDOW_WIDTH; _local4.height = WINDOW_HEIGHT; addChild(_local4); _local5 = new mText(this, (WIDTH / 2), (HEIGHT / 2), WINDOW_WIDTH, 45, _arg2, "center", 20, 0xFFFFFF, false, 0); _local5.setFont("Kristen ITC"); _local6 = 0; while (_local6 < _args.length) { _local7 = new mButton(this, "mButtonBack", 1, 1, (_local4.x + ((WINDOW_WIDTH / _args.length) * (_local6 + 1))), (_local4.y + (_local4.height * 0.9)), (((WINDOW_WIDTH / _args.length) * 2) - 10), 20, true, _args[_local6], 15, _args[(_local6 + 1)]); _local7.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); _local6 = (_local6 + 2); }; tth = 5; } public function destroy():void{ baseDestroy(); this.parent.removeChild(this); } public function mouseUpHandler(_arg1:MouseEvent):void{ answered = true; tth = 5; } override public function update():void{ if (answered){ tth--; if (tth == 0){ destroy(); }; }; } } }//package main
Section 89
//mDistanceJoint (main.mDistanceJoint) package main { import flash.display.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class mDistanceJoint extends mJoint { public var distanceMovie; public var secondAnchorMovie; public var ajointdef:b2DistanceJointDef; public var ajoint:b2DistanceJoint; public function mDistanceJoint(_arg1:MovieClip, _arg2, _arg3, _arg4, _arg5:Number):void{ var _local6:b2Body; ajointdef = new b2DistanceJointDef(); super(); _local6 = game.physEngine.world.m_bodyList; while (_local6) { if ((_local6.m_shapeList.m_userData is Sprite)){ if (_local6.m_shapeList.m_userData.hitTestPoint(_arg2, _arg3, true)){ body1 = _local6; }; if (_local6.m_shapeList.m_userData.hitTestPoint(_arg4, _arg5, true)){ body2 = _local6; }; }; _local6 = _local6.m_next; }; if (body1 == null){ if (body2 != null){ ajointdef.Initialize(game.physEngine.world.GetGroundBody(), body2, new b2Vec2((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale)), new b2Vec2((_arg4 / game.physEngine.physScale), (_arg5 / game.physEngine.physScale))); inited = true; }; } else { if (body2 == null){ if (body1 != null){ ajointdef.Initialize(body1, game.physEngine.world.GetGroundBody(), new b2Vec2((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale)), new b2Vec2((_arg4 / game.physEngine.physScale), (_arg5 / game.physEngine.physScale))); inited = true; }; } else { if (body1 != null){ if (body2 != null){ ajointdef.Initialize(body1, body2, new b2Vec2((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale)), new b2Vec2((_arg4 / game.physEngine.physScale), (_arg5 / game.physEngine.physScale))); inited = true; }; }; }; }; if (inited){ ajoint = (game.physEngine.world.CreateJoint(ajointdef) as b2DistanceJoint); _arg1.addChild(this); secondAnchorMovie = new mJointMovie(); _arg1.addChild(secondAnchorMovie); distanceMovie = new mDistJointMovie(); _arg1.addChild(distanceMovie); update(); prevJoint = null; nextJoint = game.physEngine.jointList; if (game.physEngine.jointList){ game.physEngine.jointList.prevJoint = this; }; game.physEngine.jointList = this; game.physEngine.jointCount++; }; } override public function update():void{ var _local1:*; x = (ajoint.GetAnchor1().x * game.physEngine.physScale); y = (ajoint.GetAnchor1().y * game.physEngine.physScale); secondAnchorMovie.x = (ajoint.GetAnchor2().x * game.physEngine.physScale); secondAnchorMovie.y = (ajoint.GetAnchor2().y * game.physEngine.physScale); distanceMovie.x = ((x + secondAnchorMovie.x) / 2); distanceMovie.y = ((y + secondAnchorMovie.y) / 2); _local1 = Math.sqrt((((x - secondAnchorMovie.x) * (x - secondAnchorMovie.x)) + ((y - secondAnchorMovie.y) * (y - secondAnchorMovie.y)))); if (_local1 == 0){ _local1 = 0.01; }; if (secondAnchorMovie.y > y){ distanceMovie.rotation = ((-(Math.acos(((x - secondAnchorMovie.x) / _local1))) * 180) / Math.PI); } else { distanceMovie.rotation = ((Math.acos(((x - secondAnchorMovie.x) / _local1)) * 180) / Math.PI); }; distanceMovie.lineWidth.width = _local1; } override public function destroy():void{ game.physEngine.world.DestroyJoint(ajoint); parent.removeChild(secondAnchorMovie); parent.removeChild(distanceMovie); baseDestroy(); } } }//package main
Section 90
//mDotJoint (main.mDotJoint) package main { import flash.display.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class mDotJoint extends mJoint { public var ajointdef:b2RevoluteJointDef; public var ajoint:b2RevoluteJoint; public function mDotJoint(_arg1:MovieClip, _arg2, _arg3, _arg4:Number):void{ var _local5:b2Body; ajointdef = new b2RevoluteJointDef(); super(); _local5 = game.physEngine.world.m_bodyList; while (_local5) { if ((_local5.m_shapeList.m_userData is Sprite)){ if (_local5.m_shapeList.m_userData.hitTestPoint(_arg2, _arg3, true)){ if (body1 == null){ body1 = _local5; } else { if (body2 == null){ body2 = _local5; }; }; }; }; _local5 = _local5.m_next; }; if (body1 == null){ if (body2 != null){ ajointdef.Initialize(game.physEngine.world.GetGroundBody(), body2, new b2Vec2((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale))); inited = true; }; } else { if (body2 == null){ if (body1 != null){ ajointdef.Initialize(body1, game.physEngine.world.GetGroundBody(), new b2Vec2((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale))); inited = true; }; } else { if (body1 != null){ if (body2 != null){ ajointdef.Initialize(body1, body2, new b2Vec2((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale))); inited = true; }; }; }; }; if (inited){ ajointdef.motorSpeed = ((_arg4 / 10) * Math.PI); ajointdef.maxMotorTorque = 50000; ajointdef.enableMotor = true; if (_arg4 == 0){ ajointdef.enableMotor = false; }; ajoint = (game.physEngine.world.CreateJoint(ajointdef) as b2RevoluteJoint); _arg1.addChild(this); update(); prevJoint = null; nextJoint = game.physEngine.jointList; if (game.physEngine.jointList){ game.physEngine.jointList.prevJoint = this; }; game.physEngine.jointList = this; game.physEngine.jointCount++; }; } override public function update():void{ x = (ajoint.GetAnchor1().x * game.physEngine.physScale); y = (ajoint.GetAnchor1().y * game.physEngine.physScale); } override public function destroy():void{ game.physEngine.world.DestroyJoint(ajoint); baseDestroy(); } } }//package main
Section 91
//mDragButton (main.mDragButton) package main { import flash.display.*; import flash.events.*; import Box2D.Common.Math.*; public class mDragButton extends mBaseInterface { public var obj; public var dragObj:MovieClip; public var dragOn:Boolean;// = false public var proc:Function; public var rotating:Boolean;// = false public var rotated:Boolean;// = false public var draged:Boolean;// = false public function mDragButton(_arg1, _arg2, _arg3, _arg4:MovieClip, _arg5, _arg6, _arg7, _arg8, _arg9:Number, _arg10:Boolean, _arg11:Function):void{ var fParent = _arg1; var fDragParent = _arg2; var fObj = _arg3; var fDragObj = _arg4; var fX = _arg5; var fY = _arg6; var fW = _arg7; var fH = _arg8; var fR = _arg9; var fRotating = _arg10; var fProc = _arg11; dragOn = false; draged = false; rotated = false; rotating = false; super(); obj = fObj; obj.x = fX; obj.y = fY; obj.width = fW; obj.height = fH; obj.rotation = fR; fParent.addChild(obj); dragObj = fDragObj; dragObj.x = fX; dragObj.y = fY; dragObj.width = fW; dragObj.height = fH; dragObj.rotation = fR; dragObj.visible = false; fDragParent.addChild(dragObj); proc = fProc; rotating = fRotating; obj.addEventListener(MouseEvent.MOUSE_DOWN, function (){ dragOn = true; draged = false; rotated = false; }); dragObj.parent.addEventListener(MouseEvent.MOUSE_UP, function (){ if (rotated){ applyFunc(); }; }); dragObj.addEventListener(MouseEvent.MOUSE_UP, function (){ dragOn = false; draged = true; if (!rotating){ applyFunc(); }; }); } public function applyFunc():void{ draged = false; rotated = false; dragObj.visible = false; proc.call(null, dragObj.x, dragObj.y, dragObj.rotation); } override public function update():void{ var _local1:*; if (dragOn){ dragObj.visible = true; dragObj.x = dragObj.parent.mouseX; dragObj.y = dragObj.parent.mouseY; dragObj.rotation = obj.rotation; } else { if (draged){ rotated = true; if (rotating){ _local1 = new b2Vec2((dragObj.x - dragObj.parent.mouseX), (dragObj.y - dragObj.parent.mouseY)); dragObj.rotation = ((180 / Math.PI) * _local1.GetAngle()); } else { dragObj.rotation = 0; }; }; }; } } }//package main
Section 92
//mEditable (main.mEditable) package main { import flash.display.*; import flash.events.*; import flash.text.*; public class mEditable extends MovieClip { public var isNumber:Boolean;// = false public var text:TextField; public var minValue;// = 0 public var maxValue;// = 0 public var caption:TextField; public function mEditable(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:String, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number):void{ isNumber = false; minValue = 0; maxValue = 0; super(); x = _arg2; y = _arg3; _arg1.addChild(this); caption.text = _arg4; caption.selectable = false; isNumber = _arg6; minValue = _arg7; maxValue = _arg8; text.text = _arg5; if (isNumber){ text.restrict = "0-9"; } else { text.restrict = "A-Z a-z 0-9"; }; text.addEventListener(TextEvent.TEXT_INPUT, textInputHandler); } public function textInputHandler(_arg1:TextEvent):void{ var _local2:String; var _local3:String; _local2 = text.text.substr(text.selectionBeginIndex, (text.selectionEndIndex - text.selectionBeginIndex)); if (_local2 != ""){ _local3 = text.text.replace(_local2, _arg1.text); } else { _local3 = text.text.concat(_arg1.text); }; if (isNumber){ if (Number(_local3) > maxValue){ _arg1.preventDefault(); }; if (Number(_local3) < minValue){ _arg1.preventDefault(); }; }; } } }//package main
Section 93
//mInputEngine (main.mInputEngine) package main { import flash.display.*; import flash.events.*; public class mInputEngine { private var keyDown:Array; public function mInputEngine(_arg1:Stage){ keyDown = new Array(); super(); _arg1.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); _arg1.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler); } private function onKeyDownHandler(_arg1:KeyboardEvent){ keyDown[_arg1.keyCode] = true; } private function onKeyUpHandler(_arg1:KeyboardEvent){ keyDown[_arg1.keyCode] = false; } public function isKeyDown(_arg1:Number):Boolean{ return (keyDown[_arg1]); } } }//package main
Section 94
//mInputWindow (main.mInputWindow) package main { import flash.display.*; public class mInputWindow extends mBaseInterface { public const HEIGHT = 525; public const WINDOW_WIDTH = 400; public const WIDTH = 700; private var editablesArray:Array; public var windowHeight;// = 250 private var closed:Boolean;// = false private var defaultValuesArray:Array; private var oked:Boolean;// = false private var proc1:Function; private var proc2:Function; private var tth:Number;// = 0 public function mInputWindow(_arg1:MovieClip, _arg2:String, _arg3, _arg4, ... _args):void{ var window:*; var tempText:*; var i:*; var tempButton:*; var fParent = _arg1; var fText = _arg2; var fProc1 = _arg3; var fProc2 = _arg4; var args = _args; windowHeight = 250; closed = false; oked = false; tth = 0; editablesArray = new Array(); defaultValuesArray = new Array(); super(); fParent.addChild(this); window = new mPanelBack(); windowHeight = (((args.length / 2) * 25) + 100); window.x = ((WIDTH - WINDOW_WIDTH) / 2); window.y = ((HEIGHT - windowHeight) / 2); window.width = WINDOW_WIDTH; window.height = windowHeight; addChild(window); tempText = new mText(this, (WIDTH / 2), (window.y + (window.height * 0.2)), WINDOW_WIDTH, 45, fText, "center", 20, 0xFFFFFF, false, 0); tempText.setFont("Love Letters"); i = 0; while (i < args.length) { defaultValuesArray[defaultValuesArray.length] = args[(i + 1)]; editablesArray[editablesArray.length] = new mEditable(this, (WIDTH / 2), (((window.y + (window.height / 2)) - ((16 * args.length) / 4)) + (32 * (i / 2))), args[i], args[(i + 1)], false, 0, 0); editablesArray[(editablesArray.length - 1)].width = 250; i = (i + 2); }; tempButton = new mButton(this, "mButtonBack", 1, 1, 290, (window.y + (window.height * 0.9)), 100, 20, true, "Ok", 15, function (){ oked = true; tth = 5; }); tempButton = new mButton(this, "mButtonBack", 1, 1, 410, (window.y + (window.height * 0.9)), 100, 20, true, "No, thanks", 15, function (){ closed = true; tth = 5; }); tth = 5; proc1 = fProc1; proc2 = fProc2; } public function destroy():void{ baseDestroy(); this.parent.removeChild(this); } override public function update():void{ var _local1:Array; var _local2:*; if (closed){ tth--; if (tth == 0){ destroy(); proc2(); }; }; if (oked){ tth--; if (tth == 0){ _local1 = new Array(); _local2 = 0; while (_local2 < editablesArray.length) { if (editablesArray[_local2].text.text == ""){ _local1[_local1.length] = defaultValuesArray[_local2]; } else { _local1[_local1.length] = editablesArray[_local2].text.text; }; _local2++; }; proc1.apply(null, _local1); destroy(); }; }; } } }//package main
Section 95
//mInterfaceEngine (main.mInterfaceEngine) package main { import flash.display.*; import flash.events.*; public class mInterfaceEngine extends MovieClip { public var interCount;// = 0 public var interList;// = null public function mInterfaceEngine():void{ interCount = 0; interList = null; super(); game.rootMovie.addChild(this); } public function addPanel(_arg1, _arg2:MovieClip, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9:Number):mPanel{ var _local10:*; _local10 = new mPanel(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9); return (_local10); } public function addDragButton(_arg1, _arg2, _arg3, _arg4:MovieClip, _arg5, _arg6, _arg7, _arg8, _arg9:Number, _arg10, _arg11:Function):mDragButton{ var _local12:*; _local12 = new mDragButton(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11); return (_local12); } public function clearAll():void{ var _local1:mBaseInterface; _local1 = interList; while (_local1) { _local1.baseDestroy(); _local1 = _local1.nextInter; }; } public function addButtonPanel(_arg1, _arg2:MovieClip, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9:Number, _arg10, _arg11:Number):mButtonPanel{ var _local12:*; _local12 = new mButtonPanel(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, _arg11); return (_local12); } public function update(_arg1:Event):void{ var _local2:mBaseInterface; _local2 = interList; while (_local2) { _local2.update(); _local2 = _local2.nextInter; }; } } }//package main
Section 96
//mJoint (main.mJoint) package main { import flash.display.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class mJoint extends MovieClip { var prevJoint; var nextJoint:mJoint; var inited:Boolean;// = false var body1; var body2:b2Body; public function mJoint():void{ inited = false; super(); } public function destroy():void{ baseDestroy(); } public function update():void{ } public function baseDestroy():void{ parent.removeChild(this); if (prevJoint){ prevJoint.nextJoint = nextJoint; }; if (nextJoint){ nextJoint.prevJoint = prevJoint; }; if (this == game.physEngine.jointList){ game.physEngine.jointList = nextJoint; }; game.physEngine.jointCount--; if (game.physEngine.jointCount == 0){ game.physEngine.jointList = null; }; } } }//package main
Section 97
//mLevelButton (main.mLevelButton) package main { import flash.display.*; import flash.events.*; public class mLevelButton extends mTagButton { public const HEIGHT = 125; public const WIDTH = 250; public var whileLoad:MovieClip; public function mLevelButton(_arg1:MovieClip, _arg2:String, _arg3, _arg4:Number, _arg5, _arg6, _arg7:String, _arg8:Number, _arg9, _arg10:Function, _arg11:String, _arg12:String):void{ var tempText:*; var fParent = _arg1; var fClassName = _arg2; var fOnFrame = _arg3; var fOffFrame = _arg4; var fx = _arg5; var fy = _arg6; var fCreator = _arg7; var fRating = _arg8; var fPNGUrl = _arg9; var fProc = _arg10; var fUrl = _arg11; var fLevelName = _arg12; super(fParent, fClassName, fOnFrame, fOffFrame, fx, fy, WIDTH, HEIGHT, true, "", 15, fProc, fUrl, fLevelName); onMovie.scaleX = (onMovie.scaleX * (-1 + (2 * Math.round(Math.random())))); onMovie.scaleY = (onMovie.scaleY * (-1 + (2 * Math.round(Math.random())))); offMovie.scaleX = onMovie.scaleX; offMovie.scaleY = onMovie.scaleY; tempText = new mText(this, 47, -20, 100, 25, fLevelName, "left", 14, 0xFFFFFF, false, 0); tempText.setFont("Kristen ITC"); tempText.setBold(true); tempText = new mText(this, 47, 2, 100, 25, ("by " + String(fCreator)), "left", 12, 13496012, false, 0); tempText.setFont("Verdana"); utils.addRatingStars(this, 0, 20, fRating); whileLoad = new mSmallWhileLoad(); whileLoad.x = -50; whileLoad.y = 0; addChild(whileLoad); utils.loadContent(this, fPNGUrl, -94, -32, 88, 64, function (){ }, loadImageIOErrorHandler); } public function loadImageIOErrorHandler(_arg1:IOErrorEvent):void{ whileLoad.gotoAndStop(17); } } }//package main
Section 98
//mLevelEngine (main.mLevelEngine) package main { import flash.display.*; import flash.events.*; import Box2D.Common.Math.*; import flash.net.*; import mochi.as3.*; import flash.xml.*; public class mLevelEngine { public const TIMER_TTH = 3600; public var editablesArray:Array; public var rotatedObject:MovieClip;// = null public var webBar; public var elementsPanelFixed; public var pressed:Boolean;// = false public var levelName:String; public var startX; public var startY:Number; public var isStatic:Boolean;// = true public var currentElement:Number;// = 0 public var currentXMLLevel:XML; public var rotatedDeltaAngle; public var elementsPanel:mButtonPanel; public var smallPngSource:BitmapData;// = null public var propertiesPanelFixed; public var saveLevelScriptUrl:String; public var draggedStartX; public var draggedStartY:Number;// = 0 public var timerTth:Number;// = 3600 public var mainPanelFixed; public var draggedObject:MovieClip;// = null public var argsArray:Array; public var level:XML; public var currentLevel:Number;// = 0 public var propertiesPanel:mButtonPanel; public var editArgsArray:Array; public var screenShot:BitmapData; public var savePNGScriptUrl:String; public var paintArray:Array; public var levelsCompleted:Number;// = 0 public var elementsPanelX; public var elementsPanelY; public var pngSource:BitmapData;// = null public var thisGame; public var scoresArray:Array; public var paintSprite:Sprite; public var fon:MovieClip; public var timerCount:mText; public var mainPanel:mPanel; public var webPaintSprite:Sprite; public var levelText:mText; public var draggedDeltaY; public var minLength;// = 5 public var draggedDeltaX; public var propertiesPanelX; public var propertiesPanelY; public var rotatedStartAngle:Number;// = 0 public var mainPanelX; public var mainPanelY; public var funcArray:Array; public var gameCode:String; public function mLevelEngine(_arg1, _arg2:String, _arg3:String, _arg4:String):void{ paintArray = new Array(); funcArray = new Array(); argsArray = new Array(); editArgsArray = new Array(); editablesArray = new Array(); currentElement = 0; pressed = false; minLength = 5; isStatic = true; level = new XML(); draggedObject = null; draggedStartY = 0; rotatedObject = null; rotatedStartAngle = 0; pngSource = null; smallPngSource = null; levelsCompleted = 0; currentLevel = 0; scoresArray = new Array(); timerTth = TIMER_TTH; super(); thisGame = _arg1; saveLevelScriptUrl = _arg2; savePNGScriptUrl = _arg3; gameCode = _arg4; currentElement = 0; mainPanelX = -65; mainPanelY = 0; mainPanelFixed = false; elementsPanelX = 540; elementsPanelY = 0; elementsPanelFixed = false; propertiesPanelX = 0; propertiesPanelY = 390; propertiesPanelFixed = false; level = <level></level> ; addElement(0, game.setPlayerXY, "endX", "endY"); addElement(1, game.physEngine.addDataRectangle, "lineX", "lineY", "lineLength", "editable1", "lineAngle", "isStatic", "mBalka", "editable0"); addElement(1, game.physEngine.addDataRectangle, "lineX", "lineY", "lineWidth", "lineHeight", "0cel", "isStatic", "mWidthBalka", "editable0"); addElement(2, game.physEngine.addDataCircle, "startX", "startY", "lineLength", "isStatic", "mWheel", "editable0"); addElement(0, game.addRecycle, "endX", "endY"); addElement(0, setFon, "editable0"); addElement(0, game.physEngine.addMovieDotJoint, "lineX", "lineY", 0, 0); addElement(1, game.physEngine.addMovieDistanceJoint, "startX", "startY", "endX", "endY"); addElement(0, game.physEngine.addMovieDotJoint, "lineX", "lineY", "editable2", 1); addElement(0, game.physEngine.addMovieDotJoint, "lineX", "lineY", "editable2", -1); addEditable("Type:", "1", true, 1, 8); addEditable("Width:", "10", true, 0, 100); addEditable("Power:", "100", true, 0, 500); } public function setFon(_arg1:Number):void{ if (fon){ fon.fon1.gotoAndStop(_arg1); fon.fon2.gotoAndStop(_arg1); }; } public function mouseUpHandler(_arg1:MouseEvent):void{ var _local2:*; var _local3:*; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:*; var _local10:*; var _local11:Boolean; var _local12:Array; var _local13:*; var _local14:*; var _local15:*; var _local16:*; var _local17:*; if (game.soundEngine){ game.soundEngine.playSound("levelEditorUp"); }; pressed = false; _local2 = fon.mouseX; _local3 = fon.mouseY; _local4 = ((startX + _local2) / 2); _local5 = ((startY + _local3) / 2); _local6 = new b2Vec2((startX - _local2), (startY - _local3)); _local7 = _local6.Length(); _local8 = Math.abs((startX - _local2)); _local9 = Math.abs((startY - _local3)); _local10 = ((_local6.GetAngle() * 180) / Math.PI); if (currentElement < 100){ _local11 = false; if (paintArray[currentElement] == 0){ _local11 = true; }; if (paintArray[currentElement] == 1){ if (_local7 > minLength){ _local11 = true; }; }; if (paintArray[currentElement] == 2){ if (_local7 > minLength){ _local11 = true; }; }; if (_local11){ _local12 = new Array(); _local13 = 0; while (_local13 < argsArray[currentElement].length) { _local12[_local13] = argsArray[currentElement][_local13]; if (_local12[_local13] == "startX"){ _local12[_local13] = startX; }; if (_local12[_local13] == "startY"){ _local12[_local13] = startY; }; if (_local12[_local13] == "endX"){ _local12[_local13] = _local2; }; if (_local12[_local13] == "endY"){ _local12[_local13] = _local3; }; if (_local12[_local13] == "lineX"){ _local12[_local13] = _local4; }; if (_local12[_local13] == "lineY"){ _local12[_local13] = _local5; }; if (_local12[_local13] == "lineVec"){ _local12[_local13] = _local6; }; if (_local12[_local13] == "lineLength"){ _local12[_local13] = _local7; }; if (_local12[_local13] == "lineWidth"){ _local12[_local13] = _local8; }; if (_local12[_local13] == "lineHeight"){ _local12[_local13] = _local9; }; if (_local12[_local13] == "lineAngle"){ _local12[_local13] = String(_local10).concat("cel"); }; if (_local12[_local13] == "isStatic"){ _local12[_local13] = isStatic; }; if (String(_local12[_local13]).substr(0, 8) == "editable"){ _local12[_local13] = Number(editablesArray[Number(_local12[_local13].substr(8, (_local12[_local13].length - 8)))].text.text); }; _local13++; }; funcArray[currentElement].apply(null, _local12); _local14 = new XML((("<element>" + ??esc_xelem ) + "</element>")); _local13 = 0; while (_local13 < _local12.length) { _local14.@[("par" + _local13)] = _local12[_local13]; _local13++; }; level.appendChild(_local14); }; } else { if (currentElement == 100){ _local15 = getFonChildNum(fon.mouseX, fon.mouseY); if (!isNaN(_local15)){ _local16 = getChildNumByPar(level, "element", fon.getChildAt(_local15).x, fon.getChildAt(_local15).y); if (!isNaN(_local16)){ delete level.element[_local16]; reloadEditor(); }; }; }; if (currentElement == 101){ if (draggedObject){ _local17 = getChildNumByPar(level, "element", draggedStartX, draggedStartY); if (!isNaN(_local17)){ level.element[_local17].@[("par" + getParNumByChildNum(level, "element", _local17, String(draggedStartX)))] = draggedObject.x; level.element[_local17].@[("par" + getParNumByChildNum(level, "element", _local17, String(draggedStartY)))] = draggedObject.y; }; draggedObject = null; }; }; if (currentElement == 102){ if (rotatedObject){ _local17 = getChildNumByPar(level, "element", String(rotatedStartAngle).concat("cel"), rotatedObject.x, rotatedObject.y); if (!isNaN(_local17)){ level.element[_local17].@[("par" + getParNumByChildNum(level, "element", _local17, String(rotatedStartAngle).concat("cel")))] = String((rotatedObject.rotation + "cel")); }; rotatedObject = null; }; }; }; frontPaintSprite(); } public function testLevel():void{ var tempDialog:*; if (level != <level></level> ){ if (loadLevel(level, "Test Level")){ currentLevel = 100; loadEditorViewInterface(); screenShot = utils.decreaseBitmapData(utils.getBitmapData(fon, 700, 525), 3); }; } else { tempDialog = new mDialogWindow(game.rootMovie, "Level is empty! ", "Ok", function (){ }); }; } public function clearAll():void{ if (mainPanel){ mainPanelX = mainPanel.x; mainPanelY = mainPanel.y; mainPanelFixed = mainPanel.fixed; }; if (elementsPanel){ elementsPanelX = elementsPanel.x; elementsPanelY = elementsPanel.y; elementsPanelFixed = elementsPanel.fixed; }; if (propertiesPanel){ propertiesPanelX = propertiesPanel.x; propertiesPanelY = propertiesPanel.y; propertiesPanelFixed = propertiesPanel.fixed; }; while (editablesArray.length > 0) { editablesArray.pop(); }; } public function setAllEditablesInvisible():void{ var _local1:*; _local1 = 0; while (_local1 < editablesArray.length) { editablesArray[_local1].visible = false; _local1++; }; } public function addEditable(... _args):void{ editArgsArray[editArgsArray.length] = _args; } public function addElement(_arg1:Number, _arg2:Function, ... _args):void{ paintArray[paintArray.length] = _arg1; funcArray[funcArray.length] = _arg2; argsArray[argsArray.length] = _args; } public function levelCompleted():void{ var tempDialog:*; if ((((currentLevel > 0)) && ((currentLevel < 51)))){ scoresArray[(currentLevel - 1)] = Math.floor((timerTth / 30)); if ((currentLevel - 1) == levelsCompleted){ levelsCompleted++; }; if (currentLevel == 50){ tempDialog = new mDialogWindow(game.rootMovie, "Level Completed!", "More games", function (){ thisGame.clearAll(); loadLevelSelectScreen(); game.toSponsorSite(); }, "Select level", function (){ thisGame.clearAll(); loadLevelSelectScreen(); }); } else { tempDialog = new mDialogWindow(game.rootMovie, "Level Completed!", "More games", function (){ thisGame.clearAll(); loadLevelSelectScreen(); game.toSponsorSite(); }, "Select level", function (){ thisGame.clearAll(); loadLevelSelectScreen(); }, "NEXT LEVEL", function (){ thisGame.clearAll(); loadEmbedLevel((currentLevel + 1)); }); }; saveProgress(); }; if (currentLevel == 0){ game.levelViewer.loadRatingChanger(); }; if (currentLevel == 100){ tempDialog = new mDialogWindow(game.rootMovie, "Level Completed!", "Edit level", function (){ thisGame.clearAll(); loadEditor(level); }, "Send level", function (){ var tempInput:*; tempInput = new mInputWindow(game.rootMovie, "Send level:", sendLevel, function (){ thisGame.clearAll(); loadEditor(level); }, "Level name:", ("level" + String(Math.floor((Math.random() * 1000)))), "Your name:", "name"); }); }; } public function loadProgress():void{ clearProgress(); if (((!((utils.loadVar(game.sharedObjectName, "levComp") == "undefined"))) && (!((utils.loadVar(game.sharedObjectName, "scores") == "undefined"))))){ levelsCompleted = utils.loadVar(game.sharedObjectName, "levComp"); scoresArray = utils.loadVar(game.sharedObjectName, "scores"); }; } public function loadLevel(_arg1, _arg2:String):Boolean{ var maybeLoaded:Boolean; var tempXML:XML; var tempDialog:*; var fXML = _arg1; var fLevelName = _arg2; maybeLoaded = false; if ((fXML is String)){ if (((((!((fXML == ""))) && ((fXML.substr(0, 7) == "<level>")))) && ((fXML.substr((fXML.length - 8), 8) == "</level>")))){ maybeLoaded = true; tempXML = new XML(fXML); }; }; if ((fXML is XML)){ maybeLoaded = true; tempXML = fXML; }; currentXMLLevel = tempXML; if (maybeLoaded){ thisGame.clearAll(); thisGame.addEventListener(Event.ENTER_FRAME, game.physEngine.update); thisGame.addEventListener(Event.ENTER_FRAME, game.update); addFon(); game.addPlayerUnit(0, 0); loadXML(tempXML); } else { tempDialog = new mDialogWindow(game.rootMovie, "Error! ", "Ok", function (){ }); }; webBar = new mBar(game.rootMovie, "mWebBar", (utils.WIDTH / 2), (utils.HEIGHT - 40), 100); webPaintSprite = new Sprite(); fon.addChild(webPaintSprite); levelText = new mText(game.rootMovie, 110, 20, 200, 35, fLevelName, "left", 30, 0xFFFFFF, true, 0); levelText.setFont("Love Letters"); timerTth = TIMER_TTH; timerCount = new mText(game.rootMovie, 590, 20, 200, 35, ("Score: " + String(Math.floor((timerTth / 30)))), "right", 30, 0xFFFFFF, true, 0); timerCount.setFont("Love Letters"); game.gameStage.focus = game.rootMovie; game.globalPause = false; if (maybeLoaded){ if (game.soundEngine){ game.soundEngine.addButtons(); game.soundEngine.playSound("loadLevel"); game.soundEngine.playMusic("track1"); }; game.addFlash(); }; return (maybeLoaded); } public function loadHelp(_arg1:Number):void{ var _local2:*; var _local3:*; if (_arg1 == 1){ _local2 = new mText(game.rootMovie, 350, 70, 600, 35, "Welcome to \"Over Web\"!!!", "left", 30, 0xFFFFFF, true, 0); _local2.setFont("Love Letters"); _local2 = new mText(game.rootMovie, 350, 100, 600, 25, "To complete level place a spider to web zone", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); _local2 = new mText(game.rootMovie, 350, 130, 600, 25, "Use WASD to move", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); }; if (_arg1 == 2){ _local2 = new mText(game.rootMovie, 350, 100, 600, 25, "Use mouse to create webs", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); _local3 = new mHelpMovie1(); _local3.x = 330; _local3.y = 420; game.rootMovie.addChild(_local3); }; if (_arg1 == 3){ _local2 = new mText(game.rootMovie, 350, 100, 600, 25, "The indicator at bottom shows accessible quantity of a web", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); _local2 = new mText(game.rootMovie, 350, 185, 600, 25, "If the web leaves a screen, ", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); _local2 = new mText(game.rootMovie, 550, 215, 600, 25, "its length comes back in the indicator", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); _local2 = new mText(game.rootMovie, 350, 235, 600, 25, "Good Luck!", "left", 20, 0xFFFFFF, true, 0); _local2.setFont("Kristen ITC"); _local3 = new mHelpMovie2(); _local3.x = 277; _local3.y = 385; game.rootMovie.addChild(_local3); }; if (_arg1 > 15){ _local2 = new mText(game.rootMovie, 350, 250, 600, 35, "DEMOVERSION", "center", 30, 0xFFFFFF, true, 0); _local2.setFont("Love Letters"); }; } public function processPNGSendResponse(_arg1:String):void{ var tempDialog:*; var fResponse = _arg1; if (fResponse == "file recorded"){ tempDialog = new mDialogWindow(game.rootMovie, "Level have been sent!", "Ok", function (){ thisGame.clearAll(); loadEditor(level); }); } else { tempDialog = new mDialogWindow(game.rootMovie, "Error, try later", "Ok", function (){ thisGame.clearAll(); loadEditor(level); }); }; } public function loadXML(_arg1:XML):void{ var _local2:Array; var _local3:*; var _local4:*; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.child("element").length()) { while (_local2.length > 0) { _local2.pop(); }; _local4 = 0; while (_local4 < _arg1.element[_local3].attributes().length()) { _local2[_local4] = _arg1.element[_local3].@[("par" + _local4)]; if (_local2[_local4] == "true"){ _local2[_local4] = true; }; if (_local2[_local4] == "false"){ _local2[_local4] = false; }; _local4++; }; funcArray[_arg1.element[_local3]].apply(null, _local2); _local3++; }; } public function reloadEditor():void{ thisGame.clearAll(); loadEditor(level); } public function addFon():void{ fon = new mFon(); fon.gotoAndStop(1); game.rootMovie.addChild(fon); game.physEngine.movieParent = fon; game.physEngine.clearDebugSprite(); } public function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:*; var _local3:*; startX = fon.mouseX; startY = fon.mouseY; pressed = true; if (currentElement == 101){ _local2 = getFonChildNum(fon.mouseX, fon.mouseY); if (!isNaN(_local2)){ draggedObject = MovieClip(fon.getChildAt(_local2)); draggedStartX = draggedObject.x; draggedStartY = draggedObject.y; draggedDeltaX = (draggedObject.x - fon.mouseX); draggedDeltaY = (draggedObject.y - fon.mouseY); }; }; if (currentElement == 102){ _local2 = getFonChildNum(fon.mouseX, fon.mouseY); if (!isNaN(_local2)){ rotatedObject = MovieClip(fon.getChildAt(_local2)); rotatedStartAngle = rotatedObject.rotation; _local3 = new b2Vec2((fon.mouseX - rotatedObject.x), (fon.mouseY - rotatedObject.y)); rotatedDeltaAngle = (rotatedStartAngle - ((_local3.GetAngle() * 180) / Math.PI)); }; }; } public function resetLevel():void{ thisGame.clearAll(); if ((((currentLevel > 0)) && ((currentLevel <= 50)))){ loadEmbedLevel(currentLevel); }; if (currentLevel == 0){ game.levelViewer.loadLevelWithInterface(currentXMLLevel); }; if (currentLevel == 100){ loadLevel(currentXMLLevel, "Test Level"); loadEditorViewInterface(); }; } public function getFonChildNum(_arg1, _arg2:Number):Number{ var _local3:Number; var _local4:*; _local3 = NaN; _local4 = 5; while (_local4 < fon.numChildren) { if (fon.getChildAt(_local4).hitTestPoint(_arg1, _arg2, true)){ if (fon.getChildAt(_local4) != paintSprite){ _local3 = _local4; }; }; _local4++; }; return (_local3); } public function getChildNumByPar(_arg1:XML, _arg2:String, ... _args):Number{ var _local4:Number; var _local5:*; var _local6:Boolean; var _local7:*; var _local8:Boolean; var _local9:*; _local4 = NaN; _local5 = 0; while (_local5 < _arg1.child(_arg2).length()) { _local6 = true; _local7 = 0; while (_local7 < _args.length) { _local8 = false; _local9 = 0; while (_local9 < _arg1.child(_arg2)[_local5].attributes().length()) { if (_args[_local7] == _arg1.child(_arg2)[_local5].@[("par" + _local9)]){ _local8 = true; }; _local9++; }; if (!_local8){ _local6 = false; }; _local7++; }; if (_local6){ _local4 = _local5; }; _local5++; }; return (_local4); } public function clearProgress():void{ var _local1:*; scoresArray = new Array(); _local1 = 0; while (_local1 < 50) { scoresArray[_local1] = 0; _local1++; }; levelsCompleted = 0; } public function refreshPanels(_arg1:Number):void{ currentElement = _arg1; elementsPanel.refreshAllocation(_arg1); setAllEditablesInvisible(); if (_arg1 < 100){ setVisibleEditables(argsArray[_arg1]); }; propertiesPanel.refreshAll(); } public function createButtonMatrix(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Function):void{ var _local11:*; var _local12:*; var _local13:*; var _local14:*; var _local15:*; var _local16:*; var _local17:*; _local11 = _arg8; _local12 = Math.floor((_arg4 / (_arg6 - 1))); _local13 = Math.floor((_arg5 / (_arg7 - 1))); _local14 = 0; while (_local14 < _arg7) { _local15 = 0; while (_local15 < _arg6) { if (_local11 > 0){ _local16 = new mTagButton(_arg1, "mEmbedLevelButton", 1, 2, (_arg2 + (_local12 * _local15)), (_arg3 + (_local13 * _local14)), 35, 70, ((_arg8 - _local11) < (_arg9 + 1)), String(((_arg8 - _local11) + 1)), 15, _arg10, ((_arg8 - _local11) + 1)); _local16.buttonText.height = 35; _local16.buttonText.y = -30; _local16.buttonText.setFont("Arlekino"); _local16.buttonText.setFontSize(19); _local16.buttonText.setBold(true); if (_arg9 > (_arg8 - _local11)){ _local17 = new mText(_arg1, (_arg2 + (_local12 * _local15)), ((_arg3 + (_local13 * _local14)) + 10), 50, 15, scoresArray[String((_arg8 - _local11))], "center", 15, 0xFFFFFF, false, 0); _local17.setFont("Arlekino"); }; if ((_arg8 - _local11) == _arg9){ _local16.setOnOff(false); }; }; _local11--; _local15++; }; _local14++; }; } public function loadEmbedLevel(_arg1:Number):void{ var tempButton:*; var fNumber = _arg1; if (loadLevel(levels.getLevel(fNumber), ("Level " + String(fNumber)))){ currentLevel = fNumber; tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 50, 485, 50, 20, true, "back", 15, function (){ thisGame.clearAll(); loadLevelSelectScreen(); }); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 650, 485, 50, 20, true, "reset", 15, function (){ resetLevel(); }); loadHelp(currentLevel); }; } public function getParNumByChildNum(_arg1:XML, _arg2:String, _arg3:Number, _arg4:String):Number{ var _local5:Number; var _local6:*; _local5 = NaN; _local6 = 0; while (_local6 < _arg1.child(_arg2)[_arg3].attributes().length()) { if (_arg4 == _arg1.child(_arg2)[_arg3].@[("par" + _local6)]){ _local5 = _local6; }; _local6++; }; return (_local5); } public function setVisibleEditables(_arg1:Array):void{ var _local2:*; _local2 = 0; while (_local2 < _arg1.length) { if (String(_arg1[_local2]).substr(0, 8) == "editable"){ editablesArray[Number(_arg1[_local2].substr(8, (_arg1[_local2].length - 8)))].visible = true; }; _local2++; }; propertiesPanel.refreshAll(); } public function sendScores():void{ var o:Object; var boardID:String; var totalScores:*; var i:*; o = {n:[10, 6, 15, 5, 1, 11, 12, 10, 9, 14, 10, 2, 3, 9, 15, 6], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, "a6f51bca9ea239f6"); totalScores = 0; i = 0; while (i < 50) { totalScores = (totalScores + scoresArray[i]); i = (i + 1); }; MochiScores.showLeaderboard({boardID:boardID, score:totalScores}); } public function processLevelSendResponse(_arg1:String):void{ var tempDialog:*; var fResponse = _arg1; if (fResponse == "file exist"){ tempDialog = new mDialogWindow(game.rootMovie, "This level name is occupied", "Ok", function (){ var tempInput:*; tempInput = new mInputWindow(game.rootMovie, "Send level:", sendLevel, function (){ thisGame.clearAll(); loadEditor(level); }, "Level name:", "level1", "Your name:", "name"); }); } else { if (fResponse == "file recorded"){ utils.sendByteArray(utils.PNGEncode(screenShot), ((((savePNGScriptUrl + "?filename=") + levelName) + ".png&code=") + gameCode), processPNGSendResponse); } else { tempDialog = new mDialogWindow(game.rootMovie, "Error, try later", "Ok", function (){ thisGame.clearAll(); loadEditor(level); }); }; }; } public function sendLevel(_arg1:String, _arg2:String):void{ var _local3:*; levelName = _arg1; _local3 = new URLVariables(); _local3.level = level.toXMLString(); _local3.levelname = _arg1; _local3.creatorname = _arg2; _local3.code = gameCode; utils.sendUrlVariables(_local3, saveLevelScriptUrl, processLevelSendResponse); } public function loadLevelSelectScreen():void{ var tempText:*; var tempButton:*; var totalScores:*; var i:*; game.levelEngine.addFon(); tempText = new mText(game.rootMovie, 350, 40, 200, 50, "Select a level", "center", 30, 0xFFFFFF, false, 0); tempText.setFont("Love Letters"); createButtonMatrix(game.rootMovie, 50, 100, 600, 300, 10, 5, 50, levelsCompleted, loadEmbedLevel); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 50, 485, 50, 20, true, "back", 15, function (){ thisGame.clearAll(); thisGame.loadTitleMenu(); }); totalScores = 0; i = 0; while (i < 50) { totalScores = (totalScores + scoresArray[i]); i = (i + 1); }; tempText = new mText(game.rootMovie, 350, 455, 300, 50, ("Total score: " + String(totalScores)), "center", 30, 0xFFFFFF, false, 0); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 350, 485, 130, 20, true, "send scores", 15, function (){ sendScores(); }); tempText.setFont("Love Letters"); game.soundEngine.addButtons(); game.soundEngine.playMusic("track2"); } public function update(_arg1:Event):void{ var _local2:*; if (((!(game.globalPause)) && (!(game.awayPause.visible)))){ if (timerCount){ if (timerTth > 0){ timerTth--; }; timerCount.newText(("Score: " + String(Math.floor((timerTth / 30))))); }; }; if (draggedObject){ draggedObject.x = (fon.mouseX + draggedDeltaX); draggedObject.y = (fon.mouseY + draggedDeltaY); }; if (rotatedObject){ _local2 = new b2Vec2((fon.mouseX - rotatedObject.x), (fon.mouseY - rotatedObject.y)); rotatedObject.rotation = (((_local2.GetAngle() * 180) / Math.PI) + rotatedDeltaAngle); }; if (paintSprite){ paintSprite.graphics.clear(); paintSprite.graphics.lineStyle(3, 0xFFFFFF); if (pressed){ if (paintArray[currentElement] == 1){ paintSprite.graphics.moveTo(startX, startY); paintSprite.graphics.lineTo(fon.mouseX, fon.mouseY); }; if (paintArray[currentElement] == 2){ paintSprite.graphics.moveTo(startX, startY); paintSprite.graphics.lineTo(fon.mouseX, fon.mouseY); paintSprite.graphics.drawCircle(startX, startY, new b2Vec2((startX - fon.mouseX), (startY - fon.mouseY)).Length()); }; }; }; if (webPaintSprite){ webPaintSprite.graphics.clear(); }; if (fon){ fon.fon1.x = (-(fon.mouseX) / 70); fon.fon1.y = (-(fon.mouseY) / 52.5); }; } public function saveProgress():void{ utils.saveVar(game.sharedObjectName, "levComp", levelsCompleted, "scores", scoresArray); } public function loadEditorViewInterface():void{ var tempButton:*; tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 50, 485, 50, 20, true, "back", 15, function (){ loadEditor(level); }); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 650, 485, 50, 20, true, "reset", 15, function (){ resetLevel(); }); } public function frontPaintSprite():void{ fon.swapChildren(paintSprite, fon.getChildAt((fon.numChildren - 1))); } public function loadEditor(_arg1:XML):void{ var tempButton:*; var i:*; var tempPoint:*; var tempEditable:*; var fXML = _arg1; thisGame.clearAll(); addFon(); game.addPlayerUnit(0, 0); paintSprite = new Sprite(); fon.addChild(paintSprite); mainPanel = game.interfaceEngine.addPanel(game.rootMovie, new mPanelBack(), -60, 0, 0, 0, 75, 100, 0.3); mainPanel.x = mainPanelX; mainPanel.y = mainPanelY; mainPanel.fixed = mainPanelFixed; elementsPanel = game.interfaceEngine.addButtonPanel(game.rootMovie, new mPanelBack(), 680, 0, 590, 0, 110, 525, 0.3, 5, 30); elementsPanel.x = elementsPanelX; elementsPanel.y = elementsPanelY; elementsPanel.fixed = elementsPanelFixed; propertiesPanel = game.interfaceEngine.addButtonPanel(game.rootMovie, new mPanelBack(), 0, 505, 0, 455, 590, 100, 0.3, 5, 45); propertiesPanel.x = propertiesPanelX; propertiesPanel.y = propertiesPanelY; propertiesPanel.fixed = propertiesPanelFixed; tempButton = new mButton(mainPanel, "mButtonBack", 1, 1, 35, 40, 60, 20, true, "test", 15, function (){ testLevel(); }); tempButton = new mButton(mainPanel, "mButtonBack", 1, 1, 35, 62.5, 60, 20, true, "clear", 15, function (){ new mDialogWindow(game.rootMovie, "right?", "yes", function (){ thisGame.clearAll(); level = <level></level> ; loadEditor(level); }, "no", function (){ }); }); tempButton = new mButton(mainPanel, "mButtonBack", 1, 1, 35, 85, 60, 20, true, "menu", 15, function (){ thisGame.clearAll(); thisGame.loadTitleMenu(); }); fon.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); fon.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); startX = (startY = 0); draggedObject = null; draggedDeltaX = 0; draggedDeltaY = 0; draggedStartX = 0; draggedStartY = 0; rotatedObject = null; rotatedDeltaAngle = 0; rotatedStartAngle = 0; elementsPanel.addSlicer(); i = 0; while (i < funcArray.length) { tempPoint = elementsPanel.getNextXY(30, 30); tempButton = new mTagButton(elementsPanel, "mLevelEditorButtonsBack", (i + 1), (i + 1), tempPoint.x, tempPoint.y, 30, 30, true, "", 15, refreshPanels, i); elementsPanel.addButton(tempButton); i = (i + 1); }; elementsPanel.allocation.visible = true; i = 0; while (i < editArgsArray.length) { tempPoint = propertiesPanel.getNextXY(160, 20); tempEditable = new mEditable(propertiesPanel, tempPoint.x, tempPoint.y, editArgsArray[i][0], editArgsArray[i][1], editArgsArray[i][2], editArgsArray[i][3], editArgsArray[i][4]); editablesArray[editablesArray.length] = tempEditable; propertiesPanel.addButton(tempEditable); i = (i + 1); }; elementsPanel.addSlicer(); tempPoint = elementsPanel.getNextXY(100, 30); tempButton = new mButton(elementsPanel, "mDynStatButtonBack", 1, 2, tempPoint.x, tempPoint.y, 100, 30, true, "", 15, function (){ isStatic = !(isStatic); }); tempButton.setOnOff(isStatic); elementsPanel.addSlicer(); tempPoint = elementsPanel.getNextXY(30, 30); tempButton = new mTagButton(elementsPanel, "mLevelEditorButtonsBack", 11, 11, tempPoint.x, tempPoint.y, 30, 30, true, "", 15, refreshPanels, 100); elementsPanel.addButton(tempButton); tempPoint = elementsPanel.getNextXY(30, 30); tempButton = new mTagButton(elementsPanel, "mLevelEditorButtonsBack", 12, 12, tempPoint.x, tempPoint.y, 30, 30, true, "", 15, refreshPanels, 101); elementsPanel.addButton(tempButton); tempPoint = elementsPanel.getNextXY(30, 30); tempButton = new mTagButton(elementsPanel, "mLevelEditorButtonsBack", 13, 13, tempPoint.x, tempPoint.y, 30, 30, true, "", 15, refreshPanels, 102); elementsPanel.addButton(tempButton); elementsPanel.addSlicer(); elementsPanel.addSlicer(); refreshPanels(currentElement); loadXML(fXML); frontPaintSprite(); game.globalPause = true; } } }//package main
Section 99
//mLevelViewer (main.mLevelViewer) package main { import flash.display.*; import flash.net.*; public class mLevelViewer { public const endX:Number = 525; public const endY:Number = 375; public const HEIGHT = 525; public const WIDTH = 700; public const columnsPerPage:Number = 2; public const rowsPerPage:Number = 3; public const startX:Number = 175; public const startY:Number = 125; public var onErrorProc:Function; public var scriptUrl:String; public var currentPage:Number; public var thisGame:MovieClip; public var lastNow:Boolean; public var currentLevelName:String; public var gameCode:String; public function mLevelViewer(_arg1:String, _arg2:String, _arg3:MovieClip, _arg4:Function):void{ currentPage = 1; lastNow = true; thisGame = _arg3; scriptUrl = _arg1; gameCode = _arg2; onErrorProc = _arg4; currentLevelName = ""; } public function rateLevel(_arg1:Number):void{ sendLevelTask(((("RATE_LEVEL_" + currentLevelName) + "_") + String(_arg1)), rateResponseHandler); } public function rateResponseHandler(_arg1:String):void{ var newRating:String; var tempDialog:*; var fResponse = _arg1; if (fResponse.substr(0, 10) == "NEW_RATING"){ newRating = fResponse.substr(11, (fResponse.length - 11)); tempDialog = new mDialogWindow(game.rootMovie, "New rating:", "ok", function (){ game.levelEngine.thisGame.clearAll(); loadViewer(); }); utils.addRatingStars(tempDialog, 300, 292.5, Number(newRating)); } else { tempDialog = new mDialogWindow(game.rootMovie, "Error!", "ok", function (){ game.levelEngine.thisGame.clearAll(); loadViewer(); }); }; } public function loadRatingChanger():void{ var tempDialog:*; tempDialog = new mDialogWindow(game.rootMovie, "Level Completed! Please, rate it!", "1", function (){ rateLevel(1); }, "2", function (){ rateLevel(2); }, "3", function (){ rateLevel(3); }, "4", function (){ rateLevel(4); }, "5", function (){ rateLevel(5); }); } public function createPageButtons(_arg1:String):void{ var pages:*; var tempText:*; var tempButton:*; var tempDialog:*; var fResponse = _arg1; if (((!(isNaN(Number(fResponse)))) && (!((fResponse == ""))))){ pages = utils.getPages(Number(fResponse), (rowsPerPage * columnsPerPage)); tempText = new mText(game.rootMovie, (WIDTH / 2), (HEIGHT - 40), 250, 25, (((String(currentPage) + " of ") + String(pages)) + " pages"), "center", 20, 0xFFFFFF, false, 0); tempText.setFont("Love Letters"); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, ((WIDTH / 2) - 150), (HEIGHT - 40), 50, 20, (currentPage > 1), "prev", 15, function (){ thisGame.clearAll(); currentPage--; loadViewer(); }); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, ((WIDTH / 2) + 150), (HEIGHT - 40), 50, 20, (currentPage < pages), "next", 15, function (){ thisGame.clearAll(); currentPage++; loadViewer(); }); if (lastNow){ sendLevelTask(((("GET_LAST_LEVELS_" + String((((currentPage - 1) * rowsPerPage) * columnsPerPage))) + "_") + String((rowsPerPage * columnsPerPage))), createLevelButtons); } else { sendLevelTask(((("GET_TOP_LEVELS_" + String((((currentPage - 1) * rowsPerPage) * columnsPerPage))) + "_") + String((rowsPerPage * columnsPerPage))), createLevelButtons); }; } else { tempDialog = new mDialogWindow(game.rootMovie, "Error, try later", "Ok", function (){ onErrorProc(); }); }; } public function loadViewer():void{ var tempButton:*; var tempText:*; game.levelEngine.addFon(); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 50, (HEIGHT - 40), 50, 20, true, "back", 15, function (){ thisGame.clearAll(); thisGame.loadTitleMenu(); }); if (lastNow){ tempText = new mText(game.rootMovie, 120, 40, 200, 50, "Last levels", "left", 30, 0xFFFFFF, false, 0); tempText.setFont("Love Letters"); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 250, 30, 100, 20, false, "last levels", 15, function (){ lastNow = true; thisGame.clearAll(); loadViewer(); }); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 360, 30, 100, 20, true, "top levels", 15, function (){ lastNow = false; thisGame.clearAll(); loadViewer(); }); } else { tempText = new mText(game.rootMovie, 120, 40, 200, 50, "Top levels", "left", 30, 0xFFFFFF, false, 0); tempText.setFont("Love Letters"); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 250, 30, 100, 20, true, "last levels", 15, function (){ lastNow = true; thisGame.clearAll(); loadViewer(); }); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 360, 30, 100, 20, false, "top levels", 15, function (){ lastNow = false; thisGame.clearAll(); loadViewer(); }); }; sendLevelTask("GET_LEVEL_COUNT", createPageButtons); currentLevelName = ""; } public function sendLevelTask(_arg1:String, _arg2:Function):void{ var _local3:*; _local3 = new URLVariables(); _local3.task = _arg1; _local3.code = gameCode; utils.sendUrlVariables(_local3, scriptUrl, _arg2); } public function loadLevelFromUrl(_arg1:String, _arg2:String):void{ utils.sendUrlVariables(null, _arg1, loadLevelWithInterface); currentLevelName = _arg2; } public function loadLevelWithInterface(_arg1):void{ var tempButton:*; var tempDialog:*; var fXML = _arg1; game.levelEngine.currentLevel = 0; if (game.levelEngine.loadLevel(fXML, currentLevelName)){ tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 50, 485, 50, 20, true, "back", 15, function (){ thisGame.clearAll(); loadViewer(); }); tempButton = new mButton(game.rootMovie, "mButtonBack", 1, 1, 650, 485, 50, 20, true, "reset", 15, function (){ game.levelEngine.resetLevel(); }); } else { tempDialog = new mDialogWindow(game.rootMovie, "Error!", "ok", function (){ game.levelEngine.thisGame.clearAll(); loadViewer(); }); }; } public function createLevelButtons(_arg1:String):void{ var tempXML:XML; var deltaX:*; var deltaY:*; var i:*; var j:*; var k:*; var tempLevelButton:*; var tempDialog:*; var fResponse = _arg1; if (fResponse.substr(0, 8) == "<levels>"){ tempXML = new XML(fResponse); deltaX = ((endX - startX) / (columnsPerPage - 1)); deltaY = ((endY - startY) / (rowsPerPage - 1)); i = 0; while (i < columnsPerPage) { j = 0; while (j < rowsPerPage) { k = ((i * rowsPerPage) + j); if (tempXML.level[k] != undefined){ tempLevelButton = new mLevelButton(game.rootMovie, "mLevelButtonBack", 1, 1, (startX + (deltaX * i)), (startY + (deltaY * j)), tempXML.level[k].@creator, tempXML.level[k].@rating, tempXML.level[k].@pngurl, loadLevelFromUrl, tempXML.level[k].@levelurl, tempXML.level[k].@name); }; j = (j + 1); }; i = (i + 1); }; } else { tempDialog = new mDialogWindow(game.rootMovie, "Error, try later", "Ok", function (){ thisGame.clearAll(); thisGame.loadTitleMenu(); }); }; } } }//package main
Section 100
//mMovie (main.mMovie) package main { import flash.display.*; import flash.events.*; import flash.utils.*; public class mMovie extends mBaseInterface { public const HEIGHT = 525; public const WIDTH = 700; public var movieParent:MovieClip; public var movie:MovieClip; public var completed:Boolean;// = false public var proc:Function; public var skipButton:mButton; public var tth:Number;// = 0 public function mMovie(_arg1:MovieClip, _arg2:String, _arg3, _arg4:Number, _arg5:Boolean, _arg6:String, _arg7:Function):void{ var fParent = _arg1; var fClassName = _arg2; var fX = _arg3; var fY = _arg4; var fSkip = _arg5; var fLink = _arg6; var fProc = _arg7; completed = false; tth = 0; super(); movieParent = fParent; movie = new ((getDefinitionByName(fClassName) as Class)); movie.x = fX; movie.y = fY; movieParent.addChild(movie); movie.play(); if (fSkip){ skipButton = new mButton(movieParent, "mButtonBack", 1, 1, (WIDTH / 2), (HEIGHT * 0.9), 50, 20, true, "skip", 15, function (){ movieComplete(); }); }; if (fLink != ""){ movie.buttonMode = true; movie.addEventListener(MouseEvent.CLICK, function (){ utils.goToUrl(fLink); }); }; proc = fProc; tth = 5; } public function destroy():void{ baseDestroy(); movieParent.removeChild(movie); if (skipButton){ movieParent.removeChild(skipButton); }; } public function movieComplete():void{ completed = true; tth = 5; } override public function update():void{ if (completed){ tth--; if (tth == 0){ destroy(); proc(); }; } else { if (movie.currentFrame == movie.totalFrames){ movieComplete(); movie.stop(); }; }; } } }//package main
Section 101
//MochiBot (main.MochiBot) package main { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package main
Section 102
//mPanel (main.mPanel) package main { import flash.display.*; import flash.events.*; public class mPanel extends mBaseInterface { var speedKoeff:Number; var obj:MovieClip; var mouseOn:Boolean;// = false var tY1; var tX; var fixed:Boolean;// = false var tY; var tX1; var fixButton:mButton; public function mPanel(_arg1, _arg2:MovieClip, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9:Number):void{ var fParent = _arg1; var fObj = _arg2; var fX = _arg3; var fY = _arg4; var fX1 = _arg5; var fY1 = _arg6; var fWidth = _arg7; var fHeight = _arg8; var fSpeedKoeff = _arg9; mouseOn = false; fixed = false; super(); obj = fObj; tX = (x = fX); tY = (y = fY); tX1 = fX1; tY1 = fY1; speedKoeff = fSpeedKoeff; obj.width = fWidth; obj.height = fHeight; fParent.addChild(this); addChild(obj); addEventListener(MouseEvent.MOUSE_OVER, function (){ mouseOn = true; }); addEventListener(MouseEvent.MOUSE_OUT, function (){ mouseOn = false; }); fixButton = new mButton(this, "mFixButtonBack", 1, 2, 15, 15, 15, 15, true, "", 15, function (){ fixed = !(fixed); }); } override public function update():void{ if (!fixed){ if (mouseOn){ x = (x + (speedKoeff * (tX1 - x))); y = (y + (speedKoeff * (tY1 - y))); } else { x = (x + (speedKoeff * (tX - x))); y = (y + (speedKoeff * (tY - y))); }; }; } } }//package main
Section 103
//mPhysEngine (main.mPhysEngine) package main { import flash.display.*; import flash.events.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import flash.utils.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class mPhysEngine { public const MAX_POSITION = 150; public var jointList:mJoint; public var world:b2World; public var physScale:Number;// = 30 public var jointCount:Number; public var contactListener; public var iterations:int;// = 10 public var physSprite:Sprite; public var timeStep:Number;// = 0.0285714285714286 public var movieParent:MovieClip; public function mPhysEngine(_arg1:MovieClip):void{ var _local2:b2AABB; var _local3:b2Vec2; var _local4:Boolean; physScale = 30; iterations = 10; timeStep = (1 / 35); contactListener = new b2ContactListener(); super(); _local2 = new b2AABB(); _local2.lowerBound.Set(-100, -100); _local2.upperBound.Set(100, 100); _local3 = new b2Vec2(0, 9.8); _local4 = true; world = new b2World(_local2, _local3, _local4); world.SetContactListener(contactListener); movieParent = _arg1; } public function createBodyFromArray(_arg1:Array, _arg2:Boolean):b2Body{ var _local3:*; var _local4:Number; var _local5:*; var _local6:*; var _local7:*; _local3 = new Array(); _local4 = 1; _local5 = 1; while (_local5 < _arg1.length) { _local6 = new b2Vec2((_arg1[_local5].x - _arg1[(_local5 - 1)].x), (_arg1[_local5].y - _arg1[(_local5 - 1)].y)); if (_local6.Length() > 5){ if ((_local5 - _local4) < 0){ _local4 = _local5; }; _local6 = new b2Vec2((_arg1[_local5].x - _arg1[(_local5 - _local4)].x), (_arg1[_local5].y - _arg1[(_local5 - _local4)].y)); _local7 = (_local3[_local3.length] = addRectangle(((_arg1[_local5].x + _arg1[(_local5 - _local4)].x) / 2), ((_arg1[_local5].y + _arg1[(_local5 - _local4)].y) / 2), _local6.Length(), 5, ((_local6.GetAngle() * 180) / Math.PI), false, false)); addUserData(_local7.m_shapeList, game.rootMovie, "mWebMovie", 0, 0, _local6.Length(), 5, 0); _local4 = 1; } else { _local4++; }; _local5++; }; return (connectBodiesFromArray(_local3)); } public function addDotJoint(_arg1:b2Body, _arg2:b2Body, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean):b2RevoluteJoint{ var _local8:b2RevoluteJointDef; var _local9:b2RevoluteJoint; _local8 = new b2RevoluteJointDef(); _local8.Initialize(_arg1, _arg2, new b2Vec2((_arg3 / physScale), (_arg4 / physScale))); _local8.motorSpeed = _arg5; _local8.maxMotorTorque = _arg6; _local8.enableMotor = _arg7; _local9 = (world.CreateJoint(_local8) as b2RevoluteJoint); return (_local9); } public function addDistanceJoint(_arg1:b2Body, _arg2:b2Body, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):b2DistanceJoint{ var _local7:b2DistanceJointDef; var _local8:b2DistanceJoint; _local7 = new b2DistanceJointDef(); _local7.Initialize(_arg1, _arg2, new b2Vec2((_arg3 / physScale), (_arg4 / physScale)), new b2Vec2((_arg5 / physScale), (_arg6 / physScale))); _local8 = (world.CreateJoint(_local7) as b2DistanceJoint); return (_local8); } public function setFiterShape(_arg1:b2Shape, _arg2:uint, _arg3:uint):void{ _arg1.m_filter.categoryBits = _arg2; _arg1.m_filter.maskBits = _arg3; } public function addMovieDistanceJoint(_arg1, _arg2, _arg3, _arg4:Number):void{ var _local5:*; _local5 = new mDistanceJoint(game.rootMovie, _arg1, _arg2, _arg3, _arg4); } public function DebugPhysDraw(_arg1:MovieClip):void{ var _local2:b2DebugDraw; physSprite = new Sprite(); physSprite.mouseEnabled = false; physSprite.visible = false; _arg1.addChild(physSprite); _local2 = new b2DebugDraw(); _local2.m_sprite = physSprite; _local2.m_drawScale = 30; _local2.m_fillAlpha = 0.3; _local2.m_lineThickness = 1; _local2.m_drawFlags = (b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit); world.SetDebugDraw(_local2); } public function addDataRectangle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:String, _arg8:Number):b2Body{ var _local9:b2BodyDef; var _local10:b2PolygonDef; var _local11:b2Body; var _local12:*; var _local13:*; _local9 = new b2BodyDef(); _local10 = new b2PolygonDef(); _local12 = Number(_arg5.substr(0, (_arg5.length - 3))); _local9.position.Set((_arg1 / physScale), (_arg2 / physScale)); _local9.angle = ((_local12 * Math.PI) / 180); _local10.SetAsBox(((_arg3 / physScale) / 2), ((_arg4 / physScale) / 2)); _local10.friction = 0.7; _local10.restitution = 0.3; if (!_arg6){ _local10.density = 10; }; _local11 = world.CreateBody(_local9); _local11.CreateShape(_local10); _local13 = new ((getDefinitionByName(_arg7) as Class)); _local13.height = _arg4; _local13.width = _arg3; _local13.x = _arg1; _local13.y = _arg2; _local13.rotation = _local12; movieParent.addChild(_local13); _local13.gotoAndStop(_arg8); _local11.m_shapeList.m_userData = _local13; _local11.SetMassFromShapes(); return (_local11); } public function tryToConnect(_arg1:b2Body, _arg2:Boolean):Boolean{ var _local3:*; var _local4:*; var _local5:b2ContactEdge; _local3 = false; while (getContactEdgesCount(_arg1, _arg2) > 0) { _local4 = false; _local5 = _arg1.m_contactList; while (_local5) { _local5.contact.Update(contactListener); if (_local5.contact.m_manifoldCount > 0){ if (!_local4){ if (_local5.other.IsStatic() == _arg2){ concludeBodies(_arg1, _local5.other); _local4 = true; _local3 = true; }; }; }; _local5 = _local5.next; }; }; return (_local3); } public function addRectangle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Boolean, _arg7:Boolean):b2Body{ var _local8:b2BodyDef; var _local9:b2PolygonDef; var _local10:b2Body; _local8 = new b2BodyDef(); _local9 = new b2PolygonDef(); _local8.position.Set((_arg1 / physScale), (_arg2 / physScale)); _local8.angle = ((_arg5 / 180) * Math.PI); _local8.fixedRotation = _arg7; _local9.SetAsBox(((_arg3 / physScale) / 2), ((_arg4 / physScale) / 2)); _local9.friction = 0.7; _local9.restitution = 0.3; if (!_arg6){ _local9.density = 10; }; _local10 = world.CreateBody(_local8); _local10.CreateShape(_local9); _local10.SetMassFromShapes(); return (_local10); } public function addCircle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean):b2Body{ var _local5:b2BodyDef; var _local6:b2CircleDef; var _local7:b2Body; _local5 = new b2BodyDef(); _local6 = new b2CircleDef(); _local5.position.Set((_arg1 / physScale), (_arg2 / physScale)); _local6.radius = (_arg3 / physScale); _local6.friction = 0.7; _local6.restitution = 0.3; if (!_arg4){ _local6.density = 10; }; _local7 = world.CreateBody(_local5); _local7.CreateShape(_local6); _local7.SetMassFromShapes(); return (_local7); } public function clearAll():void{ var _local1:b2Body; jointList = null; jointCount = 0; clearDebugSprite(); _local1 = world.m_bodyList; while (_local1) { world.DestroyBody(_local1); _local1 = _local1.m_next; }; } public function addCircleShape(_arg1:b2Body, _arg2:Number, _arg3:b2Vec2):b2Shape{ var _local4:b2CircleDef; _local4 = new b2CircleDef(); _local4.radius = (_arg2 / physScale); _local4.friction = 0.7; _local4.restitution = 0.3; _local4.density = 10; _local4.localPosition = new b2Vec2((_arg3.x / physScale), (_arg3.y / game.physEngine.physScale)); return (_arg1.CreateShape(_local4)); } public function addPolygon(... _args):b2Body{ var _local2:b2BodyDef; var _local3:b2PolygonDef; var _local4:b2Body; var _local5:*; _local2 = new b2BodyDef(); _local3 = new b2PolygonDef(); _local2.position.Set((_args[0] / physScale), (_args[1] / physScale)); _local3.vertexCount = ((_args.length - 3) / 2); _local5 = 0; while (_local5 < ((_args.length - 3) / 2)) { _local3.vertices[_local5] = new b2Vec2((_args[(2 + (_local5 * 2))] / physScale), (_args[(3 + (_local5 * 2))] / physScale)); _local5++; }; _local3.friction = 0.7; _local3.restitution = 0.3; if (!_args[(_args.length - 1)]){ _local3.density = 10; }; _local4 = world.CreateBody(_local2); _local4.CreateShape(_local3); _local4.SetMassFromShapes(); return (_local4); } public function addGearJoint(_arg1:b2Body, _arg2:b2Body, _arg3, _arg4, _arg5:Number):b2GearJoint{ var _local6:b2GearJointDef; var _local7:b2GearJoint; _local6 = new b2GearJointDef(); _local6.body1 = _arg1; _local6.body2 = _arg2; _local6.joint1 = _arg3; _local6.joint2 = _arg4; _local6.ratio = _arg5; _local7 = (world.CreateJoint(_local6) as b2GearJoint); return (_local7); } public function addDataCircle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Boolean, _arg5:String, _arg6:Number):b2Body{ var _local7:b2BodyDef; var _local8:b2CircleDef; var _local9:b2Body; var _local10:*; _local7 = new b2BodyDef(); _local8 = new b2CircleDef(); _local7.position.Set((_arg1 / physScale), (_arg2 / physScale)); _local8.radius = (_arg3 / physScale); _local8.friction = 0.7; _local8.restitution = 0.3; if (!_arg4){ _local8.density = 10; }; _local9 = world.CreateBody(_local7); _local9.CreateShape(_local8); _local10 = new ((getDefinitionByName(_arg5) as Class)); new ((getDefinitionByName(_arg5) as Class)).height = (_local10.width = (_arg3 * 2)); _local10.x = _arg1; _local10.y = _arg2; movieParent.addChild(_local10); _local10.gotoAndStop(_arg6); _local9.m_shapeList.m_userData = _local10; _local9.SetMassFromShapes(); return (_local9); } public function addPrismaticJoint(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):b2PrismaticJoint{ var _local5:b2PrismaticJointDef; var _local6:b2PrismaticJoint; _local5 = new b2PrismaticJointDef(); _local5.Initialize(_arg1, _arg2, _arg3.Multipled((1 / physScale)), _arg4); _local6 = (world.CreateJoint(_local5) as b2PrismaticJoint); return (_local6); } public function addPolygonShape(_arg1:b2Body, ... _args):b2Shape{ var _local3:b2PolygonDef; var _local4:*; _local3 = new b2PolygonDef(); _local3.vertexCount = (_args.length / 2); _local4 = 0; while (_local4 < (_args.length / 2)) { _local3.vertices[_local4] = new b2Vec2((_args[(_local4 * 2)] / physScale), (_args[((_local4 * 2) + 1)] / physScale)); _local4++; }; _local3.friction = 0.7; _local3.restitution = 0.3; _local3.density = 10; return (_arg1.CreateShape(_local3)); } public function update(_arg1:Event):void{ var _local2:b2Body; var _local3:mJoint; var _local4:*; if (((!(game.globalPause)) && (!(game.awayPause.visible)))){ world.Step(timeStep, iterations); _local2 = world.m_bodyList; while (_local2) { _local4 = _local2.m_shapeList; while (_local4) { if (_local4.m_userData != null){ _local4.m_userData.x = (_local2.LocalToGlobal(_local4.center).x * physScale); _local4.m_userData.y = (_local2.LocalToGlobal(_local4.center).y * physScale); _local4.m_userData.rotation = ((_local2.GetAngle() + _local4.angle) * (180 / Math.PI)); }; _local4 = _local4.GetNext(); }; if (_local2.GetPosition().Length() > MAX_POSITION){ }; _local2 = _local2.m_next; }; _local3 = jointList; while (_local3) { _local3.update(); _local3 = _local3.nextJoint; }; }; } public function isShapeContactBody(_arg1:b2Shape, _arg2:b2Body):Boolean{ var _local3:b2ContactEdge; _local3 = _arg1.m_body.m_contactList; while (_local3) { _local3.contact.Update(contactListener); if (_local3.contact.m_manifoldCount > 0){ if (_local3.other == _arg2){ return (true); }; }; _local3 = _local3.next; }; return (false); } public function getContactEdgesCount(_arg1:b2Body, _arg2:Boolean):Number{ var _local3:*; var _local4:b2ContactEdge; _local3 = 0; _local4 = _arg1.m_contactList; while (_local4) { if (_local4.other.IsStatic() == _arg2){ _local4.contact.Update(contactListener); if (_local4.contact.m_manifoldCount > 0){ _local3++; }; }; _local4 = _local4.next; }; return (_local3); } public function clearDebugSprite():void{ physSprite.graphics.clear(); } public function concludeBodies(_arg1:b2Body, _arg2:b2Body):b2Body{ var _local3:*; var _local4:*; var _local5:b2PolygonDef; var _local6:*; var _local7:*; var _local8:b2CircleDef; _local3 = _arg2.m_shapeList; while (_local3) { if (_local3.m_type == b2Shape.e_polygonShape){ _local4 = _local3.GetVertices(); _local5 = new b2PolygonDef(); _local5.friction = 0.7; _local5.restitution = 0.3; _local5.density = 10; _local5.vertexCount = (_local4.length / 2); _local6 = 0; while (_local6 < (_local4.length / 2)) { _local5.vertices[_local6] = _arg1.GlobalToLocal(_arg2.LocalToGlobal(_local4[_local6])); _local6++; }; _local5.userData = _local3.m_userData; _local7 = _arg1.CreateShape(_local5); }; if (_local3.m_type == b2Shape.e_circleShape){ _local8 = new b2CircleDef(); _local8.friction = 0.7; _local8.restitution = 0.3; _local8.density = 10; _local8.radius = _local3.m_radius; _local8.localPosition = _arg1.GlobalToLocal(_arg2.LocalToGlobal(_local3.center)); _local8.userData = _local3.m_userData; _local7 = _arg1.CreateShape(_local8); }; _local7.center = _arg1.GlobalToLocal(_arg2.LocalToGlobal(_local3.center)); _local7.angle = ((_arg2.GetAngle() + _local3.angle) - _arg1.GetAngle()); _local3 = _local3.GetNext(); }; _arg1.SetMassFromShapes(); world.DestroyBody(_arg2); return (_arg1); } public function GetEdgesCount(_arg1:b2Shape):Number{ var _local2:*; var _local3:b2ContactEdge; _local2 = 0; _local3 = _arg1.m_body.m_contactList; while (_local3) { _local2++; _local3 = _local3.next; }; return (_local2); } public function GetCollisionsCount(_arg1:b2Shape):Number{ var _local2:*; var _local3:b2ContactEdge; _local2 = 0; _local3 = _arg1.m_body.m_contactList; while (_local3) { _local3.contact.Update(contactListener); if (_local3.contact.m_manifoldCount > 0){ _local2++; }; _local3 = _local3.next; }; return (_local2); } public function addUserData(_arg1:b2Shape, _arg2:MovieClip, _arg3:String, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):MovieClip{ var _local9:*; _local9 = new ((getDefinitionByName(_arg3) as Class)); _local9.x = _arg4; _local9.y = _arg5; _local9.width = _arg6; _local9.height = _arg7; _arg2.addChild(_local9); _arg1.m_userData = _local9; _arg1.center = new b2Vec2((_arg4 / physScale), (_arg5 / physScale)); _arg1.angle = ((_arg8 / 180) * Math.PI); return (_local9); } public function connectBodiesFromArray(_arg1:Array):b2Body{ var _local2:b2Body; var _local3:*; _local3 = 1; while (_local3 < _arg1.length) { _local2 = concludeBodies(_arg1[_local3], _arg1[(_local3 - 1)]); _local3++; }; if (_arg1.length == 1){ _local2 = _arg1[0]; }; return (_local2); } public function addMovieDotJoint(_arg1, _arg2, _arg3, _arg4:Number):void{ var _local5:*; _local5 = new mDotJoint(game.rootMovie, _arg1, _arg2, (_arg3 * _arg4)); } } }//package main
Section 104
//mPlayerUnit (main.mPlayerUnit) package main { import flash.display.*; import flash.events.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class mPlayerUnit extends mUnit { public const MIN_CURRENT_LENGTH = 10; public const MAX_LENGTH = 2500; public const PARTICLE_TTH = 2; public const MAX_POSITION = 50; public const MAX_CURRENT_LENGTH = 500; public const MAX_ANGLE = 0.01; public var currentTotalLength:Number;// = 0 public var lengthArray:Array; public var paintAngle:Number;// = 0 public var totalLength:Number;// = 0 public var particleTth;// = 2 public var paintArray:Array; public var prevPaintAngle:Number;// = 0 public var painting:Boolean;// = false public var bodyArray:Array; public function mPlayerUnit(_arg1:MovieClip, _arg2, _arg3:Number, _arg4:String):void{ bodyArray = new Array(); lengthArray = new Array(); painting = false; paintArray = new Array(); paintAngle = 0; prevPaintAngle = 0; particleTth = PARTICLE_TTH; totalLength = 0; currentTotalLength = 0; super(_arg1, _arg2, _arg3, _arg4); game.gameStage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); game.gameStage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); totalLength = 0; currentTotalLength = 0; } public function mouseUpHandler(_arg1:MouseEvent):void{ endPaint(); } public function endPaint():void{ if (game.soundEngine){ game.soundEngine.stopChannel(0); }; game.particleEngine.addExp(game.rootMovie.mouseX, game.rootMovie.mouseY, 6, 15, 20, 0xFFFFFF); painting = false; if (paintArray.length > 0){ if (currentTotalLength > MIN_CURRENT_LENGTH){ paintArray[paintArray.length] = new b2Vec2(game.rootMovie.mouseX, game.rootMovie.mouseY); bodyArray[bodyArray.length] = game.physEngine.createBodyFromArray(paintArray, true); lengthArray[lengthArray.length] = currentTotalLength; }; }; while (paintArray.length > 0) { paintArray.pop(); }; currentTotalLength = 0; } public function mouseDownHandler(_arg1:MouseEvent):void{ if (!game.globalPause){ painting = true; if (game.soundEngine){ game.soundEngine.playChannel(0, "spark"); }; paintArray[0] = new b2Vec2(game.rootMovie.mouseX, game.rootMovie.mouseY); if (game.levelEngine.webBar){ if (game.levelEngine.webBar.getProcents() < 1){ game.levelEngine.webBar.blink(); endPaint(); }; }; }; } override public function update():void{ var _local1:Number; var _local2:Number; var _local3:*; var _local4:*; super.update(); _local1 = 0; _local2 = 0; if (((game.inputEngine.isKeyDown(37)) || (game.inputEngine.isKeyDown(65)))){ _local1--; }; if (((game.inputEngine.isKeyDown(39)) || (game.inputEngine.isKeyDown(68)))){ _local1++; }; if (((game.inputEngine.isKeyDown(38)) || (game.inputEngine.isKeyDown(87)))){ _local2++; } else { notJump(); }; if (((game.inputEngine.isKeyDown(40)) || (game.inputEngine.isKeyDown(83)))){ _local2--; }; if (_local2 > 0){ jump(_local1); }; if (_local1 == -1){ left(); }; if (_local1 == 1){ right(); }; if (_local2 < 0){ down(0); }; totalLength = 0; if (unitMovie.y > (utils.HEIGHT * 1.5)){ game.levelEngine.resetLevel(); }; if ((((unitMovie.x > (utils.WIDTH * 1.5))) || ((unitMovie.x < (-(utils.WIDTH) * 0.5))))){ game.levelEngine.resetLevel(); }; _local3 = 0; while (_local3 < bodyArray.length) { if ((bodyArray[_local3] is b2Body)){ if (bodyArray[_local3].GetPosition().Length() > MAX_POSITION){ game.physEngine.world.DestroyBody(bodyArray[_local3]); bodyArray[_local3] = bodyArray[0]; bodyArray.shift(); lengthArray[_local3] = lengthArray[0]; lengthArray.shift(); }; totalLength = (totalLength + lengthArray[_local3]); } else { bodyArray[_local3] = bodyArray[0]; bodyArray.shift(); lengthArray[_local3] = lengthArray[0]; lengthArray.shift(); }; _local3++; }; totalLength = (totalLength + currentTotalLength); game.levelEngine.webBar.setProcents((100 - ((totalLength * 100) / MAX_LENGTH))); if (painting){ particleTth--; if (particleTth < 0){ game.particleEngine.addExp(game.rootMovie.mouseX, game.rootMovie.mouseY, 6, 15, 20, 0xFFFFFF); particleTth = PARTICLE_TTH; }; _local4 = new b2Vec2((game.rootMovie.mouseX - paintArray[(paintArray.length - 1)].x), (-(game.rootMovie.mouseY) + paintArray[(paintArray.length - 1)].y)); paintAngle = _local4.GetAngle(); if (Math.abs((paintAngle - prevPaintAngle)) > MAX_ANGLE){ paintArray[paintArray.length] = new b2Vec2(game.rootMovie.mouseX, game.rootMovie.mouseY); prevPaintAngle = paintAngle; }; currentTotalLength = 0; game.levelEngine.webPaintSprite.graphics.lineStyle(3, 0xFFFFFF); game.levelEngine.webPaintSprite.graphics.moveTo(paintArray[0].x, paintArray[0].y); _local3 = 1; while (_local3 < paintArray.length) { game.levelEngine.webPaintSprite.graphics.lineTo(paintArray[_local3].x, paintArray[_local3].y); currentTotalLength = (currentTotalLength + new b2Vec2((paintArray[_local3].x - paintArray[(_local3 - 1)].x), (paintArray[_local3].y - paintArray[(_local3 - 1)].y)).Length()); _local3++; }; game.levelEngine.webPaintSprite.graphics.lineTo(game.rootMovie.mouseX, game.rootMovie.mouseY); currentTotalLength = (currentTotalLength + new b2Vec2((game.rootMovie.mouseX - paintArray[(paintArray.length - 1)].x), (game.rootMovie.mouseY - paintArray[(paintArray.length - 1)].y)).Length()); if (game.levelEngine.webBar.getProcents() < 1){ game.levelEngine.webBar.setProcents(0); game.levelEngine.webBar.blink(); endPaint(); }; if (currentTotalLength > MAX_CURRENT_LENGTH){ endPaint(); }; }; } override public function destroy():void{ super.destroy(); game.gameStage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); game.gameStage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } } }//package main
Section 105
//mPreloader (main.mPreloader) package main { import flash.display.*; import flash.events.*; import flash.net.*; import CPMStar.*; public class mPreloader extends MovieClip { private const CPMStarContentSpotID:String = "2510QED6F07C3"; public var lineWidth;// = 600 public var loadingComplete:Boolean;// = false public var colorBar:mColorBar; public function mPreloader(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean){ var _local6:*; var _local7:DisplayObject; lineWidth = 600; loadingComplete = false; super(); lineWidth = _arg4; colorBar.x = ((_arg2 / 2) - (_arg4 / 2)); colorBar.y = (_arg3 - 40); colorBar.width = 5; if (_arg5){ trace("Ads allowed!!!"); _local6 = new mAdBox(); _arg1.addChild(_local6); _local6.x = ((_arg2 / 2) - (_local6.width / 2)); _local6.y = ((_arg3 / 2) - (_local6.height / 2)); _local7 = new AdLoader(CPMStarContentSpotID); _local6.addChild(_local7); }; addEventListener(Event.ENTER_FRAME, update, false, 0, true); _arg1.addChild(this); } public function update(_arg1:Event):void{ var _local2:Number; var _local3:Number; _local2 = stage.loaderInfo.bytesLoaded; _local3 = stage.loaderInfo.bytesTotal; if (_local2 == _local3){ if (colorBar.width > (lineWidth - 21)){ colorBar.width = lineWidth; removeEventListener(Event.ENTER_FRAME, update); loadingComplete = true; } else { colorBar.width = (colorBar.width + 10); }; } else { colorBar.width = ((_local2 / _local3) * (lineWidth - 100)); }; } } }//package main
Section 106
//mRecycle (main.mRecycle) package main { import flash.display.*; public class mRecycle extends mBaseUnit { public const DELAY_TTH:Number = 5; public var delayTth:Number;// = 5 public var recycle:MovieClip; public function mRecycle(_arg1:MovieClip, _arg2:Number, _arg3:Number):void{ delayTth = DELAY_TTH; super(); recycle = new mRecycleMovie(); recycle.x = _arg2; recycle.y = _arg3; _arg1.addChild(recycle); } override public function update():void{ super.update(); if (recycle.hitTestPoint(game.playerUnit.unitMovie.x, game.playerUnit.unitMovie.y)){ recycle.play(); delayTth--; if (delayTth == 0){ delayTth = DELAY_TTH; if (game.soundEngine){ game.soundEngine.playSound("tic"); }; }; if (recycle.currentFrame == recycle.totalFrames){ game.globalPause = true; game.levelEngine.levelCompleted(); if (game.soundEngine){ game.soundEngine.playSound("completed"); }; }; } else { recycle.gotoAndStop(1); }; } override public function destroy():void{ super.destroy(); } } }//package main
Section 107
//mSoundEngine (main.mSoundEngine) package main { import flash.display.*; import flash.events.*; import flash.media.*; public class mSoundEngine { public var globalMusic:Boolean; public var currentPosition:Number;// = 0 public var musicPlayed:Boolean;// = false public var currentTrack:String;// = "" public var soundMixer:SoundMixer; public var musicChannel:SoundChannel; public var channelsArray:Array; public var soundLibrary:Object; public var globalSound:Boolean; public function mSoundEngine(_arg1:Number, _arg2:Number):void{ channelsArray = new Array(); currentTrack = ""; currentPosition = 0; musicPlayed = false; super(); soundMixer = new SoundMixer(); soundLibrary = new Object(); channelsArray[0] = new SoundChannel(); channelsArray[1] = new SoundChannel(); channelsArray[2] = new SoundChannel(); channelsArray[3] = new SoundChannel(); musicChannel = new SoundChannel(); soundLibrary["buttonUp"] = new sndButtonUp(); soundLibrary["completed"] = new sndCompleted(); soundLibrary["tic"] = new sndTic(); soundLibrary["spark"] = new sndSpark(); soundLibrary["beep"] = new sndBeep(); soundLibrary["levelEditorUp"] = new sndLevelEditorUp(); soundLibrary["loadLevel"] = new sndLoadLevel(); soundLibrary["track1"] = new sndTrack1(); soundLibrary["track2"] = new sndTrack2(); globalSound = true; globalMusic = true; } public function playSound(_arg1:String):void{ if (globalSound){ soundLibrary[_arg1].play(0, 0, null); }; } public function checkSounds():void{ if (!globalSound){ channelsArray[0].stop(); channelsArray[1].stop(); channelsArray[2].stop(); channelsArray[3].stop(); }; } public function playMusic(_arg1:String):void{ var fName = _arg1; musicChannel.stop(); if (globalMusic){ if (currentTrack == fName){ musicChannel = soundLibrary[fName].play(currentPosition, 0, null); } else { currentTrack = fName; musicChannel = soundLibrary[fName].play(0, 0, null); }; musicChannel.addEventListener(Event.SOUND_COMPLETE, function (){ currentPosition = 0; playMusic(fName); }); }; musicPlayed = true; } public function clearAll():void{ pleaseStopAll(); musicPlayed = false; } public function addButtons():void{ addSoundONOFFButton(game.rootMovie, (utils.WIDTH - 15), (utils.HEIGHT - 15)); addMusicONOFFButton(game.rootMovie, (utils.WIDTH - 45), (utils.HEIGHT - 15)); } public function stopChannel(_arg1:Number):void{ channelsArray[_arg1].stop(); } public function addMusicONOFFButton(_arg1:MovieClip, _arg2, _arg3:Number):mButton{ var tempButton:*; var fParent = _arg1; var fX = _arg2; var fY = _arg3; tempButton = new mButton(fParent, "mMusicButtonBack", 1, 2, fX, fY, 25, 25, true, "", 15, function (){ globalMusic = !(globalMusic); checkMusic(); }); tempButton.setOnOff(globalMusic); return (tempButton); } public function playChannel(_arg1:Number, _arg2:String):void{ var fChannelNumber = _arg1; var fName = _arg2; if (globalSound){ channelsArray[fChannelNumber] = soundLibrary[fName].play(0, 0, null); channelsArray[fChannelNumber].addEventListener(Event.SOUND_COMPLETE, function (){ playChannel(fChannelNumber, fName); }); }; } public function addSoundONOFFButton(_arg1:MovieClip, _arg2, _arg3:Number):mButton{ var tempButton:*; var fParent = _arg1; var fX = _arg2; var fY = _arg3; tempButton = new mButton(fParent, "mSoundButtonBack", 1, 2, fX, fY, 25, 25, true, "", 15, function (){ globalSound = !(globalSound); checkSounds(); }); tempButton.setOnOff(globalSound); return (tempButton); } public function pleaseStopAll():void{ currentPosition = (musicChannel.position + 100); musicChannel.stop(); channelsArray[0].stop(); channelsArray[1].stop(); channelsArray[2].stop(); channelsArray[3].stop(); } public function checkMusic():void{ if (!globalMusic){ currentPosition = musicChannel.position; musicChannel.stop(); } else { if (musicPlayed){ playMusic(currentTrack); }; }; } } }//package main
Section 108
//mTagButton (main.mTagButton) package main { import flash.display.*; public class mTagButton extends mButton { public var tag; public function mTagButton(_arg1:MovieClip, _arg2:String, _arg3, _arg4:Number, _arg5, _arg6, _arg7, _arg8, _arg9:Boolean, _arg10:String, _arg11:Number, _arg12:Function, ... _args):void{ var fParent = _arg1; var fClassName = _arg2; var fOnFrame = _arg3; var fOffFrame = _arg4; var fx = _arg5; var fy = _arg6; var fw = _arg7; var fh = _arg8; var fEnabled = _arg9; var fButtonText = _arg10; var fFontSize = _arg11; var fProc = _arg12; var args = _args; tag = args; super(fParent, fClassName, fOnFrame, fOffFrame, fx, fy, fw, fh, fEnabled, fButtonText, fFontSize, function (){ fProc.apply(null, tag); }); } } }//package main
Section 109
//mText (main.mText) package main { import flash.display.*; import flash.text.*; public class mText extends TextField { var format:TextFormat; public function mText(_arg1:MovieClip, _arg2, _arg3, _arg4, _arg5:Number, _arg6:String, _arg7:String, _arg8:Number, _arg9:uint, _arg10:Boolean, _arg11:Number):void{ text = _arg6; format = new TextFormat(); format.font = "arial"; format.color = _arg9; format.size = _arg8; format.align = _arg7; format.letterSpacing = _arg11; _arg1.addChild(this); embedFonts = true; selectable = false; setTextFormat(format); width = _arg4; height = _arg5; x = (_arg2 - (width / 2)); y = (_arg3 - (height / 2)); } public function setBold(_arg1:Boolean):void{ var _local2:TextFormat; _local2 = getTextFormat(); _local2.bold = _arg1; format = _local2; setTextFormat(_local2); } public function setColor(_arg1:uint):void{ textColor = _arg1; } public function setFontSize(_arg1:Number):void{ var _local2:TextFormat; _local2 = getTextFormat(); _local2.size = _arg1; format = _local2; setTextFormat(_local2); } public function setFont(_arg1:String):void{ var _local2:TextFormat; _local2 = getTextFormat(); _local2.font = _arg1; format = _local2; setTextFormat(_local2); } public function newText(_arg1:String):void{ text = _arg1; setTextFormat(format); } } }//package main
Section 110
//mUnit (main.mUnit) package main { import flash.display.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class mUnit extends mBaseUnit { public const LEG_WIDTH:Number = 7; public const HEIGHT:Number = 30; public const EMO_TTH = 100; public const JUMP_TTH = 50; public const JUMP_LIMIT:Number = 0.53; public const MOTOR_HEIGHT:Number = 20; public const PRE_LEG_WIDTH:Number = 10; public const JUMP_KOEFF:Number = 4.7; public const LEG_HEIGHT:Number = 50; public const WIDTH:Number = 50; public const PRE_LEG_HEIGHT:Number = 25; public const MOVE_FORCE:Number = 1000; public const BOTTOM_RAD:Number = 22; public const TOP_RAD:Number = 9; public var rightFootJoint:b2PrismaticJoint; public var bodyDef:b2BodyDef; public var eyeBrow:MovieClip; public var detectorMovie:MovieClip; public var unitMovie:MovieClip; public var rightLegBody:b2Body; public var jumpPressed:Boolean;// = false public var RIGHT_AMORTIZATION_FORCE:Number;// = 1150 public var rightPreLegShape:b2Shape; public var LEFT_AMORTIZATION_FORCE:Number;// = 1150 public var rightSensorShape:b2Shape; public var jumped:Boolean;// = false public var leftLegJoint:b2RevoluteJoint; public var MAX_TURN_ANGLE:Number;// = 0.261799387799149 public var rightLegJoint:b2RevoluteJoint; public var leftFootBody:b2Body; public var eyes; public var rightFootBody:b2Body; public var leftPreLegShape:b2Shape; public var leftMotorBody:b2Body; public var leftFootJoint:b2PrismaticJoint; public var leftSensorShape:b2Shape; public var leftDeltaY:Number;// = 0 public var MIN_TURN_ANGLE:Number;// = 0.174532925199433 public var emoTth:Number;// = 100 public var body:b2Body; public var jumpDirect:Number;// = 0 public var rightMotor:b2RevoluteJoint; public var leftMotor:b2RevoluteJoint; public var rightPreLegMovie:MovieClip; public var leftLegBody:b2Body; public var jumpTth:Number;// = 0 public var rightDeltaY:Number;// = 0 public var rightMotorBody:b2Body; public var leftPreLegMovie:MovieClip; public function mUnit(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:String):void{ var _local5:*; LEFT_AMORTIZATION_FORCE = 1150; RIGHT_AMORTIZATION_FORCE = 1150; MAX_TURN_ANGLE = ((15 / 180) * Math.PI); MIN_TURN_ANGLE = ((10 / 180) * Math.PI); bodyDef = new b2BodyDef(); leftDeltaY = 0; rightDeltaY = 0; emoTth = EMO_TTH; jumped = false; jumpPressed = false; jumpTth = 0; jumpDirect = 0; super(); jumpPressed = false; bodyDef.position.Set((_arg2 / game.physEngine.physScale), (_arg3 / game.physEngine.physScale)); body = game.physEngine.world.CreateBody(bodyDef); _local5 = game.physEngine.addCircleShape(body, TOP_RAD, new b2Vec2(0, (-(HEIGHT) + TOP_RAD))); game.physEngine.setFiterShape(_local5, 2, 1); _local5 = game.physEngine.addPolygonShape(body, -(TOP_RAD), (-(HEIGHT) + TOP_RAD), TOP_RAD, (-(HEIGHT) + TOP_RAD), BOTTOM_RAD, 0, -(BOTTOM_RAD), 0); game.physEngine.setFiterShape(_local5, 2, 1); body.SetBullet(true); body.SetMassFromShapes(); leftSensorShape = game.physEngine.addCircleShape(body, 5, new b2Vec2((-(BOTTOM_RAD) + 7), -10)); game.physEngine.setFiterShape(leftSensorShape, 2, 1); rightSensorShape = game.physEngine.addCircleShape(body, 5, new b2Vec2((BOTTOM_RAD - 7), -10)); game.physEngine.setFiterShape(rightSensorShape, 2, 1); leftMotorBody = game.physEngine.addRectangle((_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))), _arg3, LEG_WIDTH, MOTOR_HEIGHT, 0, false, false); game.physEngine.setFiterShape(leftMotorBody.m_shapeList, 2, 0); rightMotorBody = game.physEngine.addRectangle((_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))), _arg3, LEG_WIDTH, MOTOR_HEIGHT, 0, false, false); game.physEngine.setFiterShape(rightMotorBody.m_shapeList, 2, 0); leftLegBody = game.physEngine.addRectangle((((_arg2 + -(BOTTOM_RAD)) + (LEG_WIDTH / 2)) - PRE_LEG_WIDTH), ((_arg3 - ((MOTOR_HEIGHT - (LEG_HEIGHT / 2)) / 2)) - PRE_LEG_HEIGHT), LEG_WIDTH, (LEG_HEIGHT / 2), 0, false, true); game.physEngine.setFiterShape(leftLegBody.m_shapeList, 2, 1); leftPreLegShape = game.physEngine.addPolygonShape(leftLegBody, PRE_LEG_WIDTH, ((PRE_LEG_HEIGHT + (LEG_WIDTH / 2)) - (LEG_HEIGHT / 4)), 0, ((LEG_WIDTH / 2) - (LEG_HEIGHT / 4)), 0, ((-(LEG_WIDTH) / 2) - (LEG_HEIGHT / 4)), PRE_LEG_WIDTH, ((PRE_LEG_HEIGHT - (LEG_WIDTH / 2)) - (LEG_HEIGHT / 4))); game.physEngine.setFiterShape(leftPreLegShape, 2, 1); leftLegBody.SetBullet(true); rightLegBody = game.physEngine.addRectangle((((_arg2 + BOTTOM_RAD) - (LEG_WIDTH / 2)) + PRE_LEG_WIDTH), ((_arg3 + ((MOTOR_HEIGHT + (LEG_HEIGHT / 2)) / 2)) - PRE_LEG_HEIGHT), LEG_WIDTH, (LEG_HEIGHT / 2), 0, false, true); game.physEngine.setFiterShape(rightLegBody.m_shapeList, 2, 1); rightPreLegShape = game.physEngine.addPolygonShape(rightLegBody, -(PRE_LEG_WIDTH), ((PRE_LEG_HEIGHT - (LEG_WIDTH / 2)) - (LEG_HEIGHT / 4)), 0, ((-(LEG_WIDTH) / 2) - (LEG_HEIGHT / 4)), 0, ((LEG_WIDTH / 2) - (LEG_HEIGHT / 4)), -(PRE_LEG_WIDTH), ((PRE_LEG_HEIGHT + (LEG_WIDTH / 2)) - (LEG_HEIGHT / 4))); game.physEngine.setFiterShape(rightPreLegShape, 2, 1); rightLegBody.SetBullet(true); leftFootBody = game.physEngine.addRectangle(((_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))) - PRE_LEG_WIDTH), (((_arg3 + ((3 * LEG_HEIGHT) / 4)) - (MOTOR_HEIGHT / 2)) - PRE_LEG_HEIGHT), LEG_WIDTH, (LEG_HEIGHT / 2), 0, false, true); game.physEngine.setFiterShape(leftFootBody.m_shapeList, 2, 1); leftFootBody.m_shapeList.m_friction = 250; leftFootBody.SetBullet(true); rightFootBody = game.physEngine.addRectangle(((_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))) + PRE_LEG_WIDTH), (((_arg3 + ((3 * LEG_HEIGHT) / 4)) + (MOTOR_HEIGHT / 2)) - PRE_LEG_HEIGHT), LEG_WIDTH, (LEG_HEIGHT / 2), 0, false, true); game.physEngine.setFiterShape(rightFootBody.m_shapeList, 2, 1); rightFootBody.m_shapeList.m_friction = 250; rightFootBody.SetBullet(true); rightPreLegMovie = new mPreLeg(); rightPreLegMovie.height = LEG_WIDTH; _arg1.addChild(rightPreLegMovie); leftPreLegMovie = new mPreLeg(); leftPreLegMovie.height = LEG_WIDTH; _arg1.addChild(leftPreLegMovie); unitMovie = game.physEngine.addUserData(body.m_shapeList, _arg1, "mHead", 0, 0, WIDTH, HEIGHT, 0); unitMovie.x = _arg2; unitMovie.y = _arg3; eyes = new mEyes(); eyes.scaleX = 0.75; eyes.scaleY = 0.75; eyes.y = -15; unitMovie.addChild(eyes); eyeBrow = new mEyeBrow(); eyeBrow.scaleX = 0.75; eyeBrow.scaleY = 0.75; eyeBrow.y = -30; unitMovie.addChild(eyeBrow); game.physEngine.addUserData(leftFootBody.m_shapeList, _arg1, "mFoot", 0, 0, LEG_WIDTH, (LEG_HEIGHT / 2), 0); game.physEngine.addUserData(rightFootBody.m_shapeList, _arg1, "mFoot", 0, 0, LEG_WIDTH, (LEG_HEIGHT / 2), 0); game.physEngine.addUserData(leftLegBody.m_shapeList, _arg1, "mLeg", 0, 0, LEG_WIDTH, (LEG_HEIGHT / 2), 0); game.physEngine.addUserData(rightLegBody.m_shapeList, _arg1, "mLeg", 0, 0, LEG_WIDTH, (LEG_HEIGHT / 2), 0); leftMotor = game.physEngine.addDotJoint(body, leftMotorBody, (_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))), _arg3, 0, 100, true); rightMotor = game.physEngine.addDotJoint(body, rightMotorBody, (_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))), _arg3, 0, 100, true); leftLegJoint = game.physEngine.addDotJoint(leftMotorBody, leftLegBody, (_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))), (_arg3 - (MOTOR_HEIGHT / 2)), 0, 0, false); rightLegJoint = game.physEngine.addDotJoint(rightMotorBody, rightLegBody, (_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))), (_arg3 + (MOTOR_HEIGHT / 2)), 0, 0, false); game.physEngine.addDistanceJoint(leftMotorBody, rightMotorBody, (_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))), (_arg3 + (MOTOR_HEIGHT / 2)), (_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))), (_arg3 + (MOTOR_HEIGHT / 2))); game.physEngine.addDistanceJoint(leftMotorBody, rightMotorBody, (_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))), (_arg3 - (MOTOR_HEIGHT / 2)), (_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))), (_arg3 - (MOTOR_HEIGHT / 2))); leftFootJoint = game.physEngine.addPrismaticJoint(leftLegBody, leftFootBody, new b2Vec2(((_arg2 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))) - PRE_LEG_WIDTH), (((_arg3 + (LEG_HEIGHT / 2)) - (MOTOR_HEIGHT / 2)) - PRE_LEG_HEIGHT)), new b2Vec2(0, 1)); leftFootJoint.SetLimits(-0.6, 0); leftFootJoint.m_enableLimit = true; rightFootJoint = game.physEngine.addPrismaticJoint(rightLegBody, rightFootBody, new b2Vec2(((_arg2 + (BOTTOM_RAD - (LEG_WIDTH / 2))) + PRE_LEG_WIDTH), (((_arg3 + (LEG_HEIGHT / 2)) + (MOTOR_HEIGHT / 2)) - PRE_LEG_HEIGHT)), new b2Vec2(0, 1)); rightFootJoint.SetLimits(-0.6, 0); rightFootJoint.m_enableLimit = true; } public function left():void{ if (((!(jumpPressed)) || ((jumpTth == 0)))){ MAX_TURN_ANGLE = ((15 / 180) * Math.PI); MIN_TURN_ANGLE = ((10 / 180) * Math.PI); LEFT_AMORTIZATION_FORCE = 1000; RIGHT_AMORTIZATION_FORCE = 333; rightMotor.SetMotorSpeed(-(MOVE_FORCE)); leftMotor.SetMotorSpeed(-(MOVE_FORCE)); rightMotorBody.WakeUp(); leftMotorBody.WakeUp(); body.ApplyForce(new b2Vec2(-20, 0), body.GetWorldCenter()); } else { jumpDirect = -1; }; } public function right():void{ if (((!(jumpPressed)) || ((jumpTth == 0)))){ MAX_TURN_ANGLE = ((-10 / 180) * Math.PI); MIN_TURN_ANGLE = ((-15 / 180) * Math.PI); LEFT_AMORTIZATION_FORCE = 333; RIGHT_AMORTIZATION_FORCE = 1000; rightMotor.SetMotorSpeed(MOVE_FORCE); leftMotor.SetMotorSpeed(MOVE_FORCE); rightMotorBody.WakeUp(); leftMotorBody.WakeUp(); body.ApplyForce(new b2Vec2(20, 0), body.GetWorldCenter()); } else { jumpDirect = 1; }; } public function jump(_arg1:Number):void{ if (!jumpPressed){ MAX_TURN_ANGLE = ((5 / 180) * Math.PI); MIN_TURN_ANGLE = ((-5 / 180) * Math.PI); LEFT_AMORTIZATION_FORCE = 2500; RIGHT_AMORTIZATION_FORCE = 2500; leftFootJoint.SetLimits(-0.6, 0); rightFootJoint.SetLimits(-0.6, 0); jumpDirect = 0; jumpPressed = true; jumped = false; jumpTth = JUMP_TTH; }; } public function emotionsUpdate():void{ var _local1:*; emoTth--; if (emoTth < 0){ emoTth = Math.round(((Math.random() * EMO_TTH) + EMO_TTH)); }; if (emoTth == 50){ _local1 = Math.random(); if (_local1 < 0.33){ eyeBrow.gotoAndPlay(2); }; if ((((_local1 >= 0.33)) && ((_local1 < 0.33)))){ eyeBrow.gotoAndPlay(11); }; if ((((_local1 >= 0.66)) && ((_local1 <= 1)))){ eyeBrow.gotoAndPlay(51); }; }; if (emoTth == 0){ _local1 = Math.random(); if (_local1 < 0.2){ eyes.gotoAndPlay(2); }; if ((((_local1 >= 0.2)) && ((_local1 < 0.4)))){ eyes.gotoAndPlay(6); }; if ((((_local1 >= 0.4)) && ((_local1 < 0.6)))){ eyes.gotoAndPlay(51); }; if ((((_local1 >= 0.6)) && ((_local1 < 0.8)))){ eyes.gotoAndPlay(101); }; if ((((_local1 >= 0.8)) && ((_local1 <= 1)))){ eyes.gotoAndPlay(151); }; }; } public function jumpUpdate():void{ var _local1:*; var _local2:*; var _local3:*; if (jumpPressed){ _local1 = (((LEG_HEIGHT / 2) / game.physEngine.physScale) - (leftFootBody.GetPosition().y - leftLegBody.GetPosition().y)); _local2 = (((LEG_HEIGHT / 2) / game.physEngine.physScale) - (rightFootBody.GetPosition().y - rightLegBody.GetPosition().y)); if ((((((((Math.abs(_local1) > JUMP_LIMIT)) || ((Math.abs(_local2) > JUMP_LIMIT)))) && ((game.physEngine.GetCollisionsCount(leftFootBody.m_shapeList) > 0)))) && ((game.physEngine.GetCollisionsCount(rightFootBody.m_shapeList) > 0)))){ jumped = true; body.ApplyImpulse(new b2Vec2((150 * jumpDirect), 0), body.GetWorldCenter()); } else { if (!jumped){ down(0); _local3 = ((leftMotorBody.GetAngle() * 180) / Math.PI); while (_local3 > 180) { _local3 = (_local3 - 360); }; while (_local3 < -180) { _local3 = (_local3 + 360); }; leftMotor.SetMotorSpeed(((-(_local3) + 90) * 0.5)); rightMotor.SetMotorSpeed(((-(_local3) + 90) * 0.5)); }; }; if (jumpTth > 0){ jumpTth--; } else { if ((((game.physEngine.GetCollisionsCount(leftFootBody.m_shapeList) > 0)) || ((game.physEngine.GetCollisionsCount(rightFootBody.m_shapeList) > 0)))){ jumpPressed = false; }; }; }; } public function up(_arg1:Number):void{ leftLegBody.ApplyForce(new b2Vec2(0, (-((LEFT_AMORTIZATION_FORCE * JUMP_KOEFF)) * leftDeltaY)), leftLegBody.GetWorldCenter()); leftFootBody.ApplyForce(new b2Vec2(0, ((LEFT_AMORTIZATION_FORCE * JUMP_KOEFF) * leftDeltaY)), leftFootBody.GetWorldCenter()); rightLegBody.ApplyForce(new b2Vec2(0, (-((RIGHT_AMORTIZATION_FORCE * JUMP_KOEFF)) * rightDeltaY)), rightLegBody.GetWorldCenter()); rightFootBody.ApplyForce(new b2Vec2(0, ((RIGHT_AMORTIZATION_FORCE * JUMP_KOEFF) * rightDeltaY)), rightFootBody.GetWorldCenter()); } public function setPosition(_arg1:Number, _arg2:Number):void{ body.SetXForm(new b2Vec2((_arg1 / game.physEngine.physScale), (_arg2 / game.physEngine.physScale)), 0); leftMotorBody.SetXForm(new b2Vec2(((_arg1 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))) / game.physEngine.physScale), (_arg2 / game.physEngine.physScale)), 0); rightMotorBody.SetXForm(new b2Vec2(((_arg1 + (BOTTOM_RAD - (LEG_WIDTH / 2))) / game.physEngine.physScale), (_arg2 / game.physEngine.physScale)), 0); leftLegBody.SetXForm(new b2Vec2(((_arg1 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))) / game.physEngine.physScale), ((_arg2 - ((MOTOR_HEIGHT - LEG_HEIGHT) / 2)) / game.physEngine.physScale)), 0); rightLegBody.SetXForm(new b2Vec2(((_arg1 + (BOTTOM_RAD - (LEG_WIDTH / 2))) / game.physEngine.physScale), ((_arg2 + ((MOTOR_HEIGHT + LEG_HEIGHT) / 2)) / game.physEngine.physScale)), 0); leftFootBody.SetXForm(new b2Vec2(((_arg1 + (-(BOTTOM_RAD) + (LEG_WIDTH / 2))) / game.physEngine.physScale), (((_arg2 + LEG_HEIGHT) - (MOTOR_HEIGHT / 2)) / game.physEngine.physScale)), 0); rightFootBody.SetXForm(new b2Vec2(((_arg1 + (BOTTOM_RAD - (LEG_WIDTH / 2))) / game.physEngine.physScale), (((_arg2 + LEG_HEIGHT) + (MOTOR_HEIGHT / 2)) / game.physEngine.physScale)), 0); } public function down(_arg1:Number):void{ leftLegBody.ApplyForce(new b2Vec2(0, (LEFT_AMORTIZATION_FORCE * leftDeltaY)), leftLegBody.GetWorldCenter()); leftFootBody.ApplyForce(new b2Vec2(0, (-(LEFT_AMORTIZATION_FORCE) * leftDeltaY)), leftFootBody.GetWorldCenter()); rightLegBody.ApplyForce(new b2Vec2(0, (RIGHT_AMORTIZATION_FORCE * rightDeltaY)), rightLegBody.GetWorldCenter()); rightFootBody.ApplyForce(new b2Vec2(0, (-(RIGHT_AMORTIZATION_FORCE) * rightDeltaY)), rightFootBody.GetWorldCenter()); } public function notJump():void{ } override public function update():void{ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:*; leftMotor.SetMotorSpeed(0); rightMotor.SetMotorSpeed(0); _local1 = body.GetAngle(); if (_local1 > MAX_TURN_ANGLE){ _local1 = MAX_TURN_ANGLE; }; if (_local1 < MIN_TURN_ANGLE){ _local1 = MIN_TURN_ANGLE; }; body.SetXForm(new b2Vec2(body.GetPosition().x, body.GetPosition().y), _local1); if (jumpPressed){ _local5 = 1; } else { _local5 = 0.2; }; if (Math.sin(leftMotorBody.GetAngle()) > _local5){ leftFootJoint.SetLimits(-0.6, (-0.2 - (Math.sin(leftMotorBody.GetAngle()) * 0.2))); leftDeltaY = (((((LEG_HEIGHT / 2) / game.physEngine.physScale) - 0.2) - (Math.sin(leftMotorBody.GetAngle()) * 0.2)) - (leftFootBody.GetPosition().y - leftLegBody.GetPosition().y)); } else { leftFootJoint.SetLimits(-0.6, 0); leftDeltaY = (((LEG_HEIGHT / 2) / game.physEngine.physScale) - (leftFootBody.GetPosition().y - leftLegBody.GetPosition().y)); }; if (-(Math.sin(rightMotorBody.GetAngle())) > _local5){ rightFootJoint.SetLimits(-0.6, (-0.2 + (Math.sin(rightMotorBody.GetAngle()) * 0.2))); rightDeltaY = (((((LEG_HEIGHT / 2) / game.physEngine.physScale) - 0.2) + (Math.sin(rightMotorBody.GetAngle()) * 0.2)) - (rightFootBody.GetPosition().y - rightLegBody.GetPosition().y)); } else { rightFootJoint.SetLimits(-0.6, 0); rightDeltaY = (((LEG_HEIGHT / 2) / game.physEngine.physScale) - (rightFootBody.GetPosition().y - rightLegBody.GetPosition().y)); }; if (game.physEngine.GetCollisionsCount(leftLegBody.m_shapeList) > 0){ if (Math.abs((leftLegBody.GetPosition().y - leftFootBody.GetPosition().y)) > 1){ leftFootBody.SetXForm(leftLegBody.GetPosition(), 0); }; if (Math.abs((leftLegBody.GetPosition().x - leftFootBody.GetPosition().x)) > 0.3){ leftFootBody.SetXForm(leftLegBody.GetPosition(), 0); }; }; if (game.physEngine.GetCollisionsCount(rightLegBody.m_shapeList) > 0){ if (Math.abs((rightLegBody.GetPosition().y - rightFootBody.GetPosition().y)) > 1){ rightFootBody.SetXForm(rightLegBody.GetPosition(), 0); }; if (Math.abs((rightLegBody.GetPosition().x - rightFootBody.GetPosition().x)) > 0.3){ rightFootBody.SetXForm(rightLegBody.GetPosition(), 0); }; }; leftLegBody.ApplyForce(new b2Vec2(0, (-(LEFT_AMORTIZATION_FORCE) * leftDeltaY)), leftLegBody.GetWorldCenter()); leftFootBody.ApplyForce(new b2Vec2(0, (LEFT_AMORTIZATION_FORCE * leftDeltaY)), leftFootBody.GetWorldCenter()); rightLegBody.ApplyForce(new b2Vec2(0, (-(RIGHT_AMORTIZATION_FORCE) * rightDeltaY)), rightLegBody.GetWorldCenter()); rightFootBody.ApplyForce(new b2Vec2(0, (RIGHT_AMORTIZATION_FORCE * rightDeltaY)), rightFootBody.GetWorldCenter()); _local2 = body.LocalToGlobal(new b2Vec2(((BOTTOM_RAD - (LEG_WIDTH / 2)) / game.physEngine.physScale), 0)).Multipled(game.physEngine.physScale); _local3 = rightLegBody.LocalToGlobal(new b2Vec2(0, ((-(LEG_HEIGHT) / 4) / game.physEngine.physScale))).Multipled(game.physEngine.physScale); _local4 = new b2Vec2((-(_local3.x) + _local2.x), (-(_local3.y) + _local2.y)); rightPreLegMovie.x = ((_local3.x + _local2.x) / 2); rightPreLegMovie.y = ((_local3.y + _local2.y) / 2); rightPreLegMovie.rotation = ((_local4.GetAngle() * 180) / Math.PI); rightPreLegMovie.movieWidth.width = _local4.Length(); _local2 = body.LocalToGlobal(new b2Vec2(((-(BOTTOM_RAD) + (LEG_WIDTH / 2)) / game.physEngine.physScale), 0)).Multipled(game.physEngine.physScale); _local3 = leftLegBody.LocalToGlobal(new b2Vec2(0, ((-(LEG_HEIGHT) / 4) / game.physEngine.physScale))).Multipled(game.physEngine.physScale); _local4 = new b2Vec2((-(_local3.x) + _local2.x), (-(_local3.y) + _local2.y)); leftPreLegMovie.x = ((_local3.x + _local2.x) / 2); leftPreLegMovie.y = ((_local3.y + _local2.y) / 2); leftPreLegMovie.rotation = ((_local4.GetAngle() * 180) / Math.PI); leftPreLegMovie.movieWidth.width = _local4.Length(); emotionsUpdate(); jumpUpdate(); } override public function destroy():void{ super.destroy(); } } }//package main
Section 111
//mWhileLoad (main.mWhileLoad) package main { import flash.display.*; public class mWhileLoad { var whileLoadMovie:MovieClip;// = null var loadState:Number; public function mWhileLoad(_arg1):void{ whileLoadMovie = null; super(); loadState = 0; whileLoadMovie = new mBigWhileLoad(); _arg1.addChild(whileLoadMovie); whileLoadMovie.visible = false; } public function dec():void{ loadState--; if (loadState == 0){ whileLoadMovie.visible = false; }; } public function inc():void{ loadState++; whileLoadMovie.visible = true; } } }//package main
Section 112
//utils (main.utils) package main { import flash.display.*; import flash.events.*; import Box2D.Common.Math.*; import flash.net.*; import flash.utils.*; import flash.ui.*; import flash.geom.*; public class utils { public static const WIDTH = 700; public static const HEIGHT = 525; private static var crcTableComputed:Boolean = false; private static var crcTable:Array; static function getB2Vec2(_arg1:Number):b2Vec2{ return (new b2Vec2(Math.cos(_arg1), Math.sin(_arg1))); } static function sendAndLoadData(_arg1:String, _arg2:URLVariables=null):URLLoader{ var tempURLRequest:URLRequest; var tempURLLoader:URLLoader; var fUrl = _arg1; var fVariables = _arg2; tempURLRequest = new URLRequest(fUrl); tempURLRequest.method = URLRequestMethod.POST; tempURLLoader = new URLLoader(); tempURLLoader.dataFormat = URLLoaderDataFormat.TEXT; if (fVariables){ tempURLRequest.data = fVariables; }; tempURLLoader.addEventListener(Event.COMPLETE, function (){ trace(tempURLLoader.data); }); try { tempURLLoader.load(tempURLRequest); } catch(error:Error) { trace("Fail!"); }; return (tempURLLoader); } static function checkDomains(... _args):Boolean{ var _local2:Boolean; var _local3:*; _local2 = false; _local3 = 0; while (_local3 < _args.length) { if (game.currentUrl.substr(0, _args[_local3].length) == _args[_local3]){ _local2 = true; }; _local3++; }; return (_local2); } public static function sendByteArray(_arg1:ByteArray, _arg2:String, _arg3:Function):void{ var tempURL:URLRequest; var tempLoader:URLLoader; var fByteArray = _arg1; var fUrl = _arg2; var fProc = _arg3; game.whileLoad.inc(); tempURL = new URLRequest(fUrl); tempURL.method = URLRequestMethod.POST; tempURL.data = fByteArray; tempURL.contentType = "application/octet-stream"; tempLoader = new URLLoader(); tempLoader.addEventListener(Event.COMPLETE, function (){ game.whileLoad.dec(); fProc(tempLoader.data); }); tempLoader.addEventListener(IOErrorEvent.IO_ERROR, function (){ game.whileLoad.dec(); fProc("error"); }); tempLoader.load(tempURL); } public static function addMovie(_arg1:MovieClip, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Boolean, _arg6:String, _arg7:Function):mMovie{ var _local8:*; _local8 = new mMovie(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7); return (_local8); } public static function div(_arg1:Number, _arg2:Number):Number{ var _local3:*; var _local4:*; var _local5:*; _local3 = _arg1; _local4 = _arg2; _local5 = 0; while (_local3 >= _local4) { _local5++; _local3 = (_local3 - _local4); }; return (_local5); } public static function adjustContexMenu():ContextMenu{ var _local1:ContextMenu; var _local2:*; _local1 = new ContextMenu(); _local1.hideBuiltInItems(); _local2 = new ContextMenuItem("plus © 2010"); _local1.customItems.push(_local2); return (_local1); } public static function getPages(_arg1:Number, _arg2:Number):Number{ var _local3:*; _local3 = div(_arg1, _arg2); if ((_local3 * _arg2) != _arg1){ _local3++; }; return (_local3); } public static function loadVar(_arg1:String, _arg2:String){ var _local3:SharedObject; _local3 = SharedObject.getLocal(_arg1); return (_local3.data[_arg2]); } public static function addRatingStars(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:*; var _local6:*; _local5 = new mRatingBack(); _local5.x = (_arg2 + 96); _local5.y = _arg3; _arg1.addChild(_local5); _local5 = new mRating(); _local5.x = (_arg2 + 96); _local5.y = _arg3; _arg1.addChild(_local5); _local6 = new mRatingMask(); _local6.x = _arg2; _local6.y = _arg3; _local6.width = (100 * (Number(_arg4) / 5)); _arg1.addChild(_local6); _local5.mask = _local6; } public static function saveVar(_arg1:String, ... _args):void{ var _local3:SharedObject; var _local4:*; _local3 = SharedObject.getLocal(_arg1); _local4 = 0; while (_local4 < _args.length) { _local3.data[_args[_local4]] = _args[(_local4 + 1)]; _local4 = (_local4 + 2); }; _local3.flush(); } static function goToUrl(_arg1:String):void{ navigateToURL(new URLRequest(_arg1), "_BLANK"); } public static function getBitmapData(_arg1:Sprite, _arg2:Number, _arg3:Number):BitmapData{ var _local4:*; _local4 = new BitmapData(_arg2, _arg3, false, 0xFFFFFF); _local4.draw(_arg1); return (_local4); } public static function sendUrlVariables(_arg1:URLVariables, _arg2:String, _arg3:Function):URLLoader{ var tempURL:URLRequest; var tempLoader:URLLoader; var fUrlVariables = _arg1; var fUrl = _arg2; var fProc = _arg3; game.whileLoad.inc(); tempURL = new URLRequest(fUrl); tempURL.method = URLRequestMethod.POST; tempURL.data = fUrlVariables; tempLoader = new URLLoader(); tempLoader.dataFormat = URLLoaderDataFormat.TEXT; tempLoader.addEventListener(Event.COMPLETE, function (){ game.whileLoad.dec(); fProc(tempLoader.data); }); tempLoader.addEventListener(IOErrorEvent.IO_ERROR, function (){ game.whileLoad.dec(); fProc("error"); }); tempLoader.load(tempURL); return (tempLoader); } public static function loadContent(_arg1:MovieClip, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Function, _arg8:Function):Loader{ var tempURL:URLRequest; var tempLoader:Loader; var fParent = _arg1; var fUrl = _arg2; var fX = _arg3; var fY = _arg4; var fWidth = _arg5; var fHeight = _arg6; var fCompleteProc = _arg7; var fIOErrorProc = _arg8; tempURL = new URLRequest(fUrl); tempLoader = new Loader(); tempLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (){ tempLoader.x = fX; tempLoader.y = fY; tempLoader.width = fWidth; tempLoader.height = fHeight; fCompleteProc(); }); tempLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, fIOErrorProc); tempLoader.load(tempURL); fParent.addChild(tempLoader); return (tempLoader); } static function decreaseBitmapData(_arg1:BitmapData, _arg2:Number):BitmapData{ var _local3:*; var _local4:*; _local3 = new Matrix(); _local3.scale((1 / _arg2), (1 / _arg2)); _local4 = new BitmapData(Math.floor((_arg1.width / _arg2)), Math.floor((_arg1.height / _arg2))); _local4.draw(_arg1, _local3); return (_local4); } private static function writeChunk(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray):void{ var _local4:uint; var _local5:uint; var _local6:uint; var _local7:int; var _local8:uint; var _local9:uint; var _local10:uint; if (!crcTableComputed){ crcTableComputed = true; crcTable = []; _local9 = 0; while (_local9 < 0x0100) { _local8 = _local9; _local10 = 0; while (_local10 < 8) { if ((_local8 & 1)){ _local8 = uint((uint(3988292384) ^ uint((_local8 >>> 1)))); } else { _local8 = uint((_local8 >>> 1)); }; _local10++; }; crcTable[_local9] = _local8; _local9++; }; }; _local4 = 0; if (_arg3 != null){ _local4 = _arg3.length; }; _arg1.writeUnsignedInt(_local4); _local5 = _arg1.position; _arg1.writeUnsignedInt(_arg2); if (_arg3 != null){ _arg1.writeBytes(_arg3); }; _local6 = _arg1.position; _arg1.position = _local5; _local8 = 4294967295; _local7 = 0; while (_local7 < (_local6 - _local5)) { _local8 = uint((crcTable[((_local8 ^ _arg1.readUnsignedByte()) & uint(0xFF))] ^ uint((_local8 >>> 8)))); _local7++; }; _local8 = uint((_local8 ^ uint(4294967295))); _arg1.position = _local6; _arg1.writeUnsignedInt(_local8); } public static function PNGEncode(_arg1:BitmapData):ByteArray{ var _local2:ByteArray; var _local3:ByteArray; var _local4:ByteArray; var _local5:int; var _local6:uint; var _local7:int; _local2 = new ByteArray(); _local2.writeUnsignedInt(2303741511); _local2.writeUnsignedInt(218765834); _local3 = new ByteArray(); _local3.writeInt(_arg1.width); _local3.writeInt(_arg1.height); _local3.writeUnsignedInt(134610944); _local3.writeByte(0); writeChunk(_local2, 1229472850, _local3); _local4 = new ByteArray(); _local5 = 0; while (_local5 < _arg1.height) { _local4.writeByte(0); if (!_arg1.transparent){ _local7 = 0; while (_local7 < _arg1.width) { _local6 = _arg1.getPixel(_local7, _local5); _local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | 0xFF))); _local7++; }; } else { _local7 = 0; while (_local7 < _arg1.width) { _local6 = _arg1.getPixel32(_local7, _local5); _local4.writeUnsignedInt(uint((((_local6 & 0xFFFFFF) << 8) | (_local6 >>> 24)))); _local7++; }; }; _local5++; }; _local4.compress(); writeChunk(_local2, 1229209940, _local4); writeChunk(_local2, 1229278788, null); return (_local2); } } }//package main
Section 113
//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 114
//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 set value(_arg1:Number):void{ setValue(_arg1); } public function reencode():void{ var _local1:uint; _local1 = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String; _local1 = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function get value():Number{ return (Number(this.toString())); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String; _local3 = _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 addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 115
//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 116
//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 endPlay():void{ MochiServices.send("events_clearRoundID", null, null, null); } public static function addEventListener(_arg1:String, _arg2:Function):void{ _dispatcher.addEventListener(_arg1, _arg2); } public static function trackEvent(_arg1:String, _arg2=null):void{ MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null); } 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 _local3:Object; var _local4:Object; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; _local3.clip = _arg1; MochiServices.send("events_setNotifications", _local3, null, null); } public static function getVersion():String{ return (MochiServices.getVersion()); } public static function startPlay(_arg1:String="gameplay"):void{ MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null); } } }//package mochi.as3
Section 117
//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 _consumableProperties:Object; private var _syncID:Number; 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)); }; } 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); } 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 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)); } 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 sync(_arg1:Event=null):void{ var _local2:Object; var _local3:String; if (((_syncPending) || ((_syncID == _outstandingID)))){ return; }; _outstandingID = _syncID; _local2 = {}; 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)]); } private function loggedIn(_arg1:Object=null):void{ MochiUserData.get(CONSUMER_KEY, getConsumableBag); } 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 itemOwned(_arg1:Object):void{ _storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count}; } private function putConsumableBag(_arg1:MochiUserData):void{ _syncPending = false; if (_arg1.error){ triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error}); _outstandingID = -1; }; triggerEvent(WRITTEN, {}); } 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 118
//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 _local2:Object; var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; _local2 = {}; 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 119
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.net.*; import flash.utils.*; import flash.geom.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _queue:Array; 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 _nextCallbackID:Number; 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 _callbacks:Object; 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 cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = _callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = 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 _callbacks[cb]; } 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:_nextCallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ trace(("Error: MochiServices not connected. Please call MochiServices.connect(). Function: " + _arg1)); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID}); }; if (_clip != null){ if (_callbacks != null){ _callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _nextCallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } public static function get childClip():Object{ return (_clip); } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [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]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_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); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_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 vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; 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; vars = 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); s = "?"; i = 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{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = 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 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.8 as3"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); } public static function warnID(_arg1:String, _arg2:Boolean):void{ var _local3:Number; _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; }; }; }; _local3 = 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++; }; } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (((_clip) && (_queue))){ while (_queue.length > 0) { _local2 = _queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _callbacks[_local2.callbackID]; }; delete _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; var _local3:String; _local2 = _arg1.target; _local3 = _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 _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; if (_arg1.stage){ _local3 = _arg1.stage.loaderInfo.parameters.mochiad_options; } else { _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 (_clip.parent){ _clip.parent.removeChild(_clip); }; if (_arg1 != null){ if ((_arg1 is DisplayObjectContainer)){ _container = _arg1; }; }; if (_arg2){ if ((_container is DisplayObjectContainer)){ DisplayObjectContainer(_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 (_queue.length > 0) { _mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift()); }; }; } private static function loadLCBridge(_arg1:Object):void{ var loader:Loader; var mochiLCURL:String; var req:URLRequest; var complete:Function; var clip = _arg1; loader = new Loader(); mochiLCURL = (_servURL + _mochiLC); req = new URLRequest(mochiLCURL); complete = 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; var _local4:URLRequest; var _local5:URLVariables; if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(_arg2).servURL){ _servURL = urlOptions(_arg2).servURL; }; _local3 = (_servURL + _services); if (urlOptions(_arg2).servicesURL){ _local3 = urlOptions(_arg2).servicesURL; }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999)))); MochiServices.allowDomains(_local3); _clip = new MovieClip(); loadLCBridge(_clip); _loader = new Loader(); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError); _local4 = new URLRequest(_local3); _local5 = new URLVariables(); _local5.listenLC = _listenChannelName; _local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options; _local5.api_version = getVersion(); if (widget){ _local5.widget = true; }; _local4.data = _local5; _loader.load(_local4); _clip.addChild(_loader); _sendChannel = new LocalConnection(); _queue = []; _nextCallbackID = 0; _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 updateCopy(_arg1:Object):void{ MochiServices.send("coins_updateCopy", _arg1, null, null); } 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 120
//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 121
//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 = {}; } 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; }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ return (_syncContainer[_arg1]); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ var _local3:String; if (_syncContainer[_arg1] == _arg2){ return; }; _local3 = _arg1.toString(); _syncContainer[_local3] = _arg2; MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2}); } } }//package mochi.as3
Section 122
//MochiUserData (mochi.as3.MochiUserData) package mochi.as3 { import flash.events.*; import flash.net.*; import flash.utils.*; public class MochiUserData extends EventDispatcher { public var callback:Function;// = null public var error:Event;// = null public var key:String;// = null public var operation:String;// = null public var data;// = null public var _loader:URLLoader; public function MochiUserData(_arg1:String="", _arg2:Function=null){ key = null; data = null; error = null; operation = null; callback = null; super(); this.key = _arg1; this.callback = _arg2; } public function securityErrorHandler(_arg1:SecurityErrorEvent):void{ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString()))); } public function putEvent(_arg1):void{ request("put", serialize(_arg1)); } public function request(_arg1:String, _arg2:ByteArray):void{ var api_url:String; var api_token:String; var args:URLVariables; var req:URLRequest; var _operation = _arg1; var _data = _arg2; operation = _operation; api_url = MochiSocial.getAPIURL(); api_token = MochiSocial.getAPIToken(); if ((((api_url == null)) || ((api_token == null)))){ errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in")); return; }; _loader = new URLLoader(); args = new URLVariables(); args.op = _operation; args.key = key; req = 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 performCallback():void{ try { callback(this); } catch(e:Error) { trace(("[MochiUserData] exception during callback: " + e)); }; } public function serialize(_arg1):ByteArray{ var _local2:ByteArray; _local2 = 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 getEvent():void{ request("get", serialize(null)); } override public function toString():String{ return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]")); } 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 function deserialize(_arg1:ByteArray){ _arg1.objectEncoding = ObjectEncoding.AMF3; _arg1.uncompress(); return (_arg1.readObject()); } public static function get(_arg1:String, _arg2:Function):void{ var _local3:MochiUserData; _local3 = new MochiUserData(_arg1, _arg2); _local3.getEvent(); } public static function put(_arg1:String, _arg2, _arg3:Function):void{ var _local4:MochiUserData; _local4 = new MochiUserData(_arg1, _arg3); _local4.putEvent(_arg2); } } }//package mochi.as3
Section 123
//mAdBox (mAdBox) package { import flash.display.*; public dynamic class mAdBox extends MovieClip { } }//package
Section 124
//mAllocation (mAllocation) package { import flash.display.*; public dynamic class mAllocation extends MovieClip { } }//package
Section 125
//mAwayPause (mAwayPause) package { import flash.display.*; public dynamic class mAwayPause extends MovieClip { } }//package
Section 126
//mBalka (mBalka) package { import flash.display.*; public dynamic class mBalka extends MovieClip { } }//package
Section 127
//mBarLine (mBarLine) package { import flash.display.*; public dynamic class mBarLine extends MovieClip { } }//package
Section 128
//mBigWhileLoad (mBigWhileLoad) package { import flash.display.*; public dynamic class mBigWhileLoad extends MovieClip { } }//package
Section 129
//mButtonBack (mButtonBack) package { import flash.display.*; public dynamic class mButtonBack extends MovieClip { } }//package
Section 130
//mColorBar (mColorBar) package { import flash.display.*; public dynamic class mColorBar extends MovieClip { } }//package
Section 131
//mDetector (mDetector) package { import flash.display.*; public dynamic class mDetector extends MovieClip { } }//package
Section 132
//mDistJointMovie (mDistJointMovie) package { import flash.display.*; public dynamic class mDistJointMovie extends MovieClip { public var lineWidth:mDistJointWidth; } }//package
Section 133
//mDistJointWidth (mDistJointWidth) package { import flash.display.*; public dynamic class mDistJointWidth extends MovieClip { } }//package
Section 134
//mDynStatButtonBack (mDynStatButtonBack) package { import flash.display.*; public dynamic class mDynStatButtonBack extends MovieClip { } }//package
Section 135
//mEmbedLevelButton (mEmbedLevelButton) package { import flash.display.*; public dynamic class mEmbedLevelButton extends MovieClip { } }//package
Section 136
//mEyeBrow (mEyeBrow) package { import flash.display.*; public dynamic class mEyeBrow extends MovieClip { public function mEyeBrow(){ addFrameScript(0, frame1, 9, frame10, 49, frame50, 89, frame90); } function frame90(){ gotoAndStop(1); } function frame10(){ gotoAndStop(1); } function frame1(){ stop(); } function frame50(){ gotoAndStop(1); } } }//package
Section 137
//mEyes (mEyes) package { import flash.display.*; public dynamic class mEyes extends MovieClip { public function mEyes(){ addFrameScript(0, frame1, 4, frame5, 49, frame50, 99, frame100, 149, frame150, 156, frame157); } function frame157(){ gotoAndStop(1); } function frame1(){ stop(); } function frame5(){ gotoAndStop(1); } function frame100(){ gotoAndStop(1); } function frame50(){ gotoAndStop(1); } function frame150(){ gotoAndStop(1); } } }//package
Section 138
//mFixButtonBack (mFixButtonBack) package { import flash.display.*; public dynamic class mFixButtonBack extends MovieClip { } }//package
Section 139
//mFlashMovie (mFlashMovie) package { import flash.display.*; public dynamic class mFlashMovie extends MovieClip { } }//package
Section 140
//mFogLine1 (mFogLine1) package { import flash.display.*; public dynamic class mFogLine1 extends MovieClip { } }//package
Section 141
//mFon (mFon) package { import flash.display.*; public dynamic class mFon extends MovieClip { public var fon2:mFon1_2; public var fon1:mFon1_1; public function mFon(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 142
//mFon1_1 (mFon1_1) package { import flash.display.*; public dynamic class mFon1_1 extends MovieClip { public function mFon1_1(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 143
//mFon1_2 (mFon1_2) package { import flash.display.*; public dynamic class mFon1_2 extends MovieClip { public function mFon1_2(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 144
//mFoot (mFoot) package { import flash.display.*; public dynamic class mFoot extends MovieClip { } }//package
Section 145
//mHead (mHead) package { import flash.display.*; public dynamic class mHead extends MovieClip { } }//package
Section 146
//mHelpMovie1 (mHelpMovie1) package { import flash.display.*; public dynamic class mHelpMovie1 extends MovieClip { } }//package
Section 147
//mHelpMovie2 (mHelpMovie2) package { import flash.display.*; public dynamic class mHelpMovie2 extends MovieClip { } }//package
Section 148
//mJointMovie (mJointMovie) package { import flash.display.*; public dynamic class mJointMovie extends MovieClip { } }//package
Section 149
//mLeg (mLeg) package { import flash.display.*; public dynamic class mLeg extends MovieClip { } }//package
Section 150
//mLevelButtonBack (mLevelButtonBack) package { import flash.display.*; public dynamic class mLevelButtonBack extends MovieClip { } }//package
Section 151
//mLevelEditorButtonsBack (mLevelEditorButtonsBack) package { import flash.display.*; public dynamic class mLevelEditorButtonsBack extends MovieClip { } }//package
Section 152
//mLoadFon (mLoadFon) package { import flash.display.*; public dynamic class mLoadFon extends MovieClip { } }//package
Section 153
//mMouth (mMouth) package { import flash.display.*; public dynamic class mMouth extends MovieClip { public function mMouth(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 154
//mMusicButtonBack (mMusicButtonBack) package { import flash.display.*; public dynamic class mMusicButtonBack extends MovieClip { } }//package
Section 155
//mOurSplash (mOurSplash) package { import flash.display.*; public dynamic class mOurSplash extends MovieClip { } }//package
Section 156
//mPanelBack (mPanelBack) package { import flash.display.*; public dynamic class mPanelBack extends MovieClip { } }//package
Section 157
//mPreLeg (mPreLeg) package { import flash.display.*; public dynamic class mPreLeg extends MovieClip { public var movieWidth:mLeg; } }//package
Section 158
//mRating (mRating) package { import flash.display.*; public dynamic class mRating extends MovieClip { } }//package
Section 159
//mRatingBack (mRatingBack) package { import flash.display.*; public dynamic class mRatingBack extends MovieClip { } }//package
Section 160
//mRatingMask (mRatingMask) package { import flash.display.*; public dynamic class mRatingMask extends MovieClip { } }//package
Section 161
//mRecycleMovie (mRecycleMovie) package { import flash.display.*; public dynamic class mRecycleMovie extends MovieClip { public function mRecycleMovie(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 162
//mSlicer (mSlicer) package { import flash.display.*; public dynamic class mSlicer extends MovieClip { } }//package
Section 163
//mSmallWhileLoad (mSmallWhileLoad) package { import flash.display.*; public dynamic class mSmallWhileLoad extends MovieClip { public function mSmallWhileLoad(){ addFrameScript(15, frame16); } function frame16(){ gotoAndPlay(1); } } }//package
Section 164
//mSoundButtonBack (mSoundButtonBack) package { import flash.display.*; public dynamic class mSoundButtonBack extends MovieClip { } }//package
Section 165
//mTitleName (mTitleName) package { import flash.display.*; public dynamic class mTitleName extends MovieClip { } }//package
Section 166
//mWebBar (mWebBar) package { import flash.display.*; public dynamic class mWebBar extends MovieClip { public var line:mBarLine; } }//package
Section 167
//mWebMovie (mWebMovie) package { import flash.display.*; public dynamic class mWebMovie extends MovieClip { } }//package
Section 168
//mWebParticle (mWebParticle) package { import flash.display.*; public dynamic class mWebParticle extends MovieClip { } }//package
Section 169
//mWeightUp (mWeightUp) package { import flash.display.*; public dynamic class mWeightUp extends MovieClip { } }//package
Section 170
//mWheel (mWheel) package { import flash.display.*; public dynamic class mWheel extends MovieClip { } }//package
Section 171
//mWidthBalka (mWidthBalka) package { import flash.display.*; public dynamic class mWidthBalka extends MovieClip { } }//package
Section 172
//sndBeep (sndBeep) package { import flash.media.*; public dynamic class sndBeep extends Sound { } }//package
Section 173
//sndButtonUp (sndButtonUp) package { import flash.media.*; public dynamic class sndButtonUp extends Sound { } }//package
Section 174
//sndCompleted (sndCompleted) package { import flash.media.*; public dynamic class sndCompleted extends Sound { } }//package
Section 175
//sndLevelEditorUp (sndLevelEditorUp) package { import flash.media.*; public dynamic class sndLevelEditorUp extends Sound { } }//package
Section 176
//sndLoadLevel (sndLoadLevel) package { import flash.media.*; public dynamic class sndLoadLevel extends Sound { } }//package
Section 177
//sndSpark (sndSpark) package { import flash.media.*; public dynamic class sndSpark extends Sound { } }//package
Section 178
//sndSplash (sndSplash) package { import flash.media.*; public dynamic class sndSplash extends Sound { } }//package
Section 179
//sndTic (sndTic) package { import flash.media.*; public dynamic class sndTic extends Sound { } }//package
Section 180
//sndTrack1 (sndTrack1) package { import flash.media.*; public dynamic class sndTrack1 extends Sound { } }//package
Section 181
//sndTrack2 (sndTrack2) package { import flash.media.*; public dynamic class sndTrack2 extends Sound { } }//package

Library Items

Symbol 1 GraphicUsed by:2 159
Symbol 2 MovieClip {mAdBox}Uses:1
Symbol 3 GraphicUsed by:4 201
Symbol 4 MovieClip {mButtonBack}Uses:3
Symbol 5 GraphicUsed by:6
Symbol 6 MovieClip {mColorBar}Uses:5Used by:7
Symbol 7 MovieClip {main.mPreloader}Uses:6
Symbol 8 GraphicUsed by:9
Symbol 9 MovieClip {mLoadFon}Uses:8Used by:Timeline
Symbol 10 BitmapUsed by:11
Symbol 11 GraphicUses:10Used by:12
Symbol 12 MovieClip {mWeightUp}Uses:11Used by:Timeline
Symbol 13 GraphicUsed by:14 43 169
Symbol 14 MovieClip {mFlashMovie}Uses:13Used by:Timeline
Symbol 15 GraphicUsed by:16 55
Symbol 16 MovieClip {main.mInputWindow}Uses:15Used by:Timeline
Symbol 17 GraphicUsed by:18
Symbol 18 MovieClip {mPanelBack}Uses:17Used by:Timeline
Symbol 19 GraphicUsed by:27
Symbol 20 GraphicUsed by:27
Symbol 21 GraphicUsed by:27
Symbol 22 GraphicUsed by:27
Symbol 23 GraphicUsed by:27
Symbol 24 GraphicUsed by:27
Symbol 25 GraphicUsed by:27
Symbol 26 GraphicUsed by:27
Symbol 27 MovieClip {mFon1_1}Uses:19 20 21 22 23 24 25 26Used by:39
Symbol 28 GraphicUsed by:29
Symbol 29 MovieClip {mFogLine1}Uses:28Used by:39
Symbol 30 GraphicUsed by:38
Symbol 31 GraphicUsed by:38
Symbol 32 GraphicUsed by:38
Symbol 33 GraphicUsed by:38
Symbol 34 GraphicUsed by:38
Symbol 35 GraphicUsed by:38
Symbol 36 GraphicUsed by:38
Symbol 37 GraphicUsed by:38
Symbol 38 MovieClip {mFon1_2}Uses:30 31 32 33 34 35 36 37Used by:39
Symbol 39 MovieClip {mFon}Uses:27 29 38Used by:Timeline
Symbol 40 FontUsed by:41 42 199 200 233
Symbol 41 EditableTextUses:40Used by:43
Symbol 42 EditableTextUses:40Used by:43
Symbol 43 MovieClip {main.mEditable}Uses:13 41 42Used by:Timeline
Symbol 44 GraphicUsed by:52
Symbol 45 GraphicUsed by:52
Symbol 46 GraphicUsed by:52
Symbol 47 GraphicUsed by:52
Symbol 48 GraphicUsed by:52
Symbol 49 GraphicUsed by:52
Symbol 50 GraphicUsed by:52
Symbol 51 GraphicUsed by:52
Symbol 52 MovieClip {mWheel}Uses:44 45 46 47 48 49 50 51Used by:Timeline
Symbol 53 GraphicUsed by:54
Symbol 54 MovieClip {mAllocation}Uses:53Used by:Timeline
Symbol 55 MovieClip {main.mDialogWindow}Uses:15Used by:Timeline
Symbol 56 GraphicUsed by:64
Symbol 57 GraphicUsed by:64
Symbol 58 GraphicUsed by:64
Symbol 59 GraphicUsed by:64
Symbol 60 GraphicUsed by:64
Symbol 61 GraphicUsed by:64
Symbol 62 GraphicUsed by:64
Symbol 63 GraphicUsed by:64
Symbol 64 MovieClip {mBalka}Uses:56 57 58 59 60 61 62 63Used by:Timeline
Symbol 65 GraphicUsed by:68
Symbol 66 GraphicUsed by:68
Symbol 67 Sound {sndSplash}Used by:68 88
Symbol 68 MovieClip {mOurSplash}Uses:65 66 67Used by:Timeline
Symbol 69 GraphicUsed by:73
Symbol 70 GraphicUsed by:73
Symbol 71 GraphicUsed by:73
Symbol 72 GraphicUsed by:73
Symbol 73 MovieClip {mSmallWhileLoad}Uses:69 70 71 72Used by:Timeline
Symbol 74 GraphicUsed by:78
Symbol 75 GraphicUsed by:78
Symbol 76 GraphicUsed by:78
Symbol 77 GraphicUsed by:78
Symbol 78 MovieClip {mBigWhileLoad}Uses:74 75 76 77Used by:Timeline
Symbol 79 Sound {sndButtonUp}Used by:88
Symbol 80 Sound {sndCompleted}Used by:88
Symbol 81 Sound {sndTic}Used by:88
Symbol 82 Sound {sndSpark}Used by:88
Symbol 83 Sound {sndBeep}Used by:88
Symbol 84 Sound {sndLevelEditorUp}Used by:88
Symbol 85 Sound {sndLoadLevel}Used by:88
Symbol 86 Sound {sndTrack1}Used by:88
Symbol 87 Sound {sndTrack2}Used by:88
Symbol 88 MovieClip {game_fla.sounds_17}Uses:79 80 81 82 83 84 85 86 87 67Used by:Timeline
Symbol 89 GraphicUsed by:90
Symbol 90 MovieClip {mHead}Uses:89Used by:Timeline
Symbol 91 GraphicUsed by:92
Symbol 92 MovieClip {mLeg}Uses:91Used by:93
Symbol 93 MovieClip {mPreLeg}Uses:92Used by:Timeline
Symbol 94 GraphicUsed by:95
Symbol 95 MovieClip {mFoot}Uses:94Used by:Timeline
Symbol 96 GraphicUsed by:124
Symbol 97 GraphicUsed by:124
Symbol 98 GraphicUsed by:124
Symbol 99 GraphicUsed by:124
Symbol 100 GraphicUsed by:124
Symbol 101 GraphicUsed by:124
Symbol 102 GraphicUsed by:124
Symbol 103 GraphicUsed by:124
Symbol 104 GraphicUsed by:124
Symbol 105 GraphicUsed by:124
Symbol 106 GraphicUsed by:124
Symbol 107 GraphicUsed by:124
Symbol 108 GraphicUsed by:124
Symbol 109 GraphicUsed by:124
Symbol 110 GraphicUsed by:124
Symbol 111 GraphicUsed by:124
Symbol 112 GraphicUsed by:124
Symbol 113 GraphicUsed by:124
Symbol 114 GraphicUsed by:124
Symbol 115 GraphicUsed by:124
Symbol 116 GraphicUsed by:124
Symbol 117 GraphicUsed by:124
Symbol 118 GraphicUsed by:124
Symbol 119 GraphicUsed by:124
Symbol 120 GraphicUsed by:124
Symbol 121 GraphicUsed by:124
Symbol 122 GraphicUsed by:124
Symbol 123 GraphicUsed by:124
Symbol 124 MovieClip {mEyes}Uses:96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123Used by:Timeline
Symbol 125 GraphicUsed by:139
Symbol 126 GraphicUsed by:139
Symbol 127 GraphicUsed by:139
Symbol 128 GraphicUsed by:139
Symbol 129 GraphicUsed by:139
Symbol 130 GraphicUsed by:139
Symbol 131 GraphicUsed by:139
Symbol 132 GraphicUsed by:139
Symbol 133 GraphicUsed by:139
Symbol 134 GraphicUsed by:139
Symbol 135 GraphicUsed by:139
Symbol 136 GraphicUsed by:139
Symbol 137 GraphicUsed by:139
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClip {mEyeBrow}Uses:125 126 127 128 129 130 131 132 133 134 135 136 137 138Used by:Timeline
Symbol 140 GraphicUsed by:142
Symbol 141 GraphicUsed by:142
Symbol 142 MovieClip {mMouth}Uses:140 141Used by:Timeline
Symbol 143 GraphicUsed by:145
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClip {mFixButtonBack}Uses:143 144Used by:Timeline
Symbol 146 GraphicUsed by:147
Symbol 147 MovieClip {mLevelButtonBack}Uses:146Used by:Timeline
Symbol 148 GraphicUsed by:150
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClip {mSoundButtonBack}Uses:148 149Used by:Timeline
Symbol 151 GraphicUsed by:153
Symbol 152 GraphicUsed by:153
Symbol 153 MovieClip {mMusicButtonBack}Uses:151 152Used by:Timeline
Symbol 154 GraphicUsed by:156
Symbol 155 GraphicUsed by:156
Symbol 156 MovieClip {mEmbedLevelButton}Uses:154 155Used by:Timeline
Symbol 157 GraphicUsed by:158
Symbol 158 MovieClip {mRating}Uses:157Used by:Timeline
Symbol 159 MovieClip {mRatingMask}Uses:1Used by:Timeline
Symbol 160 GraphicUsed by:161
Symbol 161 MovieClip {mRatingBack}Uses:160Used by:Timeline
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClip {mTitleName}Uses:162Used by:Timeline
Symbol 164 GraphicUsed by:165
Symbol 165 MovieClip {mWebMovie}Uses:164Used by:Timeline
Symbol 166 GraphicUsed by:167
Symbol 167 MovieClip {mWebParticle}Uses:166Used by:Timeline
Symbol 168 GraphicUsed by:170
Symbol 169 MovieClip {mBarLine}Uses:13Used by:170
Symbol 170 MovieClip {mWebBar}Uses:168 169Used by:Timeline
Symbol 171 GraphicUsed by:184
Symbol 172 GraphicUsed by:184
Symbol 173 GraphicUsed by:184
Symbol 174 GraphicUsed by:184
Symbol 175 GraphicUsed by:184
Symbol 176 GraphicUsed by:184
Symbol 177 GraphicUsed by:184
Symbol 178 GraphicUsed by:184
Symbol 179 GraphicUsed by:184
Symbol 180 GraphicUsed by:184
Symbol 181 GraphicUsed by:184
Symbol 182 GraphicUsed by:184
Symbol 183 GraphicUsed by:184
Symbol 184 MovieClip {mRecycleMovie}Uses:171 172 173 174 175 176 177 178 179 180 181 182 183Used by:Timeline
Symbol 185 GraphicUsed by:198
Symbol 186 GraphicUsed by:198
Symbol 187 GraphicUsed by:198
Symbol 188 GraphicUsed by:198
Symbol 189 GraphicUsed by:198
Symbol 190 GraphicUsed by:198
Symbol 191 GraphicUsed by:198
Symbol 192 GraphicUsed by:198
Symbol 193 GraphicUsed by:198
Symbol 194 GraphicUsed by:198
Symbol 195 GraphicUsed by:198
Symbol 196 GraphicUsed by:198
Symbol 197 GraphicUsed by:198
Symbol 198 MovieClip {mLevelEditorButtonsBack}Uses:185 186 187 188 189 190 191 192 193 194 195 196 197Used by:Timeline
Symbol 199 EditableTextUses:40Used by:201
Symbol 200 EditableTextUses:40Used by:201
Symbol 201 MovieClip {mDynStatButtonBack}Uses:3 199 200Used by:Timeline
Symbol 202 GraphicUsed by:203
Symbol 203 MovieClip {mSlicer}Uses:202Used by:Timeline
Symbol 204 GraphicUsed by:205 209
Symbol 205 MovieClip {main.mJoint}Uses:204Used by:Timeline
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClip {mDistJointWidth}Uses:206Used by:208  Timeline
Symbol 208 MovieClip {mDistJointMovie}Uses:207Used by:Timeline
Symbol 209 MovieClip {mJointMovie}Uses:204Used by:Timeline
Symbol 210 GraphicUsed by:218
Symbol 211 GraphicUsed by:218
Symbol 212 GraphicUsed by:218
Symbol 213 GraphicUsed by:218
Symbol 214 GraphicUsed by:218
Symbol 215 GraphicUsed by:218
Symbol 216 GraphicUsed by:218
Symbol 217 GraphicUsed by:218
Symbol 218 MovieClip {mWidthBalka}Uses:210 211 212 213 214 215 216 217Used by:Timeline
Symbol 219 GraphicUsed by:223
Symbol 220 FontUsed by:221 222 230
Symbol 221 TextUses:220Used by:223
Symbol 222 TextUses:220Used by:223
Symbol 223 MovieClip {mAwayPause}Uses:219 221 222Used by:Timeline
Symbol 224 FontUsed by:225
Symbol 225 EditableTextUses:224Used by:Timeline
Symbol 226 FontUsed by:227
Symbol 227 EditableTextUses:226Used by:Timeline
Symbol 228 FontUsed by:229
Symbol 229 EditableTextUses:228Used by:Timeline
Symbol 230 EditableTextUses:220Used by:Timeline
Symbol 231 FontUsed by:232
Symbol 232 EditableTextUses:231Used by:Timeline
Symbol 233 EditableTextUses:40Used by:Timeline
Symbol 234 FontUsed by:235
Symbol 235 EditableTextUses:234Used by:Timeline
Symbol 236 FontUsed by:237
Symbol 237 EditableTextUses:236Used by:Timeline
Symbol 238 GraphicUsed by:239
Symbol 239 MovieClip {mHelpMovie1}Uses:238Used by:Timeline
Symbol 240 GraphicUsed by:241
Symbol 241 MovieClip {mHelpMovie2}Uses:240Used by:Timeline
Symbol 242 GraphicUsed by:243
Symbol 243 MovieClip {mDetector}Uses:242Used by:Timeline

Instance Names

"colorBar"Symbol 7 MovieClip {main.mPreloader} Frame 1Symbol 6 MovieClip {mColorBar}
"fon1"Symbol 39 MovieClip {mFon} Frame 1Symbol 27 MovieClip {mFon1_1}
"fon2"Symbol 39 MovieClip {mFon} Frame 1Symbol 38 MovieClip {mFon1_2}
"text"Symbol 43 MovieClip {main.mEditable} Frame 1Symbol 41 EditableText
"caption"Symbol 43 MovieClip {main.mEditable} Frame 1Symbol 42 EditableText
"movieWidth"Symbol 93 MovieClip {mPreLeg} Frame 1Symbol 92 MovieClip {mLeg}
"line"Symbol 170 MovieClip {mWebBar} Frame 1Symbol 169 MovieClip {mBarLine}
"lineWidth"Symbol 208 MovieClip {mDistJointMovie} Frame 1Symbol 207 MovieClip {mDistJointWidth}

Special Tags

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




http://swfchan.com/26/127286/info.shtml
Created: 25/2 -2019 04:40:01 Last modified: 25/2 -2019 04:40:01 Server time: 06/05 -2024 22:47:11