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

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

The Fall - solve the 30 puzzles to complete physics game.swf

This is the info page for
Flash #133332

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


Text
Sorry, this site-lock (www.twotowersgames.com) version...

<p align="center"><font face="_sans" size="17" color="#999999" letterSpacing="0.000000" kerning="1">100%</font></p>

Play

Play

<p align="center"><font face="Arial" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>Level complete! Gold medal.</b></font></p>

1

1

1324

Bonus level

<p align="left"><font face="Arial" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>Total score: 98347</b></font></p>

score: 0000

Level complete!

Click here to continue...

Total score submit

Click here to close...

Your score was saved

Submit

Enter your name:

<p align="left"></p>

verify name

get freename

Submit

Cancel

<p align="center"><font face="Arial" size="24" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>5466</b></font></p>

<p align="left"><font face="Arial_12pt_st" size="12" color="#ffffff" letterSpacing="0.000000" kerning="1">Welcome, User! You are not logged as on the portal. Your scores will not be saves.</font></p>

Login Here

Login Here

Play bonus levels on
TwoTowerGames.com!

Let's go!

Cancel

Move Alien
here.

Remove this
block, and then -
this.

Removing order is very important!

Finish levels fast!

Add to website

<p align="center"><font face="Arial" size="16" color="#ffe69c" letterSpacing="0.000000" kerning="1"><b>score: 1000</b></font></p>

<p align="center"><font face="Arial" size="16" color="#ffe69c" letterSpacing="0.000000" kerning="1"><b>level: 1</b></font></p>

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.Collision.*; import Box2D.Common.Math.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 m_friction:Number; 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){ 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; 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 LengthSquared():Number{ return (((x * x) + (y * y))); } public function SetZero():void{ x = 0; y = 0; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function 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 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 Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; 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_type:int; public var m_linearDamping:Number; public var m_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_shapeCount:int; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ 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 ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } 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 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 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 GetJointList():b2JointEdge{ return (m_jointList); } 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 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 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 GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } 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 GetAngularVelocity():Number{ return (m_angularVelocity); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } 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 GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } 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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.media.*; public class b2ContactListener { var canjump:Boolean;// = false public function b2ContactListener(){ canjump = false; super(); } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } public function Add(_arg1:b2ContactPoint):void{ if (_arg1.shape2.GetBody().GetUserData().name == "bullet"){ }; } public function Remove(_arg1:b2ContactPoint):void{ } public function can_jump(){ return (canjump); } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; 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 Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_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, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; 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
//APIEvents (com.api.as3.evnt.APIEvents) package com.api.as3.evnt { import flash.events.*; public class APIEvents extends Event { private var _data:Object; public static var GIVESCORE:String = "GIVESCORE"; public static var ADVERTISING:String = "ADVERTISING"; public static var IO_ERROR:String = "IO_ERROR"; public static var GETUSERNAME:String = "GETUSERNAME"; public static var LOADERROR:String = "LOADERROR"; public static var STARTGAME:String = "STARTGAME"; public static var BADDATA:String = "BADDATA"; public static var FACEBOOKBUTTON:String = "FACEBOOKBUTTON"; public static var BONUSCONTENT:String = "BONUSCONTENT"; public static var SECURITY_ERROR:String = "SECURITY_ERROR"; public function APIEvents(_arg1:String, _arg2:Object=undefined, _arg3:Boolean=false, _arg4:Boolean=false):void{ super(_arg1, _arg3, _arg4); _data = _arg2; } public function get data():Object{ return (_data); } } }//package com.api.as3.evnt
Section 76
//RC4 (com.api.as3.security.RC4) package com.api.as3.security { public class RC4 { protected static var mykey:Array = new Array(0xFF); protected static var sbox:Array = new Array(0xFF); protected static function charsToHex(_arg1:Array):String{ var _local2:String; var _local3:Array; var _local4:Number; _local2 = new String(""); _local3 = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"); _local4 = 0; while (_local4 < _arg1.length) { _local2 = (_local2 + (_local3[(_arg1[_local4] >> 4)] + _local3[(_arg1[_local4] & 15)])); _local4++; }; return (_local2); } public static function encrypt(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:Array; var _local5:Array; _local3 = strToChars(_arg1); _local4 = strToChars(_arg2); _local5 = calculate(_local3, _local4); return (charsToHex(_local5)); } protected static function hexToChars(_arg1:String):Array{ var _local2:Array; var _local3:Number; _local2 = new Array(); _local3 = ((_arg1.substr(0, 2))=="0x") ? 2 : 0; while (_local3 < _arg1.length) { _local2.push(parseInt(_arg1.substr(_local3, 2), 16)); _local3 = (_local3 + 2); }; return (_local2); } public static function decrypt(_arg1:String, _arg2:String):String{ var _local3:Array; var _local4:Array; var _local5:Array; _local3 = hexToChars(_arg1); _local4 = strToChars(_arg2); _local5 = calculate(_local3, _local4); return (charsToStr(_local5)); } protected static function strToChars(_arg1:String):Array{ var _local2:Array; var _local3:Number; _local2 = new Array(); _local3 = 0; while (_local3 < _arg1.length) { _local2.push(_arg1.charCodeAt(_local3)); _local3++; }; return (_local2); } protected static function calculate(_arg1:Array, _arg2:Array):Array{ var _local3:Number; var _local4:Number; var _local5:Array; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; initialize(_arg2); _local3 = 0; _local4 = 0; _local5 = new Array(); _local9 = 0; while (_local9 < _arg1.length) { _local3 = ((_local3 + 1) % 0x0100); _local4 = ((_local4 + sbox[_local3]) % 0x0100); _local7 = sbox[_local3]; sbox[_local3] = sbox[_local4]; sbox[_local4] = _local7; _local10 = ((sbox[_local3] + sbox[_local4]) % 0x0100); _local6 = sbox[_local10]; _local8 = (_arg1[_local9] ^ _local6); _local5.push(_local8); _local9++; }; return (_local5); } protected static function initialize(_arg1:Array){ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = 0; _local4 = _arg1.length; _local5 = 0; while (_local5 <= 0xFF) { mykey[_local5] = _arg1[(_local5 % _local4)]; sbox[_local5] = _local5; _local5++; }; _local6 = 0; while (_local6 <= 0xFF) { _local2 = (((_local2 + sbox[_local6]) + mykey[_local6]) % 0x0100); _local3 = sbox[_local6]; sbox[_local6] = sbox[_local2]; sbox[_local2] = _local3; _local6++; }; } protected static function charsToStr(_arg1:Array):String{ var _local2:String; var _local3:Number; _local2 = new String(""); _local3 = 0; while (_local3 < _arg1.length) { _local2 = (_local2 + String.fromCharCode(_arg1[_local3])); _local3++; }; return (_local2); } } }//package com.api.as3.security
Section 77
//API (com.api.as3.API) package com.api.as3 { import flash.display.*; import flash.events.*; import com.api.as3.evnt.*; import com.api.as3.security.*; import flash.net.*; public class API extends MovieClip { private var xml:String; private var reply_en:String; private var theKey:String; private var query_de:String; private var idkey:String;// = "aKEu-wwX2NaXPLP*9=]jbWiK" private var url:String; private var query_en:String; private var gameid:String; private var reply_de:String; public function API(_arg1:String, _arg2, _arg3){ idkey = "aKEu-wwX2NaXPLP*9=]jbWiK"; super(); this.theKey = _arg2; this.url = _arg3; this.gameid = _arg1; } public function giveScore(_arg1, _arg2, _arg3):void{ var query:*; var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var userName = _arg1; var level = _arg2; var score = _arg3; xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml = (xml + "\t <root>"); xml = (xml + "\t\t<query name=\"givescore\">"); xml = (xml + (((((((("\t\t\t<game username=\"" + userName) + "\" gameid=\"") + gameid) + "\" level=\"") + level) + "\" score=\"") + score) + "\"></game>")); xml = (xml + "\t\t</query>"); xml = (xml + "\t</root>"); query_de = xml; query = RC4.encrypt(xml, theKey); query = (query + RC4.encrypt(gameid, idkey)); query_en = query; loader = new URLLoader(); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent){ trace(("Security Error in metod 'giveScore': " + _arg1)); sendEvent(APIEvents.SECURITY_ERROR, {metod:"giveScore", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent){ trace(("IO Error in metod 'giveScore': " + _arg1)); sendEvent(APIEvents.IO_ERROR, {metod:"giveScore", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(Event.COMPLETE, function (_arg1:Event){ var _local2:URLVariables; var _local3:XML; var _local4:Number; var _local5:Number; _local2 = new URLVariables(loader.data); if (_local2.resp){ reply_en = _local2.resp; _local3 = new XML(RC4.decrypt(_local2.resp, theKey)); reply_de = _local3.toString(); _local4 = 0; _local5 = 0; if (_local3 != ""){ _local4 = (_local3.reply[0].info[0].@gameid) ? _local3.reply[0].info[0].@gameid : 0; _local5 = (_local3.reply[0].info[0].@level) ? _local3.reply[0].info[0].@level : 0; }; sendEvent(APIEvents.GIVESCORE, {gameid:_local4, level:_local5, query_de:query_de, query_en:query_en, reply_de:reply_de, reply_en:reply_en}); } else { trace("Bad xml data loaded in metod 'giveScore'."); sendEvent(APIEvents.BADDATA, {metod:"giveScore"}); }; }); request = new URLRequest(url); variables = new URLVariables(); variables.query = query; variables.k = Math.random(); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); sendEvent(APIEvents.LOADERROR, {metod:"giveScore"}); }; } public function checkUserName(_arg1):void{ var query:*; var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var userName = _arg1; xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml = (xml + "\t <root>"); xml = (xml + "\t\t<query name=\"checkusername\">"); xml = (xml + (("\t\t\t<username><![CDATA[" + userName) + "]]></username>")); xml = (xml + "\t\t</query>"); xml = (xml + "\t</root>"); query_de = xml; query = RC4.encrypt(xml, theKey); query = (query + RC4.encrypt(gameid, idkey)); query_en = query; loader = new URLLoader(); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent){ trace(("Security Error in metod 'checkUserName': " + _arg1)); sendEvent(APIEvents.SECURITY_ERROR, {metod:"getUserName", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent){ trace(("IO Error in metod 'checkUserName': " + _arg1)); sendEvent(APIEvents.IO_ERROR, {metod:"checkUserName", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(Event.COMPLETE, function (_arg1:Event){ var _local2:URLVariables; var _local3:XML; var _local4:String; var _local5:String; _local2 = new URLVariables(loader.data); if (_local2.resp){ reply_en = _local2.resp; _local3 = new XML(RC4.decrypt(_local2.resp, theKey)); reply_de = _local3.toString(); _local4 = ""; _local5 = ""; if (_local3 != ""){ _local4 = (_local3.reply[0].info[0].@existusername) ? _local3.reply[0].info[0].@existusername : ""; _local5 = (_local3.reply[0].info[0].@freeusername) ? _local3.reply[0].info[0].@freeusername : ""; }; sendEvent(APIEvents.GETUSERNAME, {existusername:_local4, freeusername:_local5, query_de:query_de, query_en:query_en, reply_de:reply_de, reply_en:reply_en}); } else { trace("Bad xml data loaded in metod 'checkUserName'."); sendEvent(APIEvents.BADDATA, {metod:"checkUserName"}); }; }); request = new URLRequest(url); variables = new URLVariables(); variables.query = query; variables.k = Math.random(); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); sendEvent(APIEvents.LOADERROR, {metod:"checkUserName"}); }; } public function advertising(_arg1):void{ var query:*; var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var host = _arg1; xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml = (xml + "\t <root>"); xml = (xml + "\t\t<query name=\"advertising\">"); xml = (xml + (((("\t\t\t<game gameid=\"" + gameid) + "\" host=\"") + host) + "\"></game>")); xml = (xml + "\t\t</query>"); xml = (xml + "\t</root>"); query_de = xml; query = RC4.encrypt(xml, theKey); query = (query + RC4.encrypt(gameid, idkey)); query_en = query; loader = new URLLoader(); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent){ trace(("Security Error in metod 'advertising': " + _arg1)); sendEvent(APIEvents.SECURITY_ERROR, {metod:"advertising", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent){ trace(("IO Error in metod 'advertising': " + _arg1)); sendEvent(APIEvents.IO_ERROR, {metod:"advertising", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(Event.COMPLETE, function (_arg1:Event){ var _local2:URLVariables; var _local3:XML; var _local4:String; _local2 = new URLVariables(loader.data); if (_local2.resp){ reply_en = _local2.resp; _local3 = new XML(RC4.decrypt(_local2.resp, theKey)); reply_de = _local3.toString(); _local4 = ""; if (_local3 != ""){ _local4 = (_local3.reply[0].info[0].@reply) ? _local3.reply[0].info[0].@reply : ""; }; sendEvent(APIEvents.ADVERTISING, {reply:_local4, query_de:query_de, query_en:query_en, reply_de:reply_de, reply_en:reply_en}); } else { trace("Bad xml data loaded in metod 'advertising'."); sendEvent(APIEvents.BADDATA, {metod:"advertising"}); }; }); request = new URLRequest(url); variables = new URLVariables(); variables.query = query; variables.k = Math.random(); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); sendEvent(APIEvents.LOADERROR, {metod:"advertising"}); }; } public function bonusContent(_arg1):void{ var query:*; var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var host = _arg1; xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml = (xml + "\t <root>"); xml = (xml + "\t\t<query name=\"bonuscontent\">"); xml = (xml + (((("\t\t\t<game gameid=\"" + gameid) + "\" host=\"") + host) + "\"></game>")); xml = (xml + "\t\t</query>"); xml = (xml + "\t</root>"); query_de = xml; query = RC4.encrypt(xml, theKey); query = (query + RC4.encrypt(gameid, idkey)); query_en = query; loader = new URLLoader(); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent){ trace(("Security Error in metod 'bonusContent': " + _arg1)); sendEvent(APIEvents.SECURITY_ERROR, {metod:"bonusContent", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent){ trace(("IO Error in metod 'bonusContent': " + _arg1)); sendEvent(APIEvents.IO_ERROR, {metod:"bonusContent", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(Event.COMPLETE, function (_arg1:Event){ var _local2:URLVariables; var _local3:XML; var _local4:String; _local2 = new URLVariables(loader.data); if (_local2.resp){ reply_en = _local2.resp; _local3 = new XML(RC4.decrypt(_local2.resp, theKey)); reply_de = _local3.toString(); _local4 = ""; if (_local3 != ""){ _local4 = (_local3.reply[0].info[0].@reply) ? _local3.reply[0].info[0].@reply : ""; }; sendEvent(APIEvents.BONUSCONTENT, {reply:_local4, query_de:query_de, query_en:query_en, reply_de:reply_de, reply_en:reply_en}); } else { trace("Bad xml data loaded in metod 'bonusContent'."); sendEvent(APIEvents.BADDATA, {metod:"bonusContent"}); }; }); request = new URLRequest(url); variables = new URLVariables(); variables.query = query; variables.k = Math.random(); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); sendEvent(APIEvents.LOADERROR, {metod:"bonusContent"}); }; } public function startGame(_arg1):void{ var query:*; var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var host = _arg1; xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml = (xml + "\t <root>"); xml = (xml + "\t\t<query name=\"startgame\">"); xml = (xml + (((("\t\t\t<game gameid=\"" + gameid) + "\" host=\"") + host) + "\"></game>")); xml = (xml + "\t\t</query>"); xml = (xml + "\t</root>"); query_de = xml; query = RC4.encrypt(xml, theKey); query = (query + RC4.encrypt(gameid, idkey)); query_en = query; loader = new URLLoader(); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent){ trace(("Security Error in metod 'startGame': " + _arg1)); sendEvent(APIEvents.SECURITY_ERROR, {metod:"startGame", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent){ trace(("IO Error in metod 'startGame': " + _arg1)); sendEvent(APIEvents.IO_ERROR, {metod:"startGame", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(Event.COMPLETE, function (_arg1:Event){ var _local2:URLVariables; var _local3:XML; _local2 = new URLVariables(loader.data); if (_local2.resp){ reply_en = _local2.resp; _local3 = new XML(RC4.decrypt(_local2.resp, theKey)); reply_de = _local3.toString(); sendEvent(APIEvents.STARTGAME, {query_de:query_de, query_en:query_en, reply_de:reply_de, reply_en:reply_en}); } else { trace("Bad xml data loaded in metod 'startGame'."); sendEvent(APIEvents.BADDATA, {metod:"startGame"}); }; }); request = new URLRequest(url); variables = new URLVariables(); variables.query = query; variables.k = Math.random(); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); sendEvent(APIEvents.LOADERROR, {metod:"startGame"}); }; } public function facebookbutton(_arg1):void{ var query:*; var loader:URLLoader; var request:URLRequest; var variables:URLVariables; var host = _arg1; xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; xml = (xml + "\t <root>"); xml = (xml + "\t\t<query name=\"facebookbutton\">"); xml = (xml + (((("\t\t\t<game gameid=\"" + gameid) + "\" host=\"") + host) + "\"></game>")); xml = (xml + "\t\t</query>"); xml = (xml + "\t</root>"); query_de = xml; query = RC4.encrypt(xml, theKey); query = (query + RC4.encrypt(gameid, idkey)); query_en = query; loader = new URLLoader(); loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, function (_arg1:SecurityErrorEvent){ trace(("Security Error in metod 'facebookbutton': " + _arg1)); sendEvent(APIEvents.SECURITY_ERROR, {metod:"facebookbutton", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent){ trace(("IO Error in metod 'facebookbutton': " + _arg1)); sendEvent(APIEvents.IO_ERROR, {metod:"facebookbutton", text:_arg1.text, type:_arg1.type}); }); loader.addEventListener(Event.COMPLETE, function (_arg1:Event){ var _local2:URLVariables; var _local3:XML; var _local4:String; _local2 = new URLVariables(loader.data); if (_local2.resp){ reply_en = _local2.resp; _local3 = new XML(RC4.decrypt(_local2.resp, theKey)); reply_de = _local3.toString(); _local4 = ""; if (_local3 != ""){ _local4 = (_local3.reply[0].info[0].@reply) ? _local3.reply[0].info[0].@reply : ""; }; sendEvent(APIEvents.FACEBOOKBUTTON, {reply:_local4, query_de:query_de, query_en:query_en, reply_de:reply_de, reply_en:reply_en}); } else { trace("Bad xml data loaded in metod 'facebookbutton'."); sendEvent(APIEvents.BADDATA, {metod:"facebookbutton"}); }; }); request = new URLRequest(url); variables = new URLVariables(); variables.query = query; variables.k = Math.random(); request.data = variables; try { loader.load(request); } catch(error:Error) { trace("Unable to load requested document."); sendEvent(APIEvents.LOADERROR, {metod:"facebookbutton"}); }; } private function sendEvent(_arg1:String, _arg2:Object):void{ dispatchEvent(new APIEvents(_arg1, _arg2)); } } }//package com.api.as3
Section 78
//AdLoader (CPMStar.AdLoader) package CPMStar { import flash.display.*; import flash.system.*; import flash.net.*; public class AdLoader { private static var cpmstarLoader:Loader; public static function LoadAd(_arg1:int, _arg2:int):DisplayObject{ var _local3:String; Security.allowDomain("server.cpmstar.com"); _local3 = "http://server.cpmstar.com/adviewas3.swf"; cpmstarLoader = new Loader(); cpmstarLoader.load(new URLRequest(((((_local3 + "?poolid=") + _arg1) + "&subpoolid=") + _arg2))); return (cpmstarLoader); } } }//package CPMStar
Section 79
//allall_15 (Untitled_fla.allall_15) package Untitled_fla { import flash.display.*; public dynamic class allall_15 extends MovieClip { public function allall_15(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package Untitled_fla
Section 80
//blik_10 (Untitled_fla.blik_10) package Untitled_fla { import flash.display.*; public dynamic class blik_10 extends MovieClip { public function blik_10(){ addFrameScript(36, frame37); } function frame37(){ stop(); } } }//package Untitled_fla
Section 81
//flag_3 (Untitled_fla.flag_3) package Untitled_fla { import flash.display.*; public dynamic class flag_3 extends MovieClip { public var flag_mc:MovieClip; public function flag_3(){ addFrameScript(0, frame1); } function frame1(){ } } }//package Untitled_fla
Section 82
//instructions_17 (Untitled_fla.instructions_17) package Untitled_fla { import flash.display.*; public dynamic class instructions_17 extends MovieClip { public function instructions_17(){ addFrameScript(264, frame265); } function frame265(){ stop(); } } }//package Untitled_fla
Section 83
//logo_6 (Untitled_fla.logo_6) package Untitled_fla { import flash.display.*; public dynamic class logo_6 extends MovieClip { public function logo_6(){ addFrameScript(123, frame124); } function frame124(){ stop(); } } }//package Untitled_fla
Section 84
//medal_m_82 (Untitled_fla.medal_m_82) package Untitled_fla { import flash.display.*; import flash.text.*; public dynamic class medal_m_82 extends MovieClip { public var lvltxt:TextField; } }//package Untitled_fla
Section 85
//par_tabl_ssav_51 (Untitled_fla.par_tabl_ssav_51) package Untitled_fla { import flash.display.*; public dynamic class par_tabl_ssav_51 extends MovieClip { public var subm:MovieClip; public var sub:SimpleButton; public var ss:MovieClip; public var hsb:SimpleButton; } }//package Untitled_fla
Section 86
//perehod_nadpisi_49 (Untitled_fla.perehod_nadpisi_49) package Untitled_fla { import flash.display.*; public dynamic class perehod_nadpisi_49 extends MovieClip { public function perehod_nadpisi_49(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package Untitled_fla
Section 87
//perehod_tabl_48 (Untitled_fla.perehod_tabl_48) package Untitled_fla { import flash.display.*; import flash.text.*; public dynamic class perehod_tabl_48 extends MovieClip { public var nadp:MovieClip; public var scoretxt:TextField; public var sav:MovieClip; } }//package Untitled_fla
Section 88
//pertab_sub_54 (Untitled_fla.pertab_sub_54) package Untitled_fla { import flash.display.*; import flash.text.*; public dynamic class pertab_sub_54 extends MovieClip { public var nametxt:TextField; public var scor:TextField; public var stat:MovieClip; public var sn:SimpleButton; public var sub:SimpleButton; public var can:SimpleButton; public var gf:SimpleButton; } }//package Untitled_fla
Section 89
//salut_5 (Untitled_fla.salut_5) package Untitled_fla { import flash.display.*; public dynamic class salut_5 extends MovieClip { public function salut_5(){ addFrameScript(0, frame1, 69, frame70); } function frame70(){ stop(); } public function fireworks(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6):void{ var _local7:DisplayObject; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; _local8 = 0; while (_local8 < _arg3) { _local7 = new fireworks_mc1(); addChild(_local7); _local7.x = _arg1; _local7.y = _arg2; _local8++; }; _local9 = 0; while (_local9 < _arg4) { _local7 = new fireworks_mc2(); addChild(_local7); _local7.x = _arg1; _local7.y = _arg2; _local9++; }; _local10 = 0; while (_local10 < _arg5) { _local7 = new fireworks_mc3(); addChild(_local7); _local7.x = _arg1; _local7.y = _arg2; _local10++; }; _local11 = 0; while (_local11 < _arg6) { _local7 = new fireworks_mc4(); addChild(_local7); _local7.x = _arg1; _local7.y = _arg2; _local11++; }; } function frame1(){ fireworks_start(); } public function fireworks_start():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local1 = (Math.random() * 20); _local2 = (Math.random() * 20); _local3 = (Math.random() * 20); _local4 = (Math.random() * 20); _local5 = 0; _local6 = 0; fireworks(_local5, _local6, _local1, _local2, _local3, _local4); } } }//package Untitled_fla
Section 90
//smmov1_57 (Untitled_fla.smmov1_57) package Untitled_fla { import flash.display.*; public dynamic class smmov1_57 extends MovieClip { public function smmov1_57(){ addFrameScript(0, frame1, 1, frame2, 2, frame3); } function frame3(){ stop(); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package Untitled_fla
Section 91
//splash_fireworks_1 (Untitled_fla.splash_fireworks_1) package Untitled_fla { import flash.display.*; public dynamic class splash_fireworks_1 extends MovieClip { public var logo:MovieClip; public function splash_fireworks_1(){ addFrameScript(126, frame127); } function frame127(){ MovieClip(root).play(); this.stop(); } } }//package Untitled_fla
Section 92
//stars_11 (Untitled_fla.stars_11) package Untitled_fla { import flash.display.*; public dynamic class stars_11 extends MovieClip { public function stars_11(){ addFrameScript(60, frame61); } function frame61(){ stop(); } } }//package Untitled_fla
Section 93
//bangmc (bangmc) package { import flash.display.*; public dynamic class bangmc extends MovieClip { } }//package
Section 94
//btnbtn (btnbtn) package { import flash.display.*; public dynamic class btnbtn extends MovieClip { } }//package
Section 95
//chickmc (chickmc) package { import flash.display.*; public dynamic class chickmc extends MovieClip { } }//package
Section 96
//circmc (circmc) package { import flash.display.*; public dynamic class circmc extends MovieClip { } }//package
Section 97
//downpanmc (downpanmc) package { import flash.display.*; import flash.text.*; public dynamic class downpanmc extends MovieClip { public var loginbtn:SimpleButton; public var txt:TextField; } }//package
Section 98
//exitmc (exitmc) package { import flash.display.*; public dynamic class exitmc extends MovieClip { } }//package
Section 99
//fireworks_mc1 (fireworks_mc1) package { import flash.events.*; import flash.display.*; public dynamic class fireworks_mc1 extends MovieClip { public var px:Number; public var py:Number; public var life:Number; public var surtunme:Number; public var gravity:Number; public var yony:Number; public var yonx:Number; public var depth:Number; public var fw_mc:MovieClip; public function fireworks_mc1(){ addFrameScript(0, frame1); } function frame1(){ life = 0.01; depth = Math.random(); scaleX = (scaleY = ((depth * 0.7) + 0.3)); yonx = (Math.random() * 2); px = (Math.random() * 10); if (yonx >= 1){ px = (px * -1); }; yony = (Math.random() * 2); py = (Math.random() * 10); if (yony >= 1){ py = (py * -1); }; surtunme = 0.93; gravity = (depth / 20); addEventListener(Event.ENTER_FRAME, update); } public function update(_arg1:Event):void{ this.x = (this.x + px); this.y = (this.y - py); px = (px * surtunme); scaleX = (scaleY = (scaleY - life)); py = (py * surtunme); py = (py - gravity); if ((((scaleX <= 0)) || ((scaleY <= 0)))){ removeEventListener(Event.ENTER_FRAME, update); parent.removeChild(this); }; } } }//package
Section 100
//fireworks_mc2 (fireworks_mc2) package { import flash.events.*; import flash.display.*; public dynamic class fireworks_mc2 extends MovieClip { public var px:Number; public var py:Number; public var life:Number; public var surtunme:Number; public var gravity:Number; public var yony:Number; public var yonx:Number; public var depth:Number; public function fireworks_mc2(){ addFrameScript(0, frame1); } function frame1(){ life = 0.01; depth = Math.random(); scaleX = (scaleY = ((depth * 0.7) + 0.3)); yonx = (Math.random() * 2); px = (Math.random() * 10); if (yonx >= 1){ px = (px * -1); }; yony = (Math.random() * 2); py = (Math.random() * 10); if (yony >= 1){ py = (py * -1); }; surtunme = 0.93; gravity = (depth / 20); addEventListener(Event.ENTER_FRAME, update); } public function update(_arg1:Event):void{ this.x = (this.x + px); this.y = (this.y - py); px = (px * surtunme); scaleX = (scaleY = (scaleY - life)); py = (py * surtunme); py = (py - gravity); if ((((scaleX <= 0)) || ((scaleY <= 0)))){ removeEventListener(Event.ENTER_FRAME, update); parent.removeChild(this); }; } } }//package
Section 101
//fireworks_mc3 (fireworks_mc3) package { import flash.events.*; import flash.display.*; public dynamic class fireworks_mc3 extends MovieClip { public var px:Number; public var py:Number; public var life:Number; public var surtunme:Number; public var gravity:Number; public var yony:Number; public var yonx:Number; public var depth:Number; public function fireworks_mc3(){ addFrameScript(0, frame1); } function frame1(){ life = 0.01; depth = Math.random(); scaleX = (scaleY = ((depth * 0.7) + 0.3)); yonx = (Math.random() * 2); px = (Math.random() * 10); if (yonx >= 1){ px = (px * -1); }; yony = (Math.random() * 2); py = (Math.random() * 10); if (yony >= 1){ py = (py * -1); }; surtunme = 0.93; gravity = (depth / 20); addEventListener(Event.ENTER_FRAME, update); } public function update(_arg1:Event):void{ this.x = (this.x + px); this.y = (this.y - py); px = (px * surtunme); scaleX = (scaleY = (scaleY - life)); py = (py * surtunme); py = (py - gravity); if ((((scaleX <= 0)) || ((scaleY <= 0)))){ removeEventListener(Event.ENTER_FRAME, update); parent.removeChild(this); }; } } }//package
Section 102
//fireworks_mc4 (fireworks_mc4) package { import flash.events.*; import flash.display.*; public dynamic class fireworks_mc4 extends MovieClip { public var px:Number; public var py:Number; public var life:Number; public var surtunme:Number; public var gravity:Number; public var yony:Number; public var yonx:Number; public var depth:Number; public function fireworks_mc4(){ addFrameScript(0, frame1); } function frame1(){ life = 0.01; depth = Math.random(); scaleX = (scaleY = ((depth * 0.7) + 0.3)); yonx = (Math.random() * 2); px = (Math.random() * 10); if (yonx >= 1){ px = (px * -1); }; yony = (Math.random() * 2); py = (Math.random() * 10); if (yony >= 1){ py = (py * -1); }; surtunme = 0.93; gravity = (depth / 20); addEventListener(Event.ENTER_FRAME, update); } public function update(_arg1:Event):void{ this.x = (this.x + px); this.y = (this.y - py); px = (px * surtunme); scaleX = (scaleY = (scaleY - life)); py = (py * surtunme); py = (py - gravity); if ((((scaleX <= 0)) || ((scaleY <= 0)))){ removeEventListener(Event.ENTER_FRAME, update); parent.removeChild(this); }; } } }//package
Section 103
//flongamove (flongamove) package { import flash.display.*; import flash.text.*; public dynamic class flongamove extends MovieClip { public var logottg:MovieClip; public var fText:TextField; public var playy:SimpleButton; public var fBar:MovieClip; public var adbox:MovieClip; } }//package
Section 104
//fonmc (fonmc) package { import flash.display.*; public dynamic class fonmc extends MovieClip { } }//package
Section 105
//Font1 (Font1) package { import flash.text.*; public dynamic class Font1 extends Font { } }//package
Section 106
//gnezd1 (gnezd1) package { import flash.display.*; public dynamic class gnezd1 extends MovieClip { } }//package
Section 107
//gnezd2 (gnezd2) package { import flash.display.*; public dynamic class gnezd2 extends MovieClip { } }//package
Section 108
//gnezd3 (gnezd3) package { import flash.display.*; public dynamic class gnezd3 extends MovieClip { } }//package
Section 109
//gnezdomc (gnezdomc) package { import flash.display.*; public dynamic class gnezdomc extends MovieClip { } }//package
Section 110
//kvadmc (kvadmc) package { import flash.display.*; public dynamic class kvadmc extends MovieClip { } }//package
Section 111
//light (light) package { import flash.display.*; public dynamic class light extends MovieClip { public function light(){ addFrameScript(19, frame20); } function frame20(){ stop(); parent.removeChild(this); } } }//package
Section 112
//LightBall (LightBall) package { import flash.display.*; public dynamic class LightBall extends MovieClip { } }//package
Section 113
//lockmc (lockmc) package { import flash.display.*; public dynamic class lockmc extends MovieClip { } }//package
Section 114
//lvlcomp (lvlcomp) package { import flash.display.*; public dynamic class lvlcomp extends MovieClip { } }//package
Section 115
//m_btn (m_btn) package { import flash.display.*; import flash.text.*; public dynamic class m_btn extends MovieClip { public var bim:MovieClip; public var levtxt:TextField; public var pov:MovieClip; public var scoretxt:TextField; public var bon:MovieClip; public var med:MovieClip; public var gal:MovieClip; } }//package
Section 116
//Main (Main) package { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; import com.api.as3.evnt.*; import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import com.api.as3.*; import flash.utils.*; import flash.filters.*; import flash.net.*; public class Main extends Sprite { public var nextbtnmc; public var btnbtnmc; public var musicbtn; var api:API; public var kvadmcar:Array; public var scm:SoundChannel; public var gnezmcar:Array; public var scoreint:int; public var bonusc:int;// = 0 var lightBall:LightBall; public var boxDef:b2PolygonDef; public var gmenu; public var fonm; public var resbtnmc; public var iTimer:Timer; private var gravity:b2Vec2; public var chickmcar:Array; public var estvrag:int;// = 1 public var glowmenu:GlowFilter; public var mpsilver; public var exitbtn; public var scoretf:TextField; public var glowfall:GlowFilter; public var glowf:GlowFilter; public var tf:TextField; public var mpgold; public var zvv1s:Sound; public var lockm; public var listjoint:Array; public var zv1s:Sound; public var pixels_in_a_meter2:int;// = 60 public var nextbtntf:TextField; public var zv2s:Sound; public var perehodm; public var allscore2:int;// = 0 public var zvv2s:Sound; public var dazvuk:Boolean;// = true var body3:b2Body; var body4:b2Body; var body2:b2Body; public var btnbtnmc3; private var m_sprite:Sprite; public var soundbtn; public var menum; public var selectm; public var peri:int;// = 0 public var mpbronze:int; private var worldAABB:b2AABB; public var zv4s:Sound; public var bodyDef:b2BodyDef; public var btnbtnmc2; public var downpanm; public var gnezobjar:Array; public var lvlpart:int;// = 0 public var format1:TextFormat; public var statint:int;// = 1 var circleDef:b2CircleDef; public var m_contactListener; public var resbtntf:TextField; public var chickobjar:Array; public var boxDef2:b2PolygonDef; public var boxDef3:b2PolygonDef; public var boxDef4:b2PolygonDef; public var zv3s:Sound; public var polygon:b2PolygonDef; public var zvmuss:Sound; public var timer:Timer; public var m_world:b2World; public var menupanm; public var my_canvas:Sprite; public var all_obj:Array; public var kvadobjar:Array; public var damenu:Boolean;// = false public var facsc:int;// = 0 public var zvmuss2:Sound; private var doSleep:Boolean;// = true public var all_mcsmen:Array; public var oknom; public var medpantf:TextField; public var bodyDef2:b2BodyDef; public var bodyDef3:b2BodyDef; public var bodyDef4:b2BodyDef; public var allscore:Number;// = 0 public var glow:GlowFilter; public var tlevel:int;// = 1 public var mouseTimer:Timer; var body:b2Body; public var btnsm:Array; public var damusic:Boolean;// = true public var authb:Boolean;// = false private var dbgSprite:Sprite; public var pantf:TextField; public var mySharedObject; private var iTunesImg:PixelExplosion; public var scoreTimer:Timer; public var namestr:String;// = "" public var all_objmen:Array; public var pixels_in_a_meter:int;// = 30 public var glmenu:Boolean;// = true public var m_mouseJoint:b2MouseJoint; public var myfont:Font1; public var all_mcs:Array; public function Main(){ var bodyDef:b2BodyDef; var boxDef:b2PolygonDef; var circleDef:b2CircleDef; var dbgDraw:b2DebugDraw; pixels_in_a_meter = 30; m_contactListener = new b2ContactListener(); mySharedObject = SharedObject.getLocal("thefall"); format1 = new TextFormat(); glow = new GlowFilter(0, 1, 4, 4, 4, 1); glowf = new GlowFilter(0xFF00, 0.6, 5, 5, 3, 3, true); glowfall = new GlowFilter(4342595, 1, 2, 2, 3, 3, true); glowmenu = new GlowFilter(0xFFFFFF, 1, 6, 6, 6, 5, true); scm = new SoundChannel(); myfont = new Font1(); btnsm = []; zvmuss = new zvmus(); zvmuss2 = new zvmus2(); pixels_in_a_meter2 = 60; polygon = new b2PolygonDef(); pantf = new TextField(); medpantf = new TextField(); resbtntf = new TextField(); nextbtntf = new TextField(); tf = new TextField(); scoretf = new TextField(); allscore = 0; damenu = false; glmenu = true; dazvuk = true; damusic = true; tlevel = 1; estvrag = 1; lvlpart = 0; kvadmcar = []; kvadobjar = []; all_mcs = []; all_obj = []; chickmcar = []; chickobjar = []; gnezmcar = []; gnezobjar = []; timer = new Timer(200, 0); mouseTimer = new Timer(30, 0); zv1s = new zv1(); zv2s = new zv2(); zv3s = new zv3(); zv4s = new zv4(); zvv1s = new zvv1(); zvv2s = new zvv2(); all_mcsmen = []; all_objmen = []; my_canvas = new Sprite(); listjoint = []; authb = false; peri = 0; bonusc = 0; facsc = 0; namestr = ""; statint = 1; allscore2 = 0; api = new API("000185", "apUfSbxD", "http://twotowersgames.com/exclusiveapi/"); worldAABB = new b2AABB(); doSleep = true; dbgSprite = new Sprite(); gravity = new b2Vec2(0, 10); super(); m_sprite = new Sprite(); addChild(m_sprite); addEventListener(Event.ENTER_FRAME, Update, false, 0, true); dbgDraw = new b2DebugDraw(); worldAABB.lowerBound.Set(-100, -100); worldAABB.upperBound.Set(100, 100); m_world = new b2World(worldAABB, gravity, doSleep); dbgDraw.m_sprite = m_sprite; dbgDraw.m_drawScale = 30; dbgDraw.m_alpha = 1; dbgDraw.m_fillAlpha = 0.5; dbgDraw.m_lineThickness = 1; dbgDraw.m_drawFlags = (b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit); m_world.SetContactListener(m_contactListener); parent.parent.addChild(my_canvas); textCreate(); if ((((selectm.visible == true)) || ((menum.visible == true)))){ scm = zvmuss.play(0, int.MAX_VALUE); }; if ((((selectm.visible == false)) && ((menum.visible == false)))){ scm = zvmuss2.play(0, int.MAX_VALUE); }; swapChildren(fonm, m_sprite); timer.addEventListener(TimerEvent.TIMER, createRectangle); timer.start(); mouseTimer.addEventListener(TimerEvent.TIMER, startTrailer); mouseTimer.start(); api.addEventListener(APIEvents.STARTGAME, function (_arg1:APIEvents){ }); api.startGame(root.loaderInfo.loaderURL); api.addEventListener(APIEvents.BONUSCONTENT, function (_arg1:APIEvents){ trace(_arg1.data.reply); if (_arg1.data.reply == "allowed"){ bonusc = 2; }; if (_arg1.data.reply == "prohibited"){ bonusc = 1; }; }); api.bonusContent(root.loaderInfo.loaderURL); api.addEventListener(APIEvents.GETUSERNAME, function (_arg1:APIEvents){ if (peri == 1){ trace(_arg1.data.existusername); if (_arg1.data.existusername == "true"){ statint = 3; trace("zanyato"); perehodm.tabl.sav.subm.sub.visible = false; }; if (_arg1.data.existusername == "false"){ statint = 2; trace("svobodno"); perehodm.tabl.sav.subm.sub.visible = true; namestr = perehodm.tabl.sav.subm.nametxt.text; }; perehodm.tabl.sav.subm.stat.gotoAndStop(statint); }; if (peri == 2){ namestr = _arg1.data.freeusername; perehodm.tabl.sav.subm.nametxt.text = namestr; perehodm.tabl.sav.subm.sub.visible = true; statint = 2; perehodm.tabl.sav.subm.stat.gotoAndStop(statint); }; }); api.addEventListener(APIEvents.FACEBOOKBUTTON, function (_arg1:APIEvents){ trace(_arg1.data.reply); if (_arg1.data.reply == "allowed"){ facsc = 1; }; if (_arg1.data.reply == "prohibited"){ facsc = 2; }; }); api.facebookbutton(root.loaderInfo.loaderURL); } public function create_palkan(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; _local9 = new palkamc(); _local9.gotoAndStop(_arg7); bodyDef = new b2BodyDef(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_local9.width / 2)); _local9.y = (_arg2 + (_local9.height / 2)); _local9.dead = false; _local9.filters = [glowfall]; if (_arg8 == 1){ _local9.buttonMode = true; _local9.addEventListener(MouseEvent.CLICK, selmcClick); _local9.addEventListener(MouseEvent.MOUSE_OVER, selmcOver); _local9.addEventListener(MouseEvent.MOUSE_OUT, selmcOut); }; bodyDef.position.Set((_local9.x / pixels_in_a_meter), (_local9.y / pixels_in_a_meter)); boxDef = new b2PolygonDef(); boxDef.SetAsBox(real_pixels(_local9.width), real_pixels(_local9.height)); boxDef.density = 1; if ((((_arg7 == 3)) || ((_arg7 == 5)))){ boxDef.density = 0; }; boxDef.friction = 1; boxDef.restitution = 0; bodyDef.userData = _local9; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(boxDef); body.SetMassFromShapes(); parent.parent.addChild(_local9); all_mcsmen.push(_local9); all_objmen.push(body); } public function subcanclick(_arg1:Event):void{ _arg1.target.parent.parent.subm.visible = false; _arg1.target.parent.parent.ss.visible = false; perehodm.tabl.buttonMode = true; } public function gfclick(_arg1:MouseEvent){ peri = 2; api.checkUserName(perehodm.tabl.sav.subm.nametxt.text); } public function create_rjoint(_arg1:int, _arg2:int):void{ var _local3:b2Body; var _local4:b2Body; var _local5:b2Joint; var _local6:*; var _local7:b2Contact; var _local8:*; var _local9:*; _local6 = new b2Vec2((_arg1 / pixels_in_a_meter), (_arg2 / pixels_in_a_meter)); _local3 = m_world.GetGroundBody(); _local4 = m_world.GetGroundBody(); bodyDef = new b2BodyDef(); bodyDef.position.x = (_arg1 / pixels_in_a_meter); bodyDef.position.y = (_arg2 / pixels_in_a_meter); circleDef = new b2CircleDef(); circleDef.radius = (5 / pixels_in_a_meter); circleDef.density = 0; circleDef.isSensor = true; bodyDef.userData = new Sprite(); body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); if (m_world.m_contactList){ _local7 = m_world.m_contactList; _local8 = _local7.GetShape2().GetBody(); _local9 = _local7.GetShape1().GetBody(); if (_local8 == body){ trace(_local9); }; if (_local9 == body){ trace(_local8); }; }; m_world.DestroyBody(body); } public function selbtnClick2(_arg1:Event):void{ oknom.visible = true; } public function snclick(_arg1:MouseEvent){ peri = 1; api.checkUserName(perehodm.tabl.sav.subm.nametxt.text); } public function selmen4click(_arg1:Event):void{ if (lvlpart < 3){ lvlpart++; selMen(); if (dazvuk){ zvv1s.play(); }; }; } public function create_gnezdo(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; var _local10:*; _local9 = new gnezd3(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_local9.width / 2)); _local9.y = (_arg2 + (_local9.height / 2)); _local9.rotation = _arg5; addChild(_local9); gnezmcar.push(_local9); } public function hsb2click(_arg1:MouseEvent){ var _local2:String; _local2 = ("http://twotowersgames.com/eredir/b7ss9ZxZRggb?username=" + perehodm.tabl.sav.subm.nametxt.text); navigateToURL(new URLRequest(_local2), "_blank"); } public function butmenOver(_arg1:Event):void{ _arg1.target.gotoAndPlay(2); } public function create_kvad(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; var _local10:GlowFilter; var _local11:GlowFilter; _local9 = new kvadmc(); _local9.gotoAndStop(_arg7); bodyDef = new b2BodyDef(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_local9.width / 2)); _local9.y = (_arg2 + (_local9.height / 2)); _local9.dead = false; _local9.filters = [glowfall]; if (_arg8 == 1){ _local9.buttonMode = true; _local9.addEventListener(MouseEvent.CLICK, selmcClick); _local9.addEventListener(MouseEvent.MOUSE_OVER, selmcOver); _local9.addEventListener(MouseEvent.MOUSE_OUT, selmcOut); }; bodyDef.position.Set((_local9.x / pixels_in_a_meter), (_local9.y / pixels_in_a_meter)); boxDef = new b2PolygonDef(); boxDef.SetAsBox(real_pixels(_local9.width), real_pixels(_local9.height)); boxDef.density = 0; if ((((_arg7 == 5)) || ((_arg7 == 6)))){ boxDef.density = 1; }; if (_arg8 == 1){ _local9.gotoAndStop((_arg7 + 5)); _local10 = new GlowFilter(16512307, 1, 8, 8, 2, 3, false, false); _local11 = new GlowFilter(16512307, 1, 8, 8, 2, 3, true, false); _local9.ln = 1; _local9.addEventListener(Event.ENTER_FRAME, lasd); _local9.filters = [_local10, _local11]; _local9.obr = "net"; }; boxDef.friction = 1; boxDef.restitution = 0; bodyDef.userData = _local9; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(boxDef); body.SetMassFromShapes(); addChild(_local9); kvadmcar.push(_local9); kvadobjar.push(body); } function gameStarted(_arg1:APIEvents):void{ trace(_arg1.data.username); trace(_arg1.data.authed); if (_arg1.data.authed == 0){ authb = false; }; if (_arg1.data.authed == 1){ authb = true; }; downpanm = new downpanmc(); downpanm.x = 0; downpanm.y = 495; downpanm.loginbtn.addEventListener(MouseEvent.CLICK, loginbtnclick); parent.parent.addChild(downpanm); if (_arg1.data.authed == 0){ downpanm.txt.text = "You are not logged on the portal. Your scores will not be saves."; downpanm.loginbtn.visible = true; }; if (_arg1.data.authed == 1){ downpanm.txt.text = (("Logged as " + _arg1.data.username) + "."); downpanm.loginbtn.visible = false; }; } public function create_palka(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; var _local10:GlowFilter; var _local11:GlowFilter; _local9 = new palkamc(); _local9.gotoAndStop(_arg7); bodyDef = new b2BodyDef(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_local9.width / 2)); _local9.y = (_arg2 + (_local9.height / 2)); _local9.dead = false; _local9.filters = [glowfall]; if (_arg8 == 1){ _local9.buttonMode = true; _local9.addEventListener(MouseEvent.CLICK, selmcClick); _local9.addEventListener(MouseEvent.MOUSE_OVER, selmcOver); _local9.addEventListener(MouseEvent.MOUSE_OUT, selmcOut); }; bodyDef.position.Set((_local9.x / pixels_in_a_meter), (_local9.y / pixels_in_a_meter)); boxDef = new b2PolygonDef(); boxDef.SetAsBox(real_pixels(_local9.width), real_pixels(_local9.height)); boxDef.density = 1; if ((((_arg7 == 3)) || ((_arg7 == 5)))){ boxDef.density = 0; }; if (_arg8 == 1){ _local9.gotoAndStop((_arg7 + 5)); _local10 = new GlowFilter(16512307, 1, 8, 8, 2, 3, false, false); _local11 = new GlowFilter(16512307, 1, 8, 8, 2, 3, true, false); _local9.ln = 1; _local9.addEventListener(Event.ENTER_FRAME, lasd); _local9.filters = [_local10, _local11]; _local9.obr = "net"; }; boxDef.friction = 1; boxDef.restitution = 0; bodyDef.userData = _local9; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(boxDef); body.SetMassFromShapes(); addChild(_local9); kvadmcar.push(_local9); kvadobjar.push(body); } public function selmen1click(_arg1:Event):void{ if (dazvuk){ zvv1s.play(); }; trace("yes"); } public function selOver(_arg1:Event):void{ _arg1.target.parent.alpha = 0.5; } function createRectangle(_arg1:Event):void{ var _local2:uint; var _local3:MyRectangle; _local2 = 0; while (_local2 < chickmcar.length) { if (chickmcar[_local2].dead == true){ _local3 = new MyRectangle(); _local3.x = chickmcar[_local2].x; _local3.y = chickmcar[_local2].y; _local3.scaleX = (_local3.scaleY = (Math.random() * 1)); _local3.xspeed = ((Math.random() * 10) - 5); _local3.yspeed = ((Math.random() * 10) - 5); _local3.alphaSpeed = -0.05; _local3.scaleSpeed = (Math.random() * 0.05); _local3.zv = random(1, 2); _local3.mouseEnabled = false; _local3.addEventListener(Event.ENTER_FRAME, animate); addChild(_local3); if (dazvuk){ if (_local3.zv == 1){ zv2s.play(); }; if (_local3.zv == 2){ zv3s.play(); }; }; }; _local2++; }; } public function selmcOver(_arg1:Event):void{ _arg1.target.alpha = 0.7; } public function real_pixels(_arg1:int){ return (((_arg1 / pixels_in_a_meter) / 2)); } public function tablclick(_arg1:Event):void{ if (dazvuk){ zvv1s.play(); }; _arg1.target.parent.parent.play(); } public function create_kvadn(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; _local9 = new kvadmc(); _local9.gotoAndStop(_arg7); bodyDef = new b2BodyDef(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_local9.width / 2)); _local9.y = (_arg2 + (_local9.height / 2)); _local9.dead = false; _local9.filters = [glowfall]; if (_arg8 == 1){ _local9.buttonMode = true; _local9.addEventListener(MouseEvent.CLICK, selmcClick); _local9.addEventListener(MouseEvent.MOUSE_OVER, selmcOver); _local9.addEventListener(MouseEvent.MOUSE_OUT, selmcOut); }; bodyDef.position.Set((_local9.x / pixels_in_a_meter), (_local9.y / pixels_in_a_meter)); boxDef = new b2PolygonDef(); boxDef.SetAsBox(real_pixels(_local9.width), real_pixels(_local9.height)); boxDef.density = 0; if ((((_arg7 == 5)) || ((_arg7 == 6)))){ boxDef.density = 1; }; boxDef.friction = 1; boxDef.restitution = 0; bodyDef.userData = _local9; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(boxDef); body.SetMassFromShapes(); parent.parent.addChild(_local9); all_mcsmen.push(_local9); all_objmen.push(body); } public function lasd(_arg1:Event):void{ var _local2:GlowFilter; var _local3:GlowFilter; if (_arg1.target.obr == "net"){ _arg1.target.ln = (_arg1.target.ln - 0.05); }; if (_arg1.target.obr == "da"){ _arg1.target.ln = (_arg1.target.ln + 0.05); }; _local2 = new GlowFilter(0xFF3300, _arg1.target.ln, 6, 6, 1.3, 1, false, false); _local3 = new GlowFilter(0xFF3300, _arg1.target.ln, 6, 6, 1.3, 1, true, false); _arg1.target.filters = [_local2, _local3]; if (_arg1.target.ln <= 0.4){ _arg1.target.obr = "da"; }; if (_arg1.target.ln >= 1){ _arg1.target.obr = "net"; }; } public function butm3click(_arg1:Event):void{ if (dazvuk){ zvv1s.play(); }; trace("yes"); } public function startTrailer(_arg1:Event):void{ lightBall = new LightBall(); lightBall.mouseEnabled = false; lightBall.mouseChildren = false; lightBall.x = (mouseX + (Math.random() * lightBall.width)); lightBall.y = (mouseY - (Math.random() * lightBall.height)); parent.parent.addChild(lightBall); lightBall.addEventListener(Event.ENTER_FRAME, animatedd); } public function textCreate():void{ format1.font = myfont.fontName; format1.color = "0xffffff"; format1.size = 16; gmenu = new MovieClip(); gmenu.x = 0; gmenu.y = 0; parent.addChild(gmenu); menupanm = new menupan(); menupanm.x = 0; menupanm.y = 0; addChild(menupanm); menupanm.resbtn.addEventListener(MouseEvent.CLICK, resBtnEv); menupanm.mmbtn.addEventListener(MouseEvent.CLICK, closeBtn); menupanm.ttgbtn.addEventListener(MouseEvent.CLICK, ttg1click); menupanm.walbtn.addEventListener(MouseEvent.CLICK, walclick); glmenu = true; selectm = new selectmc(); selectm.x = (0 + (selectm.width / 2)); selectm.y = (0 + (selectm.height / 2)); parent.addChild(selectm); selectm.subbtn.addEventListener(MouseEvent.CLICK, subbtnBtn); selectm.s1.addEventListener(MouseEvent.CLICK, selmen3click); selectm.s2.addEventListener(MouseEvent.CLICK, selmen4click); selectm.mmbtn.addEventListener(MouseEvent.CLICK, closeBtn); selectm.ttgbtn.addEventListener(MouseEvent.CLICK, ttg1click); selectm.walbtn.addEventListener(MouseEvent.CLICK, walclick); menum = new menumc(); menum.x = (menum.width / 2); menum.y = ((menum.height / 2) - 56.25); parent.addChild(menum); menum.ngb.addEventListener(MouseEvent.CLICK, butm1click); menum.mgb.addEventListener(MouseEvent.CLICK, fButtonClicked); menum.ttgbtn.addEventListener(MouseEvent.CLICK, ttg1click); menum.walbtn.addEventListener(MouseEvent.CLICK, walclick); menum.addbut.addEventListener(MouseEvent.CLICK, addbutclick); menum.hsb.addEventListener(MouseEvent.CLICK, hsbclick); exitbtn = new exitmc(); exitbtn.x = (617 + (exitbtn.width / 2)); exitbtn.y = (480 + (exitbtn.height / 2)); exitbtn.filters = [glow]; parent.addChild(exitbtn); btnbtnmc = new btnbtn(); btnbtnmc.x = exitbtn.x; btnbtnmc.y = exitbtn.y; btnbtnmc.buttonMode = true; parent.addChild(btnbtnmc); btnbtnmc.addEventListener(MouseEvent.CLICK, closeBtn); btnbtnmc.addEventListener(MouseEvent.MOUSE_OVER, btnOver); btnbtnmc.addEventListener(MouseEvent.MOUSE_OUT, btnOut); exitbtn.visible = false; btnbtnmc.visible = false; soundbtn = new soundmc(); soundbtn.x = (670 + (soundbtn.width / 2)); soundbtn.y = (3 + (soundbtn.height / 2)); soundbtn.filters = [glow]; soundbtn.gotoAndStop(1); parent.addChild(soundbtn); btnbtnmc2 = new btnbtn(); btnbtnmc2.x = soundbtn.x; btnbtnmc2.y = soundbtn.y; btnbtnmc2.buttonMode = true; parent.addChild(btnbtnmc2); btnbtnmc2.addEventListener(MouseEvent.CLICK, soundBtnDa); btnbtnmc2.addEventListener(MouseEvent.MOUSE_OVER, btnOver); btnbtnmc2.addEventListener(MouseEvent.MOUSE_OUT, btnOut); musicbtn = new musicmc(); musicbtn.x = (635 + (musicbtn.width / 2)); musicbtn.y = (3 + (musicbtn.height / 2)); musicbtn.filters = [glow]; musicbtn.gotoAndStop(1); parent.addChild(musicbtn); btnbtnmc3 = new btnbtn(); btnbtnmc3.x = musicbtn.x; btnbtnmc3.y = musicbtn.y; btnbtnmc3.buttonMode = true; parent.addChild(btnbtnmc3); btnbtnmc3.addEventListener(MouseEvent.CLICK, musicBtnDa); btnbtnmc3.addEventListener(MouseEvent.MOUSE_OVER, btnOver); btnbtnmc3.addEventListener(MouseEvent.MOUSE_OUT, btnOut); fonm = new fonmc(); fonm.x = (fonm.width / 2); fonm.y = (fonm.height / 2); addChild(fonm); fonm.gotoAndStop(1); scoreTimer = new Timer(1000); scoreTimer.addEventListener(TimerEvent.TIMER, onScoreTimer); mySharedObject.data.lev0 = "100"; exitbtn.visible = false; lockm = new lockmc(); lockm.x = 0; lockm.y = 0; parent.addChild(lockm); lockm.visible = false; oknom = new oknomc(); oknom.x = 350; oknom.y = 262; parent.parent.addChild(oknom); oknom.ok.addEventListener(MouseEvent.CLICK, oknookbtn); oknom.cancel.addEventListener(MouseEvent.CLICK, oknocanbtn); oknom.visible = false; } public function create_chickn():void{ var _local1:*; var _local2:Number; _local2 = random(1, 2); _local1 = new chickmc(); _local1.getChildAt(1).gotoAndStop(1); _local1.getChildAt(2).visible = false; _local1.gotoAndStop(random(1, 3)); bodyDef = new b2BodyDef(); if (_local2 == 1){ _local1.x = (random(650, 760) + (_local1.width / 2)); _local1.y = (random(-60, -40) + (_local1.height / 2)); }; if (_local2 == 2){ _local1.x = (random(-10, 100) + (_local1.width / 2)); _local1.y = (random(-60, -40) + (_local1.height / 2)); }; bodyDef.position.x = (_local1.x / pixels_in_a_meter); bodyDef.position.y = (_local1.y / pixels_in_a_meter); circleDef = new b2CircleDef(); circleDef.radius = ((_local1.width / 2) / pixels_in_a_meter); circleDef.density = 1; circleDef.friction = 1; circleDef.restitution = 0; bodyDef.userData = _local1; body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); parent.parent.addChild(_local1); all_mcsmen.push(_local1); all_objmen.push(body); } public function soundBtnDa(_arg1:MouseEvent):void{ if (soundbtn.currentFrame == 1){ soundbtn.gotoAndStop(2); dazvuk = false; } else { if (soundbtn.currentFrame == 2){ soundbtn.gotoAndStop(1); dazvuk = true; }; }; } public function create_circ(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; var _local10:GlowFilter; var _local11:GlowFilter; _local9 = new circmc(); _local9.gotoAndStop(_arg7); _local9.filters = [glowfall]; if (_arg8 == 1){ _local9.buttonMode = true; _local9.addEventListener(MouseEvent.CLICK, selmcClick); _local9.addEventListener(MouseEvent.MOUSE_OVER, selmcOver); _local9.addEventListener(MouseEvent.MOUSE_OUT, selmcOut); }; bodyDef = new b2BodyDef(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_arg3 / 2)); _local9.y = (_arg2 + (_arg4 / 2)); bodyDef.position.x = (_local9.x / pixels_in_a_meter); bodyDef.position.y = (_local9.y / pixels_in_a_meter); circleDef = new b2CircleDef(); circleDef.radius = ((_arg3 / 2) / pixels_in_a_meter); circleDef.density = 1; if ((((_arg7 == 2)) || ((_arg7 == 4)))){ circleDef.density = 0; }; if (_arg8 == 1){ _local9.gotoAndStop((_arg7 + 4)); _local10 = new GlowFilter(16512307, 1, 8, 8, 2, 3, false, false); _local11 = new GlowFilter(16512307, 1, 8, 8, 2, 3, true, false); _local9.ln = 1; _local9.addEventListener(Event.ENTER_FRAME, lasd); _local9.filters = [_local10, _local11]; _local9.obr = "net"; }; circleDef.friction = 1; circleDef.restitution = 0; bodyDef.userData = _local9; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); addChild(_local9); kvadmcar.push(_local9); kvadobjar.push(body); } public function killMeDa(_arg1:MovieClip):void{ _arg1.addFrameScript((_arg1.totalFrames - 1), null); parent.removeChild(_arg1); } public function selectBtnEv(_arg1:MouseEvent):void{ menum.visible = false; selectm.visible = true; glmenu = true; btnbtnmc.visible = false; allscore = 0; if (damusic){ scm.stop(); scm = zvmuss.play(0, int.MAX_VALUE); }; selMen(); } public function oknookbtn(_arg1:MouseEvent){ oknom.visible = false; navigateToURL(new URLRequest("http://twotowersgames.com/eredir/MhDAxCCmCvzB"), "_blank"); } public function random(_arg1:Number, _arg2:Number):Number{ return ((Math.round((Math.random() * (_arg2 - _arg1))) + _arg1)); } public function ttg1click(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/Kgcgn6I2pbGT"), "_blank"); } public function subbtnBtn(_arg1:Event):void{ var e = _arg1; tlevel = 0; scoreint = allscore; perehodm = new perehodmc(); perehodm.x = (perehodm.width / 2); perehodm.y = (perehodm.height / 2); parent.addChild(perehodm); perehodm.addEventListener(Event.ENTER_FRAME, UpdatePerehod); perehodm.addFrameScript((perehodm.totalFrames - 1), function (_arg1:MovieClip){ var perehodm = _arg1; return (function (){ killMeDa(perehodm); }); }(perehodm)); } public function subperclick2(_arg1:Event):void{ var ik:*; var e = _arg1; e.target.parent.parent.ss.visible = true; e.target.parent.parent.subm.visible = false; api.addEventListener(APIEvents.GIVESCORE, function (_arg1:APIEvents){ }); allscore2 = 0; ik = 1; while (ik < 31) { if (mySharedObject.data[("lev" + ik)] != undefined){ allscore2 = (allscore2 + mySharedObject.data[("lev" + ik)]); }; ik = (ik + 1); }; api.giveScore(namestr, 0, allscore2); e.target.removeEventListener(MouseEvent.CLICK, subperclick2); perehodm.tabl.buttonMode = true; } public function musicBtnDa(_arg1:MouseEvent):void{ if (musicbtn.currentFrame == 1){ scm.stop(); musicbtn.gotoAndStop(2); damusic = false; } else { if (musicbtn.currentFrame == 2){ if ((((selectm.visible == true)) || ((menum.visible == true)))){ scm = zvmuss.play(0, int.MAX_VALUE); }; if ((((selectm.visible == false)) && ((menum.visible == false)))){ scm = zvmuss2.play(0, int.MAX_VALUE); }; musicbtn.gotoAndStop(1); damusic = true; }; }; } public function textUpdate():void{ menupanm.lvltxt.text = ("level " + tlevel); menupanm.scoretxt.text = ("score: " + scoreint); } function animate(_arg1:Event):void{ var _local2:MyRectangle; _local2 = MyRectangle(_arg1.target); _local2.x = (_local2.x + _local2.xspeed); _local2.y = (_local2.y + _local2.yspeed); _local2.alpha = (_local2.alpha + _local2.alphaSpeed); _local2.scaleX = (_local2.scaleX + _local2.scaleSpeed); _local2.scaleY = (_local2.scaleY + _local2.scaleSpeed); _local2.rotation = (Math.random() * 0x0100); if (_local2.alpha < 0){ _local2.removeEventListener(Event.ENTER_FRAME, animate); removeChild(_local2); }; } public function selbtnClick(_arg1:Event):void{ if (((!((mySharedObject.data[("lev" + _arg1.target.clev)] == undefined))) || ((((mySharedObject.data[("lev" + (_arg1.target.clev + 1))] == undefined)) && (!((mySharedObject.data[("lev" + (_arg1.target.clev - 1))] == undefined))))))){ menum.visible = false; selectm.visible = false; tlevel = _arg1.target.clev; glmenu = false; scm.stop(); if (damusic){ scm = zvmuss2.play(0, int.MAX_VALUE); }; musicbtn.visible = true; soundbtn.visible = true; worldClear(); }; } public function selOut(_arg1:Event):void{ _arg1.target.parent.alpha = 1; } public function Update(_arg1:Event):void{ var _local2:uint; var _local3:b2Body; m_world.Step((1 / 30), 10); deadhit(); hitgnez(); endLevel(); menuhit(); textUpdate(); my_canvas.graphics.clear(); my_canvas.graphics.lineStyle(2, 0, 1); _local2 = 0; while (_local2 < listjoint.length) { if (listjoint[_local2] != undefined){ my_canvas.graphics.moveTo((listjoint[_local2].GetAnchor1().x * 30), (listjoint[_local2].GetAnchor1().y * 30)); my_canvas.graphics.lineTo((listjoint[_local2].GetAnchor2().x * 30), (listjoint[_local2].GetAnchor2().y * 30)); }; _local2++; }; _local3 = m_world.m_bodyList; while (_local3) { if ((((_local3.m_userData is Sprite)) && (!(_local3.IsStatic())))){ _local3.m_userData.x = (_local3.GetPosition().x * pixels_in_a_meter); _local3.m_userData.y = (_local3.GetPosition().y * pixels_in_a_meter); _local3.m_userData.rotation = (_local3.GetAngle() * (180 / Math.PI)); }; _local3 = _local3.m_next; }; } public function subperclick(_arg1:Event):void{ _arg1.target.parent.ss.visible = true; _arg1.target.parent.subm.visible = true; perehodm.tabl.buttonMode = false; } private function init():void{ fonm.gotoAndStop(1); if (tlevel == 1){ scoreint = 1000; fonm.gotoAndStop(2); create_gnezdo(365, 330, 60, 50, 0, 0, 0, 0); create_chick(365, 135, 60, 60, 0, 0, 2, 0); create_kvad(380, 195, 30, 30, 0, 0, 3, 1); create_palka(355, 380, 80, 10, 0, 0, 3, 0); create_kvad(380, 225, 30, 30, 0, 0, 2, 1); create_kvad(380, 0xFF, 30, 30, 0, 0, 1, 1); estvrag = 1; }; if (tlevel == 2){ scoreint = 1000; create_chick(235, 185, 40, 40, 0, 0, 1, 0); create_chick(450, 185, 40, 40, 0, 0, 1, 0); create_palka(220, 225, 140, 10, 0, 0, 1, 0); create_palka(325, 315, 80, 10, 0, 0, 3, 0); create_gnezdo(335, 265, 60, 50, 0, 0, 0, 0); create_palka(365, 225, 140, 10, 0, 0, 1, 0); create_circ(240, 235, 30, 30, 0, 0, 2, 0); create_circ(455, 235, 30, 30, 0, 0, 2, 0); create_kvad(340, 0xFF, 20, 20, 0, 0, 4, 1); create_kvad(365, 0xFF, 20, 20, 0, 0, 4, 1); create_kvad(365, 235, 20, 20, 0, 0, 5, 0); create_kvad(340, 235, 20, 20, 0, 0, 5, 0); estvrag = 2; }; if (tlevel == 3){ scoreint = 1000; create_chick(355, 140, 60, 60, 0, 0, 2, 0); create_chick(365, 200, 40, 40, 0, 0, 1, 0); create_chick(370, 240, 30, 30, 0, 0, 3, 0); create_gnezdo(130, 370, 60, 50, 0, 0, 0, 0); create_palka(345, 270, 80, 10, 0, 0, 3, 1); create_palka(270, 345, 160, 10, 0, 0, 2, 0); create_kvad(170, 430, 20, 20, 0, 0, 1, 0); create_kvad(120, 430, 20, 20, 0, 0, 1, 0); create_palka(160, 340, 100, 10, 0, 0, 2, 0); create_kvad(200, 350, 20, 20, 0, 0, 4, 1); create_circ(400, 355, 20, 20, 0, 0, 4, 1); create_circ(280, 355, 20, 20, 0, 0, 4, 1); create_circ(280, 375, 20, 20, 0, 0, 4, 1); create_circ(280, 395, 20, 20, 0, 0, 4, 1); create_circ(335, 280, 30, 30, 0, 0, 2, 1); create_circ(400, 375, 20, 20, 0, 0, 4, 1); create_circ(400, 395, 20, 20, 0, 0, 4, 1); create_circ(405, 280, 30, 30, 0, 0, 2, 1); create_kvad(235, 430, 20, 20, 0, 0, 1, 1); create_kvad(145, 430, 20, 20, 0, 0, 1, 0); estvrag = 3; }; if (tlevel == 4){ scoreint = 1000; create_circ(300, 80, 30, 30, 0, 0, 2, 0); create_gnezdo(340, 405, 60, 50, 0, 0, 0, 0); create_palka(125, 315, 180, 10, 0, 0, 1, 0); create_palka(350, 270, 80, 10, 0, 0, 3, 0); create_chick(370, 230, 40, 40, 0, 0, 1, 0); create_kvad(260, 375, 20, 20, 0, 0, 4, 1); create_palka(330, 455, 80, 10, 0, 0, 3, 0); create_circ(290, 210, 55, 55, 0, 0, 1, 0); create_kvad(130, 395, 20, 20, 0, 0, 4, 1); create_kvad(200, 325, 20, 20, 0, 0, 1, 1); create_kvad(130, 375, 20, 20, 0, 0, 4, 1); create_kvad(260, 395, 20, 20, 0, 0, 4, 1); create_circ(130, 115, 55, 55, 0, 0, 1, 0); create_palka(104, 171, 122, 10, 0, 0, 2, 0); create_kvad(190, 180, 20, 20, 0, 0, 3, 1); create_kvad(110, 180, 20, 20, 0, 0, 3, 1); create_kvad(190, 200, 20, 20, 0, 0, 3, 1); create_kvad(110, 200, 20, 20, 0, 0, 3, 1); create_djoint(315, 98, 315, 219); estvrag = 1; }; if (tlevel == 5){ scoreint = 1000; create_triangle(215, 190, 30, 30, 25, 0, 2, 0); create_palka(183, 244, 180, 10, 25, 0, 3, 0); create_chick(190, 175, 30, 30, 0, 0, 3, 0); create_palka(388, 244, 180, 10, -25, 0, 3, 0); create_triangle(500, 190, 30, 30, -25, 0, 2, 0); create_chick(525, 180, 30, 30, 0, 0, 3, 0); create_gnezdo(345, 295, 60, 50, 0, 0, 0, 0); create_palka(370, 120, 20, 80, 0, 0, 4, 1); create_kvad(370, 200, 20, 20, 0, 0, 3, 1); create_palka(335, 345, 80, 10, 0, 0, 3, 0); estvrag = 2; }; if (tlevel == 6){ scoreint = 1000; create_chick(330, 210, 60, 60, 0, 0, 2, 0); create_circ(345, 270, 30, 30, 0, 0, 2, 0); create_circ(585, 170, 45, 45, 0, 0, 1, 0); create_kvad(565, 195, 20, 20, 0, 0, 4, 1); create_circ(470, 45, 20, 20, 0, 0, 4, 1); create_palka(480, 185, 10, 80, 0, 0, 4, 0); create_kvad(475, 265, 20, 20, 0, 0, 4, 1); create_kvad(475, 165, 20, 20, 0, 0, 5, 0); create_kvad(475, 145, 20, 20, 0, 0, 5, 0); create_triangle(470, 115, 30, 30, 0, 0, 2, 0); create_kvad(475, 285, 20, 20, 0, 0, 4, 1); create_kvad(475, 305, 20, 20, 0, 0, 4, 1); create_palka(240, 240, 80, 10, 0, 0, 1, 0); create_circ(265, 250, 30, 30, 0, 0, 2, 1); create_kvad(295, 320, 20, 20, 0, 0, 3, 0); create_kvad(245, 320, 20, 20, 0, 0, 3, 0); create_gnezdo(130, 315, 60, 50, 0, 0, 0, 0); create_palka(120, 365, 80, 10, 0, 0, 3, 0); create_triangle(240, 290, 30, 30, 0, 0, 1, 1); create_triangle(290, 290, 30, 30, 0, 0, 1, 1); create_chick(265, 210, 30, 30, 0, 0, 3, 1); create_djoint(479, 55, 599, 182); estvrag = 2; }; if (tlevel == 7){ scoreint = 1000; create_kvad(185, 150, 20, 20, 0, 0, 3, 1); create_chick(190, 110, 40, 40, 0, 0, 1, 0); create_kvad(205, 150, 20, 20, 0, 0, 3, 1); create_kvad(225, 170, 20, 20, 0, 0, 3, 1); create_kvad(205, 170, 20, 20, 0, 0, 3, 1); create_kvad(245, 190, 20, 20, 0, 0, 3, 1); create_kvad(225, 190, 20, 20, 0, 0, 3, 1); create_kvad(260, 210, 20, 20, 0, 0, 3, 1); create_kvad(240, 210, 20, 20, 0, 0, 3, 1); create_gnezdo(345, 430, 60, 50, 0, 0, 0, 1); create_kvad(225, 230, 20, 20, 0, 0, 3, 1); create_kvad(205, 250, 20, 20, 0, 0, 3, 1); create_kvad(185, 270, 20, 20, 0, 0, 3, 1); create_kvad(165, 290, 20, 20, 0, 0, 3, 1); create_kvad(145, 310, 20, 20, 0, 0, 3, 1); create_kvad(125, 335, 20, 20, 0, 0, 3, 1); create_kvad(225, 250, 20, 20, 0, 0, 3, 1); create_kvad(205, 270, 20, 20, 0, 0, 3, 1); create_kvad(185, 290, 20, 20, 0, 0, 3, 1); create_kvad(165, 310, 20, 20, 0, 0, 3, 1); create_circ(20, 335, 30, 30, 0, 0, 2, 0); create_palka(185, 310, 140, 10, 0, 0, 1, 0); create_kvad(185, 320, 20, 20, 0, 0, 1, 1); create_kvad(245, 320, 20, 20, 0, 0, 1, 1); create_palka(5, 325, 140, 10, 0, 0, 1, 0); create_circ(300, 400, 30, 30, 0, 0, 2, 0); create_circ(305, 380, 20, 20, 0, 0, 3, 1); create_palka(105, 390, 80, 10, 0, 0, 3, 0); create_kvad(185, 400, 20, 20, 0, 0, 4, 0); create_palka(324, 396, 122, 10, 0, 0, 2, 1); create_circ(415, 405, 20, 20, 0, 0, 4, 0); create_palka(335, 480, 80, 10, 0, 0, 3, 0); create_palka(285, 145, 10, 80, 0, 0, 5, 0); estvrag = 1; }; if (tlevel == 8){ scoreint = 1000; create_palka(120, 240, 180, 10, 0, 0, 3, 0); create_circ(60, 325, 55, 55, 0, 0, 1, 0); create_chick(155, 200, 40, 40, 0, 0, 1, 0); create_kvad(115, 340, 20, 20, 0, 0, 1, 1); create_kvad(135, 215, 20, 20, 0, 0, 1, 1); create_kvad(300, 220, 20, 20, 0, 0, 5, 0); create_kvad(300, 240, 20, 20, 0, 0, 4, 1); create_kvad(300, 260, 20, 20, 0, 0, 3, 1); create_palka(320, 240, 80, 10, 0, 0, 3, 1); create_palka(320, 275, 80, 10, 0, 0, 3, 0); create_palka(320, 330, 80, 10, 0, 0, 3, 0); create_triangle(345, 145, 30, 30, 0, 0, 2, 0); create_circ(345, 175, 30, 30, 0, 0, 2, 1); create_gnezdo(400, 330, 60, 50, 0, 0, 0, 0); create_palka(395, 380, 80, 10, 0, 0, 3, 0); create_circ(353, 68, 55, 55, 0, 0, 1, 0); create_kvad(370, 125, 20, 20, 0, 0, 4, 1); create_djoint(87, 354, 175, 222); estvrag = 1; }; if (tlevel == 9){ scoreint = 1000; create_chick(360, 115, 60, 60, 0, 0, 2, 0); create_circ(400, 170, 30, 30, 0, 0, 2, 1); create_circ(350, 170, 30, 30, 0, 0, 2, 1); create_chick(375, 250, 30, 30, 0, 0, 3, 0); create_chick(370, 195, 40, 40, 0, 0, 1, 0); create_circ(400, 230, 30, 30, 0, 0, 2, 1); create_circ(350, 230, 30, 30, 0, 0, 2, 1); create_gnezdo(370, 365, 40, 50, 0, 0, 0, 0); create_triangle(360, 270, 30, 30, 0, 0, 1, 1); create_triangle(390, 270, 30, 30, 0, 0, 1, 1); create_palka(285, 200, 80, 10, 0, 0, 2, 0); create_palka(415, 200, 80, 10, 0, 0, 2, 0); create_kvad(445, 210, 20, 20, 0, 0, 4, 1); create_kvad(315, 210, 20, 20, 0, 0, 4, 1); create_kvad(300, 245, 20, 20, 0, 0, 3, 1); create_kvad(460, 250, 20, 20, 0, 0, 3, 1); create_palka(350, 415, 80, 10, 0, 0, 3, 0); create_triangle(375, 300, 30, 30, 0, 0, 1, 0); create_palka(430, 270, 80, 10, 0, 0, 1, 0); create_kvad(460, 280, 20, 20, 0, 0, 3, 1); create_kvad(465, 420, 20, 20, 0, 0, 3, 0); create_triangle(455, 220, 30, 30, 0, 0, 2, 0); create_palka(270, 265, 80, 10, 0, 0, 2, 0); create_kvad(300, 275, 20, 20, 0, 0, 3, 1); create_kvad(290, 420, 20, 20, 0, 0, 3, 0); estvrag = 3; }; if (tlevel == 10){ scoreint = 1000; create_circ(550, 335, 20, 20, 0, 0, 4, 0); create_circ(525, 335, 20, 20, 0, 0, 4, 0); create_circ(500, 340, 20, 20, 0, 0, 4, 0); create_circ(475, 345, 20, 20, 0, 0, 4, 0); create_circ(450, 350, 20, 20, 0, 0, 4, 0); create_circ(425, 360, 20, 20, 0, 0, 4, 0); create_circ(395, 370, 20, 20, 0, 0, 4, 0); create_circ(370, 380, 20, 20, 0, 0, 4, 0); create_circ(350, 390, 20, 20, 0, 0, 4, 0); create_circ(295, 380, 20, 20, 0, 0, 4, 0); create_circ(270, 370, 20, 20, 0, 0, 4, 0); create_circ(245, 360, 20, 20, 0, 0, 4, 0); create_circ(220, 355, 20, 20, 0, 0, 4, 0); create_chick(595, 65, 30, 30, 0, 0, 3, 0); create_chick(120, 75, 30, 30, 0, 0, 3, 0); create_circ(195, 350, 20, 20, 0, 0, 4, 0); create_circ(170, 350, 20, 20, 0, 0, 4, 0); create_circ(145, 350, 20, 20, 0, 0, 4, 0); create_gnezdo(295, 425, 60, 50, 0, 0, 0, 0); create_circ(365, 425, 20, 20, 0, 0, 4, 0); create_circ(365, 455, 20, 20, 0, 0, 4, 0); create_circ(355, 480, 20, 20, 0, 0, 4, 0); create_circ(330, 480, 20, 20, 0, 0, 4, 0); create_circ(305, 480, 20, 20, 0, 0, 4, 0); create_circ(280, 480, 20, 20, 0, 0, 4, 0); create_circ(265, 455, 20, 20, 0, 0, 4, 0); create_circ(270, 425, 20, 20, 0, 0, 4, 0); create_circ(580, 335, 20, 20, 0, 0, 4, 0); create_circ(115, 350, 20, 20, 0, 0, 4, 0); create_circ(605, 340, 20, 20, 0, 0, 4, 0); create_circ(90, 350, 20, 20, 0, 0, 4, 0); create_circ(630, 345, 20, 20, 0, 0, 4, 0); create_circ(65, 355, 20, 20, 0, 0, 4, 0); create_circ(660, 350, 20, 20, 0, 0, 4, 0); create_circ(40, 360, 20, 20, 0, 0, 4, 0); create_circ(10, 365, 20, 20, 0, 0, 4, 0); create_palka(574, 176, 122, 10, 0, 0, 1, 0); create_triangle(630, 145, 30, 30, 0, 0, 2, 0); create_circ(595, 185, 30, 30, 0, 0, 2, 0); create_circ(660, 185, 30, 30, 0, 0, 2, 0); create_circ(640, 55, 55, 55, 0, 0, 1, 0); create_kvad(600, 95, 20, 20, 0, 0, 4, 1); create_kvad(655, 110, 20, 20, 0, 0, 1, 1); create_triangle(150, 170, 30, 30, 0, 0, 1, 1); create_triangle(80, 170, 30, 30, 0, 0, 1, 1); create_palka(69, 160, 122, 10, 0, 0, 2, 0); create_kvad(155, 200, 20, 20, 0, 0, 4, 1); create_triangle(130, 130, 30, 30, 0, 0, 2, 0); create_kvad(125, 105, 20, 20, 0, 0, 3, 1); estvrag = 2; }; if (tlevel == 11){ scoreint = 1000; create_chick(570, 305, 60, 60, 0, 0, 2, 0); create_chick(515, 230, 40, 40, 0, 0, 1, 0); create_chick(450, 145, 30, 30, 0, 0, 3, 0); create_palka(310, 175, 200, 10, 0, 0, 3, 0); create_triangle(480, 145, 30, 30, 0, 0, 1, 0); create_triangle(190, 145, 30, 30, 0, 0, 1, 0); create_kvad(290, 175, 20, 20, 0, 0, 4, 1); create_kvad(270, 175, 20, 20, 0, 0, 4, 1); create_palka(190, 175, 80, 10, 0, 0, 3, 0); create_palka(560, 300, 10, 80, 0, 0, 5, 1); create_palka(505, 215, 10, 80, 0, 0, 5, 1); create_triangle(275, 145, 30, 30, 0, 0, 1, 1); create_gnezdo(300, 445, 60, 50, 0, 0, 0, 1); create_palka(480, 525, 10, 80, 0, 0, 5, 1); create_kvad(250, 445, 20, 20, 0, 0, 3, 1); create_kvad(275, 270, 20, 20, 0, 0, 3, 1); create_palka(245, 260, 80, 10, 0, 0, 2, 0); create_kvad(240, 330, 20, 20, 0, 0, 3, 1); create_kvad(300, 360, 20, 20, 0, 0, 3, 1); create_djoint(463, 158, 528, 241); create_djoint(540, 260, 600, 336); estvrag = 3; }; if (tlevel == 12){ scoreint = 1000; create_chick(620, 40, 60, 60, 0, 0, 2, 0); create_palka(600, 100, 80, 10, 0, 0, 1, 0); create_kvad(660, 110, 20, 20, 0, 0, 4, 1); create_kvad(600, 110, 20, 20, 0, 0, 4, 1); create_kvad(600, 130, 20, 20, 0, 0, 4, 1); create_kvad(660, 130, 20, 20, 0, 0, 4, 1); create_palka(485, 100, 80, 10, 0, 0, 1, 0); create_kvad(545, 110, 20, 20, 0, 0, 4, 1); create_kvad(485, 110, 20, 20, 0, 0, 4, 1); create_palka(375, 100, 80, 10, 0, 0, 2, 0); create_palka(185, 100, 80, 10, 0, 0, 2, 0); create_palka(45, 100, 80, 10, 0, 0, 2, 0); create_kvad(435, 110, 20, 20, 0, 0, 4, 1); create_kvad(375, 110, 20, 20, 0, 0, 4, 1); create_kvad(45, 415, 20, 20, 0, 0, 4, 1); create_kvad(105, 115, 20, 20, 0, 0, 4, 1); create_kvad(100, 415, 20, 20, 0, 0, 4, 1); create_kvad(240, 115, 20, 20, 0, 0, 4, 1); create_kvad(190, 115, 20, 20, 0, 0, 4, 1); create_kvad(45, 115, 20, 20, 0, 0, 4, 1); create_kvad(545, 200, 20, 20, 0, 0, 1, 0); create_kvad(485, 230, 20, 20, 0, 0, 1, 0); create_kvad(435, 0xFF, 20, 20, 0, 0, 2, 0); create_kvad(375, 270, 20, 20, 0, 0, 2, 0); create_kvad(250, 310, 20, 20, 0, 0, 3, 0); create_kvad(190, 325, 20, 20, 0, 0, 3, 0); create_kvad(45, 395, 20, 20, 0, 0, 4, 1); create_kvad(45, 375, 20, 20, 0, 0, 4, 1); create_kvad(100, 395, 20, 20, 0, 0, 4, 1); create_kvad(100, 375, 20, 20, 0, 0, 4, 1); create_gnezdo(190, 435, 60, 50, 0, 0, 0, 0); create_palka(180, 485, 80, 10, 0, 0, 3, 0); create_palka(250, 405, 10, 80, 0, 0, 5, 0); estvrag = 1; }; if (tlevel == 13){ scoreint = 1000; create_palka(340, 345, 10, 80, 0, 0, 4, 0); create_palka(355, 345, 10, 80, 0, 0, 4, 0); create_palka(305, 425, 80, 10, 0, 0, 3, 0); create_palka(370, 345, 10, 80, 0, 0, 4, 0); create_palka(325, 345, 10, 80, 0, 0, 4, 0); create_palka(310, 345, 10, 80, 0, 0, 4, 0); create_circ(635, 230, 65, 65, 0, 0, 1, 0); create_circ(450, 115, 20, 20, 0, 0, 4, 0); create_gnezdo(395, 375, 60, 50, 0, 0, 0, 1); create_palka(390, 425, 80, 10, 0, 0, 3, 0); create_circ(300, 140, 20, 20, 0, 0, 4, 0); create_palka(305, 335, 80, 10, 0, 0, 2, 0); create_chick(135, 295, 40, 40, 0, 0, 1, 0); create_circ(620, 285, 30, 30, 0, 0, 2, 1); create_circ(165, 325, 30, 30, 0, 0, 2, 1); create_triangle(320, 280, 55, 55, 0, 0, 2, 0); create_triangle(395, 360, 66, 66, 0, 0, 2, 1); create_triangle(540, 45, 66, 66, 180, 0, 2, 0); create_kvad(565, 115, 20, 20, 0, 0, 4, 1); create_palka(540, 395, 80, 10, 0, 0, 3, 0); create_triangle(555, 340, 55, 55, 0, 0, 2, 0); create_djoint(460, 125, 667, 264); create_djoint(311, 150, 156, 314); estvrag = 1; }; if (tlevel == 14){ scoreint = 1000; create_triangle(230, 325, 30, 30, 0, 0, 1, 0); create_triangle(260, 325, 30, 30, 0, 0, 1, 0); create_triangle(290, 325, 30, 30, 0, 0, 1, 0); create_triangle(320, 325, 30, 30, 0, 0, 1, 0); create_triangle(350, 325, 30, 30, 0, 0, 1, 0); create_triangle(245, 175, 30, 30, 180, 0, 2, 0); create_triangle(275, 175, 30, 30, 180, 0, 2, 0); create_triangle(305, 175, 30, 30, 180, 0, 2, 0); create_triangle(335, 175, 30, 30, 180, 0, 2, 0); create_kvad(250, 205, 20, 20, 0, 0, 1, 1); create_kvad(280, 205, 20, 20, 0, 0, 1, 1); create_kvad(310, 205, 20, 20, 0, 0, 1, 1); create_kvad(340, 205, 20, 20, 0, 0, 1, 1); create_chick(620, 115, 40, 40, 0, 0, 1, 0); create_palka(345, 165, 150, 10, 0, 0, 1, 0); create_kvad(410, 175, 20, 20, 0, 0, 2, 1); create_kvad(480, 335, 20, 20, 0, 0, 4, 0); create_kvad(630, 155, 20, 20, 0, 0, 1, 1); create_palka(534, 176, 122, 10, 0, 0, 1, 0); create_kvad(630, 185, 20, 20, 0, 0, 1, 1); create_kvad(540, 185, 20, 20, 0, 0, 1, 1); create_kvad(540, 205, 20, 20, 0, 0, 1, 1); create_gnezdo(75, 295, 60, 50, 0, 0, 0, 1); create_palka(160, 165, 80, 10, 0, 0, 1, 0); create_kvad(195, 175, 20, 20, 0, 0, 4, 1); create_kvad(180, 335, 20, 20, 0, 0, 2, 0); create_palka(65, 345, 80, 10, 0, 0, 3, 1); create_triangle(335, 285, 30, 30, 0, 0, 2, 1); create_triangle(305, 285, 30, 30, 0, 0, 2, 1); create_triangle(275, 285, 30, 30, 0, 0, 2, 1); create_triangle(245, 285, 30, 30, 0, 0, 2, 1); create_palka(240, 315, 130, 10, 0, 0, 2, 1); estvrag = 1; }; if (tlevel == 15){ scoreint = 1000; create_palka(435, 345, 80, 10, 0, 0, 3, 0); create_palka(435, 285, 80, 10, 0, 0, 3, 0); create_palka(515, 265, 30, 80, 0, 0, 4, 0); create_kvad(520, 345, 20, 20, 0, 0, 3, 1); create_kvad(520, 365, 20, 20, 0, 0, 3, 1); create_kvad(520, 425, 20, 20, 0, 0, 3, 0); create_palka(545, 285, 80, 10, 0, 0, 3, 0); create_chick(635, 215, 30, 30, 0, 0, 3, 0); create_palka(605, 245, 80, 10, 0, 0, 2, 0); create_circ(655, 0xFF, 30, 30, 0, 0, 2, 0); create_circ(605, 0xFF, 20, 20, 0, 0, 4, 1); create_gnezdo(625, 355, 60, 50, 0, 0, 0, 0); create_palka(545, 345, 80, 10, 0, 0, 3, 0); create_palka(685, 325, 10, 80, 0, 0, 5, 0); create_palka(615, 405, 80, 10, 0, 0, 3, 0); create_palka(405, 205, 30, 80, 0, 0, 4, 0); create_kvad(410, 365, 20, 20, 0, 0, 1, 1); create_kvad(410, 285, 20, 20, 0, 0, 2, 1); create_kvad(410, 340, 20, 20, 0, 0, 1, 1); create_circ(405, 425, 30, 30, 0, 0, 2, 0); create_palka(325, 345, 80, 10, 0, 0, 3, 0); create_palka(325, 285, 80, 10, 0, 0, 3, 0); create_palka(215, 285, 80, 10, 0, 0, 3, 0); create_palka(295, 105, 30, 80, 0, 0, 4, 0); create_circ(295, 185, 30, 30, 0, 0, 2, 1); create_circ(300, 270, 20, 20, 0, 0, 4, 1); create_kvad(300, 335, 20, 20, 0, 0, 4, 1); create_palka(215, 345, 80, 10, 0, 0, 3, 0); create_kvad(300, 365, 20, 20, 0, 0, 4, 1); create_palka(106, 291, 80, 10, 33, 0, 3, 1); create_palka(185, 245, 30, 80, 0, 0, 4, 0); create_kvad(190, 325, 20, 20, 0, 0, 4, 1); create_kvad(190, 345, 20, 20, 0, 0, 4, 1); create_kvad(190, 425, 20, 20, 0, 0, 1, 0); create_kvad(300, 425, 20, 20, 0, 0, 4, 0); estvrag = 1; }; if (tlevel == 16){ scoreint = 1000; create_palka(465, 380, 10, 80, 0, 0, 4, 1); create_palka(395, 460, 80, 10, 0, 0, 3, 0); create_palka(395, 380, 10, 80, 0, 0, 4, 1); create_gnezdo(405, 410, 60, 50, 0, 0, 0, 0); create_palka(395, 370, 80, 10, 0, 0, 1, 0); create_kvad(395, 350, 20, 20, 0, 0, 2, 1); create_kvad(455, 350, 20, 20, 0, 0, 2, 1); create_kvad(425, 350, 20, 20, 0, 0, 2, 1); create_palka(395, 340, 80, 10, 0, 0, 2, 1); create_chick(405, 185, 60, 60, 0, 0, 2, 0); create_palka(400, 260, 10, 80, 0, 0, 4, 1); create_palka(430, 260, 10, 80, 0, 0, 4, 1); create_palka(460, 260, 10, 80, 0, 0, 4, 1); create_palka(395, 250, 80, 10, 0, 0, 1, 1); create_circ(130, 270, 65, 65, 0, 0, 1, 1); create_circ(330, 205, 30, 30, 0, 0, 2, 1); create_kvad(405, 440, 20, 20, 0, 0, 5, 0); create_kvad(425, 440, 20, 20, 0, 0, 5, 0); create_kvad(445, 440, 20, 20, 0, 0, 5, 0); create_kvad(445, 420, 20, 20, 0, 0, 5, 0); create_kvad(425, 420, 20, 20, 0, 0, 5, 0); create_kvad(405, 420, 20, 20, 0, 0, 5, 0); create_kvad(445, 400, 20, 20, 0, 0, 5, 0); create_kvad(425, 400, 20, 20, 0, 0, 5, 0); create_kvad(405, 400, 20, 20, 0, 0, 5, 0); create_kvad(190, 320, 20, 20, 0, 0, 1, 1); create_djoint(344, 218, 164, 304); estvrag = 1; }; if (tlevel == 17){ scoreint = 1000; create_palka(450, 140, 190, 10, 0, 0, 1, 1); create_chick(595, 80, 60, 60, 0, 0, 2, 0); create_kvad(455, 150, 20, 20, 0, 0, 4, 1); create_kvad(615, 150, 20, 20, 0, 0, 4, 0); create_palka(305, 180, 180, 10, 0, 0, 2, 0); create_circ(310, 190, 30, 30, 0, 0, 2, 0); create_circ(445, 190, 30, 30, 0, 0, 2, 1); create_kvad(450, 220, 20, 20, 0, 0, 4, 1); create_palka(430, 315, 180, 10, -23, 0, 3, 0); create_triangle(570, 175, 30, 30, 0, 0, 1, 0); create_triangle(515, 175, 30, 30, 0, 0, 1, 0); create_palka(285, 420, 180, 10, 13, 0, 3, 0); create_circ(420, 390, 30, 30, 0, 0, 2, 1); create_circ(420, 310, 30, 30, 0, 0, 2, 1); create_palka(465, 440, 80, 10, 0, 0, 3, 0); create_gnezdo(475, 390, 60, 50, 0, 0, 0, 0); estvrag = 1; }; if (tlevel == 18){ scoreint = 1000; create_palka(325, 315, 70, 10, 0, 0, 3, 0); create_palka(330, 235, 10, 80, 0, 0, 4, 0); create_palka(380, 235, 10, 80, 0, 0, 4, 0); create_palka(350, 195, 20, 120, 0, 0, 4, 1); create_triangle(335, 140, 55, 55, 180, 0, 2, 1); create_kvad(400, 325, 20, 20, 0, 0, 4, 1); create_kvad(460, 325, 20, 20, 0, 0, 4, 1); create_palka(485, 185, 80, 10, 0, 0, 2, 1); create_kvad(480, 325, 20, 20, 0, 0, 3, 0); create_kvad(540, 325, 20, 20, 0, 0, 3, 0); create_kvad(400, 305, 20, 20, 0, 0, 4, 1); create_kvad(460, 305, 20, 20, 0, 0, 4, 1); create_kvad(515, 200, 20, 20, 0, 0, 3, 1); create_kvad(300, 325, 20, 20, 0, 0, 4, 0); create_palka(165, 185, 80, 10, 0, 0, 2, 0); create_kvad(240, 325, 20, 20, 0, 0, 4, 0); create_kvad(165, 200, 20, 20, 0, 0, 4, 1); create_kvad(240, 305, 20, 20, 0, 0, 4, 1); create_kvad(300, 305, 20, 20, 0, 0, 4, 1); create_kvad(220, 325, 20, 20, 0, 0, 3, 0); create_kvad(160, 325, 20, 20, 0, 0, 3, 0); create_kvad(195, 200, 20, 20, 0, 0, 3, 1); create_kvad(225, 200, 20, 20, 0, 0, 4, 1); create_chick(575, 160, 60, 60, 0, 0, 2, 0); create_circ(645, 75, 45, 45, 0, 0, 1, 1); create_circ(635, 120, 30, 30, 0, 0, 2, 1); create_circ(665, 120, 30, 30, 0, 0, 2, 1); create_gnezdo(90, 275, 60, 50, 0, 0, 0, 0); create_palka(80, 325, 80, 10, 0, 0, 3, 0); create_triangle(590, 220, 30, 30, 0, 0, 1, 0); estvrag = 1; }; if (tlevel == 19){ scoreint = 1000; create_chick(355, 355, 60, 60, 0, 0, 2, 0); create_kvad(375, 415, 20, 20, 0, 0, 3, 1); create_kvad(180, 230, 20, 20, 0, 0, 3, 1); create_chick(365, 295, 40, 40, 0, 0, 1, 0); create_chick(370, 245, 30, 30, 0, 0, 3, 0); create_kvad(375, 335, 20, 20, 0, 0, 5, 0); create_kvad(375, 275, 20, 20, 0, 0, 5, 0); create_circ(510, 125, 55, 55, 0, 0, 1, 0); create_circ(380, 50, 20, 20, 0, 0, 4, 0); create_kvad(495, 170, 20, 20, 0, 0, 1, 1); create_kvad(405, 320, 20, 20, 0, 0, 2, 1); create_kvad(345, 320, 20, 20, 0, 0, 2, 1); create_gnezdo(210, 425, 60, 50, 0, 0, 0, 1); create_palka(200, 475, 80, 10, 0, 0, 3, 1); create_circ(135, 180, 55, 55, 45, 0, 1, 0); create_circ(355, 50, 20, 20, 0, 0, 4, 0); create_kvad(410, 405, 20, 20, 0, 0, 3, 1); create_kvad(340, 405, 20, 20, 0, 0, 3, 1); create_gnezdo(530, 455, 60, 50, 0, 0, 0, 1); create_palka(520, 505, 80, 10, 0, 0, 3, 1); create_circ(370, 80, 20, 20, 0, 0, 4, 0); create_circ(629, 134, 66, 66, -45, 0, 1, 0); create_kvad(625, 195, 20, 20, 0, 0, 1, 1); create_palka(132, 447, 80, 10, 45, 0, 3, 0); create_djoint(390, 61, 537, 154); create_djoint(366, 59, 161, 207); create_djoint(380, 90, 663, 170); estvrag = 3; }; if (tlevel == 20){ scoreint = 1000; create_palka(155, 270, 150, 10, 0, 0, 2, 0); create_circ(325, 80, 20, 20, 0, 0, 4, 0); create_circ(470, 80, 20, 20, 0, 0, 4, 0); create_kvad(305, 270, 20, 20, 0, 0, 3, 1); create_triangle(150, 110, 55, 55, 0, 0, 2, 1); create_kvad(165, 165, 20, 20, 0, 0, 2, 1); create_palka(325, 270, 80, 10, 0, 0, 3, 1); create_chick(460, 35, 40, 40, 0, 0, 1, 0); create_palka(549, 20, 20, 122, -26, 0, 4, 0); create_kvad(575, 150, 20, 20, 0, 0, 3, 0); create_kvad(505, 45, 20, 20, 0, 0, 3, 1); create_kvad(405, 270, 20, 20, 0, 0, 2, 1); create_gnezdo(500, 440, 60, 50, 0, 0, 0, 1); create_palka(490, 490, 80, 10, 0, 0, 3, 0); create_djoint(333, 88, 164, 274); create_djoint(480, 88, 291, 274); estvrag = 1; }; if (tlevel == 21){ scoreint = 1000; create_kvad(130, 170, 20, 20, 0, 0, 2, 1); create_kvad(130, 130, 20, 20, 0, 0, 2, 1); create_kvad(130, 150, 20, 20, 0, 0, 2, 1); create_kvad(130, 110, 20, 20, 0, 0, 2, 1); create_kvad(130, 90, 20, 20, 0, 0, 2, 1); create_kvad(130, 70, 20, 20, 0, 0, 2, 1); create_kvad(150, 70, 20, 20, 0, 0, 2, 1); create_kvad(170, 70, 20, 20, 0, 0, 2, 1); create_kvad(190, 90, 20, 20, 0, 0, 2, 1); create_chick(155, 100, 30, 30, 0, 0, 3, 0); create_kvad(190, 110, 20, 20, 0, 0, 2, 1); create_kvad(170, 130, 20, 20, 0, 0, 2, 1); create_kvad(150, 130, 20, 20, 0, 0, 2, 1); create_kvad(190, 150, 20, 20, 0, 0, 2, 1); create_kvad(190, 170, 20, 20, 0, 0, 2, 1); create_kvad(240, 170, 20, 20, 0, 0, 2, 1); create_kvad(240, 150, 20, 20, 0, 0, 2, 1); create_kvad(240, 130, 20, 20, 0, 0, 2, 1); create_kvad(240, 110, 20, 20, 0, 0, 2, 1); create_kvad(240, 90, 20, 20, 0, 0, 2, 1); create_kvad(240, 70, 20, 20, 0, 0, 2, 1); create_kvad(260, 170, 20, 20, 0, 0, 2, 1); create_kvad(280, 170, 20, 20, 0, 0, 2, 1); create_kvad(300, 170, 20, 20, 0, 0, 2, 1); create_chick(260, 110, 40, 40, 0, 0, 1, 0); create_kvad(300, 150, 20, 20, 0, 0, 2, 1); create_kvad(300, 130, 20, 20, 0, 0, 2, 1); create_kvad(300, 110, 20, 20, 0, 0, 2, 1); create_kvad(300, 90, 20, 20, 0, 0, 2, 1); create_kvad(300, 70, 20, 20, 0, 0, 2, 1); create_kvad(280, 70, 20, 20, 0, 0, 2, 1); create_kvad(260, 70, 20, 20, 0, 0, 2, 1); create_kvad(350, 170, 20, 20, 0, 0, 2, 1); create_kvad(350, 150, 20, 20, 0, 0, 2, 1); create_kvad(350, 130, 20, 20, 0, 0, 2, 1); create_kvad(350, 110, 20, 20, 0, 0, 2, 1); create_kvad(350, 90, 20, 20, 0, 0, 2, 1); create_kvad(350, 70, 20, 20, 0, 0, 2, 1); create_kvad(370, 170, 20, 20, 0, 0, 2, 1); create_kvad(390, 170, 20, 20, 0, 0, 2, 1); create_kvad(410, 170, 20, 20, 0, 0, 2, 1); create_chick(375, 110, 60, 60, 0, 0, 2, 1); create_kvad(465, 170, 20, 20, 0, 0, 2, 1); create_kvad(465, 150, 20, 20, 0, 0, 2, 1); create_kvad(465, 130, 20, 20, 0, 0, 2, 1); create_kvad(465, 110, 20, 20, 0, 0, 2, 1); create_kvad(465, 90, 20, 20, 0, 0, 2, 1); create_kvad(465, 70, 20, 20, 0, 0, 2, 1); create_kvad(485, 170, 20, 20, 0, 0, 2, 1); create_kvad(505, 170, 20, 20, 0, 0, 2, 1); create_kvad(525, 170, 20, 20, 0, 0, 2, 1); create_palka(190, 60, 60, 10, 0, 0, 2, 1); create_palka(305, 60, 60, 10, 0, 0, 2, 1); create_triangle(295, 190, 30, 30, 0, 0, 1, 0); create_triangle(340, 190, 30, 30, 0, 0, 1, 0); create_kvad(280, 150, 20, 20, 0, 0, 2, 1); create_kvad(260, 150, 20, 20, 0, 0, 2, 1); create_triangle(135, 40, 30, 30, 180, 0, 2, 0); create_gnezdo(235, 250, 60, 50, 0, 0, 0, 0); create_palka(220, 300, 80, 10, 0, 0, 3, 0); create_gnezdo(455, 210, 60, 50, 0, 0, 0, 0); create_palka(450, 260, 80, 10, 0, 0, 3, 0); estvrag = 3; }; if (tlevel == 22){ scoreint = 1000; create_palka(275, 280, 180, 10, 0, 0, 3, 0); create_triangle(290, 250, 30, 30, 0, 0, 1, 0); create_triangle(410, 250, 30, 30, 0, 0, 1, 0); create_triangle(350, 250, 30, 30, 0, 0, 1, 0); create_triangle(320, 250, 30, 30, 0, 0, 2, 0); create_triangle(380, 250, 30, 30, 0, 0, 2, 0); create_triangle(305, 210, 30, 30, 180, 0, 2, 0); create_triangle(335, 210, 30, 30, 180, 0, 2, 0); create_triangle(365, 210, 30, 30, 180, 0, 2, 0); create_palka(275, 240, 180, 10, 0, 0, 1, 1); create_triangle(395, 210, 30, 30, 180, 0, 2, 0); create_palka(275, 200, 180, 10, 0, 0, 1, 1); create_triangle(395, 170, 30, 30, 0, 0, 2, 1); create_triangle(365, 170, 30, 30, 0, 0, 2, 1); create_triangle(340, 170, 30, 30, 0, 0, 2, 1); create_triangle(310, 170, 30, 30, 0, 0, 2, 1); create_palka(275, 160, 180, 10, 0, 0, 2, 1); create_chick(395, 100, 60, 60, 0, 0, 2, 0); create_chick(275, 100, 60, 60, 0, 0, 2, 0); create_palka(420, 290, 180, 10, 0, 0, 2, 0); create_circ(560, 300, 30, 30, 0, 0, 2, 0); create_circ(150, 300, 30, 30, 0, 0, 2, 0); create_palka(135, 290, 180, 10, 0, 0, 2, 0); create_circ(285, 315, 20, 20, 0, 0, 4, 1); create_circ(440, 315, 20, 20, 0, 0, 4, 1); create_kvad(440, 345, 20, 20, 0, 0, 2, 1); create_kvad(285, 345, 20, 20, 0, 0, 2, 1); create_gnezdo(620, 340, 60, 50, 0, 0, 0, 1); create_palka(45, 320, 80, 10, 0, 0, 2, 1); create_circ(40, 330, 30, 30, 0, 0, 2, 0); create_kvad(105, 330, 20, 20, 0, 0, 3, 1); create_kvad(105, 350, 20, 20, 0, 0, 3, 1); create_palka(109, 396, 222, 10, 0, 0, 3, 0); create_palka(419, 396, 222, 10, 0, 0, 3, 0); create_palka(335, 330, 80, 10, 0, 0, 2, 1); create_kvad(395, 405, 20, 20, 0, 0, 4, 0); create_kvad(335, 405, 20, 20, 0, 0, 4, 0); create_circ(360, 340, 30, 30, 0, 0, 2, 1); create_kvad(335, 385, 20, 20, 0, 0, 1, 1); create_kvad(395, 385, 20, 20, 0, 0, 1, 1); estvrag = 2; }; if (tlevel == 23){ scoreint = 1000; create_chick(120, 270, 60, 60, 0, 0, 2, 0); create_palka(120, 330, 80, 10, 0, 0, 2, 0); create_circ(115, 340, 30, 30, 0, 0, 2, 1); create_circ(180, 340, 20, 20, 0, 0, 4, 1); create_circ(180, 360, 20, 20, 0, 0, 4, 1); create_palka(230, 300, 140, 10, 0, 0, 1, 1); create_triangle(225, 370, 30, 30, 0, 0, 1, 1); create_triangle(335, 370, 30, 30, 0, 0, 1, 1); create_triangle(335, 400, 30, 30, 0, 0, 1, 1); create_triangle(285, 310, 30, 30, 0, 0, 2, 0); create_circ(285, 340, 30, 30, 0, 0, 2, 1); create_palka(405, 405, 80, 10, 0, 0, 3, 0); create_chick(475, 150, 40, 40, 0, 0, 1, 0); create_circ(480, 190, 30, 30, 0, 0, 2, 0); create_circ(505, 90, 30, 30, 0, 0, 1, 0); create_kvad(510, 120, 20, 20, 0, 0, 1, 1); create_gnezdo(525, 390, 60, 50, 0, 0, 0, 0); create_palka(510, 440, 80, 10, 0, 0, 3, 0); create_triangle(430, 360, 45, 45, 0, 0, 2, 0); create_kvad(430, 135, 20, 20, 0, 0, 1, 1); create_triangle(415, 80, 55, 55, 180, 0, 2, 1); estvrag = 2; }; if (tlevel == 24){ scoreint = 1000; create_palka(150, 270, 80, 10, 0, 0, 3, 0); create_palka(270, 270, 80, 10, 0, 0, 3, 0); create_palka(390, 270, 80, 10, 0, 0, 3, 0); create_palka(510, 355, 80, 10, 0, 0, 3, 0); create_kvad(480, 310, 20, 20, 0, 0, 4, 1); create_kvad(120, 310, 20, 20, 0, 0, 4, 1); create_kvad(240, 310, 20, 20, 0, 0, 4, 1); create_kvad(360, 310, 20, 20, 0, 0, 4, 1); create_kvad(480, 395, 20, 20, 0, 0, 3, 1); create_kvad(350, 230, 40, 40, 0, 0, 5, 0); create_kvad(230, 230, 40, 40, 0, 0, 5, 0); create_kvad(470, 230, 40, 40, 0, 0, 5, 0); create_kvad(110, 230, 40, 40, 0, 0, 5, 0); create_palka(390, 355, 80, 10, 0, 0, 3, 0); create_palka(270, 355, 80, 10, 0, 0, 3, 0); create_kvad(360, 395, 20, 20, 0, 0, 3, 1); create_kvad(240, 395, 20, 20, 0, 0, 3, 1); create_kvad(120, 395, 20, 20, 0, 0, 3, 1); create_palka(150, 355, 80, 10, 0, 0, 3, 0); create_kvad(230, 270, 40, 40, 0, 0, 3, 1); create_kvad(350, 270, 40, 40, 0, 0, 3, 1); create_kvad(470, 270, 40, 40, 0, 0, 3, 1); create_kvad(110, 270, 40, 40, 0, 0, 3, 1); create_kvad(240, 360, 20, 20, 0, 0, 3, 1); create_kvad(360, 365, 20, 20, 0, 0, 3, 1); create_kvad(480, 365, 20, 20, 0, 0, 3, 1); create_kvad(120, 360, 20, 20, 0, 0, 3, 1); create_palka(100, 355, 10, 80, 0, 0, 5, 1); create_chick(55, 140, 40, 40, 0, 0, 1, 1); create_triangle(90, 145, 30, 30, 0, 0, 1, 1); create_triangle(45, 170, 30, 30, 0, 0, 1, 1); create_palka(33, 209, 80, 10, 20, 0, 3, 0); create_palka(590, 355, 80, 10, 0, 0, 3, 0); create_triangle(614, 164, 55, 55, -115, 0, 2, 0); create_kvad(640, 205, 20, 20, 0, 0, 4, 1); create_palka(30, 270, 80, 10, 0, 0, 3, 0); create_gnezdo(40, 380, 60, 50, 0, 0, 0, 0); create_palka(30, 430, 80, 10, 0, 0, 3, 0); estvrag = 1; }; if (tlevel == 25){ scoreint = 1000; create_triangle(375, 265, 55, 55, 0, 0, 2, 0); create_palka(300, 410, 180, 10, 0, 0, 3, 0); create_kvad(395, 320, 20, 20, 0, 0, 4, 1); create_chick(310, 155, 60, 60, 0, 0, 2, 0); create_circ(325, 215, 30, 30, 0, 0, 2, 1); create_circ(305, 375, 30, 30, 0, 0, 1, 0); create_circ(30, 245, 55, 55, 0, 0, 3, 0); create_palka(220, 325, 80, 10, 0, 0, 2, 0); create_kvad(280, 420, 20, 20, 0, 0, 4, 1); create_kvad(220, 420, 20, 20, 0, 0, 4, 1); create_circ(245, 340, 30, 30, 0, 0, 2, 1); create_palka(30, 300, 80, 10, 0, 0, 2, 0); create_palka(103, 368, 122, 10, 35, 0, 3, 1); create_kvad(90, 310, 20, 20, 0, 0, 4, 1); create_kvad(35, 310, 20, 20, 0, 0, 4, 1); create_circ(85, 330, 30, 30, 0, 0, 2, 1); create_kvad(280, 440, 20, 20, 0, 0, 4, 1); create_kvad(220, 440, 20, 20, 0, 0, 4, 1); create_palka(125, 455, 80, 10, 0, 0, 3, 0); create_circ(625, 235, 55, 55, 0, 0, 1, 0); create_circ(435, 110, 20, 20, 0, 0, 4, 0); create_kvad(615, 290, 20, 20, 0, 0, 3, 1); create_palka(35, 490, 80, 10, 0, 0, 3, 0); create_gnezdo(45, 440, 60, 50, 0, 0, 0, 0); create_djoint(443, 119, 654, 265); estvrag = 1; }; scoreTimer.start(); } public function onScoreTimer(_arg1:TimerEvent){ scoreint--; } public function selMen():void{ var _local1:*; var _local2:*; var _local3:*; var _local4:Number; var _local5:*; var _local6:*; var _local7:*; var _local8:*; allscore = 0; _local1 = 180; _local2 = 210; if (lvlpart == 0){ _local3 = 1; _local4 = 7; }; if (lvlpart == 1){ _local3 = 7; _local4 = 13; }; if (lvlpart == 2){ _local3 = 13; _local4 = 19; }; if (lvlpart == 3){ _local3 = 19; _local4 = 25; }; if (lvlpart == 4){ _local3 = 25; _local4 = 31; }; if (btnsm.length > 0){ _local8 = 0; while (_local8 < btnsm.length) { selectm.removeChild(btnsm[_local8]); _local8++; }; btnsm = []; }; _local6 = _local3; while (_local6 < _local4) { _local5 = new m_btn(); _local5.x = (_local1 - (selectm.width / 2)); _local5.y = (_local2 - (selectm.height / 2)); selectm.addChild(_local5); _local5.bim.gotoAndStop(_local6); _local5.levtxt.text = _local6; _local5.levtxt.visible = false; _local5.pov.clev = _local6; _local5.scoretxt.embedFonts = true; _local5.levtxt.embedFonts = true; _local5.med.lvltxt.text = _local5.levtxt.text; _local5.bon.visible = false; if (bonusc == 1){ if (_local6 >= 19){ _local5.bon.visible = true; _local5.bonus = "da"; }; }; if (_local5.bonus != "da"){ _local5.pov.addEventListener(MouseEvent.CLICK, selbtnClick); _local5.pov.addEventListener(MouseEvent.MOUSE_OVER, selOver); _local5.pov.addEventListener(MouseEvent.MOUSE_OUT, selOut); }; if (_local5.bonus == "da"){ _local5.pov.addEventListener(MouseEvent.CLICK, selbtnClick2); _local5.pov.addEventListener(MouseEvent.MOUSE_OVER, selOver); _local5.pov.addEventListener(MouseEvent.MOUSE_OUT, selOut); }; if ((((((((_local6 == 1)) || ((_local6 == 7)))) || ((_local6 == 13)))) || ((_local6 == 19)))){ _local5.med.x = -35; _local5.med.y = -80; }; if ((((((((_local6 == 2)) || ((_local6 == 8)))) || ((_local6 == 14)))) || ((_local6 == 20)))){ _local5.med.x = -58; _local5.med.y = -80; }; if ((((((((_local6 == 3)) || ((_local6 == 9)))) || ((_local6 == 15)))) || ((_local6 == 21)))){ _local5.med.x = 68; _local5.med.y = -87; }; if ((((((((_local6 == 4)) || ((_local6 == 10)))) || ((_local6 == 16)))) || ((_local6 == 22)))){ _local5.med.x = 0; _local5.med.y = -95; }; if ((((((((_local6 == 5)) || ((_local6 == 11)))) || ((_local6 == 17)))) || ((_local6 == 23)))){ _local5.med.x = 18; _local5.med.y = -92; }; if ((((((((_local6 == 6)) || ((_local6 == 12)))) || ((_local6 == 18)))) || ((_local6 == 24)))){ _local5.med.x = 28; _local5.med.y = -95; }; btnsm.push(_local5); _local1 = (_local1 + 160); if ((((((((((((((((((_local6 == 3)) || ((_local6 == 6)))) || ((_local6 == 9)))) || ((_local6 == 12)))) || ((_local6 == 15)))) || ((_local6 == 18)))) || ((_local6 == 21)))) || ((_local6 == 24)))) || ((_local6 == 27)))){ _local2 = (_local2 + 180); _local1 = 180; }; if (mySharedObject.data[("lev" + _local6)] == undefined){ _local5.gotoAndStop(2); if ((((mySharedObject.data[("lev" + (_local6 + 1))] == undefined)) && (!((mySharedObject.data[("lev" + (_local6 - 1))] == undefined))))){ _local5.gotoAndStop(3); _local5.buttonMode = true; }; } else { _local5.gotoAndStop(1); if (mySharedObject.data[("medk" + _local6)] == undefined){ mySharedObject.data[("medk" + _local6)] = 4; }; _local5.med.gotoAndStop(mySharedObject.data[("medk" + _local6)]); _local5.scoretxt.text = mySharedObject.data[("lev" + _local6)]; _local5.buttonMode = true; }; _local6++; }; _local7 = 1; while (_local7 < 31) { if (mySharedObject.data[("lev" + _local7)] != undefined){ allscore = (allscore + mySharedObject.data[("lev" + _local7)]); }; _local7++; }; selectm.st.text = ""; selectm.st.text = ("Total score: " + allscore); } public function butm1click(_arg1:Event):void{ if (dazvuk){ zvv1s.play(); }; mouseTimer.stop(); menum.visible = false; allscore = 0; selMen(); } public function create_chick(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; _local9 = new chickmc(); _local9.getChildAt(1).gotoAndStop(1); _local9.getChildAt(2).visible = false; _local9.gotoAndStop(_arg7); if (_arg8 == 1){ }; bodyDef = new b2BodyDef(); _local9.x = (_arg1 + (_arg3 / 2)); _local9.y = (_arg2 + (_arg4 / 2)); _local9.dead = false; bodyDef.position.x = (_local9.x / pixels_in_a_meter); bodyDef.position.y = (_local9.y / pixels_in_a_meter); circleDef = new b2CircleDef(); circleDef.radius = ((_arg3 / 2) / pixels_in_a_meter); circleDef.density = 1; circleDef.friction = 1; circleDef.restitution = 0; bodyDef.userData = _local9; bodyDef.userData.name = "chick"; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); addChild(_local9); chickmcar.push(_local9); chickobjar.push(body); } public function UpdatePerehod(_arg1:Event):void{ var _local2:*; if (_arg1.target.currentFrame == 2){ _arg1.target.tabl.scoretxt.text = ("score: " + scoreint); trace(((scoreint + ", ") + tlevel)); if (selectm.visible == false){ _arg1.target.tabl.nadp.gotoAndStop(1); }; if (selectm.visible == true){ _arg1.target.tabl.nadp.gotoAndStop(2); }; _arg1.target.tabl.sav.visible = true; _arg1.target.tabl.sav.ss.visible = false; _arg1.target.tabl.sav.subm.visible = false; _arg1.target.tabl.sav.sub.addEventListener(MouseEvent.CLICK, subperclick); _arg1.target.tabl.sav.subm.sub.addEventListener(MouseEvent.CLICK, subperclick2); _arg1.target.tabl.sav.hsb.addEventListener(MouseEvent.CLICK, hsb2click); _arg1.target.tabl.sav.subm.can.addEventListener(MouseEvent.CLICK, subcanclick); _arg1.target.tabl.sav.subm.sn.addEventListener(MouseEvent.CLICK, snclick); _arg1.target.tabl.sav.subm.gf.addEventListener(MouseEvent.CLICK, gfclick); allscore2 = 0; _local2 = 1; while (_local2 < 31) { if (mySharedObject.data[("lev" + _local2)] != undefined){ allscore2 = (allscore2 + mySharedObject.data[("lev" + _local2)]); }; _local2++; }; _arg1.target.tabl.sav.subm.scor.text = allscore2; _arg1.target.tabl.sav.subm.sub.visible = false; perehodm.tabl.sav.subm.nametxt.text = namestr; perehodm.tabl.sav.subm.stat.gotoAndStop(statint); if (perehodm.tabl.sav.subm.stat.currentFrame == 2){ _arg1.target.tabl.sav.subm.sub.visible = true; }; }; if (_arg1.target.currentFrame == 19){ _arg1.target.tabl.addEventListener(MouseEvent.CLICK, tablclick); _arg1.target.tabl.buttonMode = true; }; if (_arg1.target.currentFrame == 21){ tlevel++; worldClear(); _arg1.target.removeEventListener(Event.ENTER_FRAME, UpdatePerehod); }; } public function deadhit():void{ var i:uint; var c:uint; var mc:*; i = 0; while (i < kvadmcar.length) { if (kvadmcar[i] != undefined){ if (kvadmcar[i].dead == true){ mc = new bangmc(); mc.x = mouseX; mc.y = mouseY; mc.width = (kvadmcar[i].height / 2); if (mc.width > 15){ mc.width = 15; }; if (mc.width < 7){ mc.width = 7; }; mc.height = mc.width; parent.addChild(mc); mc.addFrameScript((mc.totalFrames - 1), function (_arg1:MovieClip){ var mc = _arg1; return (function (){ killMeDa(mc); }); }(mc)); m_world.DestroyBody(kvadobjar[i]); removeChild(kvadmcar[i]); kvadmcar.splice(i, 1); kvadobjar.splice(i, 1); }; }; i = (i + 1); }; c = 0; while (c < chickmcar.length) { if (chickmcar[c] != undefined){ if (chickmcar[c].dead == true){ chickmcar[c].alpha = (chickmcar[c].alpha - 0.02); if (chickmcar[c].alpha <= 0){ if (dazvuk){ zv4s.play(); }; m_world.DestroyBody(chickobjar[c]); removeChild(chickmcar[c]); chickmcar.splice(c, 1); chickobjar.splice(c, 1); estvrag--; }; }; }; c = (c + 1); }; } public function loginbtnclick(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://twotowersgames.com/register/login/"), "_parent"); } public function animatedd(_arg1:Event):void{ _arg1.target.alpha = (_arg1.target.alpha - 0.05); if (_arg1.target.alpha <= 0){ _arg1.target.removeEventListener(Event.ENTER_FRAME, animatedd); parent.parent.removeChild((_arg1.target as Sprite)); }; _arg1.target.scaleX = (_arg1.target.scaleX - 0.1); _arg1.target.scaleY = (_arg1.target.scaleY - 0.1); _arg1.target.y = (_arg1.target.y + 3); } public function addbutclick(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/hDLhK0nI15ms"), "_blank"); } public function hsbclick(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/b7ss9ZxZRggb?username="), "_blank"); } public function btnOver(_arg1:MouseEvent):void{ damenu = true; } public function oknocanbtn(_arg1:MouseEvent){ oknom.visible = false; } public function btnOut(_arg1:MouseEvent):void{ damenu = false; } public function create_djoint(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{ var _local5:b2Body; var _local6:b2Body; var _local7:b2Joint; var _local8:*; var _local9:*; var _local10:b2DistanceJointDef; var _local11:b2Contact; var _local12:*; var _local13:*; var _local14:b2Contact; var _local15:*; var _local16:*; _local8 = new b2Vec2((_arg1 / pixels_in_a_meter), (_arg2 / pixels_in_a_meter)); _local9 = new b2Vec2((_arg3 / pixels_in_a_meter), (_arg4 / pixels_in_a_meter)); _local5 = m_world.GetGroundBody(); _local6 = m_world.GetGroundBody(); bodyDef = new b2BodyDef(); bodyDef.position.x = (_arg1 / pixels_in_a_meter); bodyDef.position.y = (_arg2 / pixels_in_a_meter); circleDef = new b2CircleDef(); circleDef.radius = (1 / pixels_in_a_meter); circleDef.density = 0; circleDef.isSensor = true; bodyDef.userData = new Sprite(); bodyDef.userData.name = "jnsensor"; body = m_world.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); if (m_world.m_contactList){ _local11 = m_world.m_contactList; _local12 = _local11.GetShape2().GetBody(); _local13 = _local11.GetShape1().GetBody(); if (_local12 == body){ _local5 = _local13; }; if (_local13 == body){ _local5 = _local12; }; }; m_world.DestroyBody(body); bodyDef = new b2BodyDef(); bodyDef.position.x = (_arg3 / pixels_in_a_meter); bodyDef.position.y = (_arg4 / pixels_in_a_meter); circleDef = new b2CircleDef(); circleDef.radius = (1 / pixels_in_a_meter); circleDef.density = 0; circleDef.isSensor = true; bodyDef.userData = new Sprite(); bodyDef.userData.name = "jnsensor2"; body2 = m_world.CreateBody(bodyDef); body2.CreateShape(circleDef); body2.SetMassFromShapes(); if (m_world.m_contactList){ _local14 = m_world.m_contactList; _local15 = _local14.GetShape2().GetBody(); _local16 = _local14.GetShape1().GetBody(); if (_local15 == body2){ _local6 = _local16; }; if (_local16 == body2){ _local6 = _local15; }; if (_local6 == _local5){ if (_local15 == body2){ _local6 = _local15; }; if (_local16 == body2){ _local6 = _local16; }; }; }; m_world.DestroyBody(body2); _local10 = new b2DistanceJointDef(); if (_local5 != _local6){ _local10.Initialize(_local5, _local6, _local8, _local9); _local10.collideConnected = true; _local7 = (m_world.CreateJoint(_local10) as b2DistanceJoint); listjoint.push(_local7); }; } public function resBtnEv(_arg1:MouseEvent):void{ my_canvas.graphics.clear(); glmenu = false; worldClear(); } public function closeBtn(_arg1:Event):void{ worldClear(); mouseTimer.start(); menum.visible = true; selectm.visible = true; tlevel = 0; glmenu = false; exitbtn.visible = false; btnbtnmc.visible = false; exitbtn.visible = false; my_canvas.graphics.clear(); worldClear(); fonm.gotoAndStop(1); if (damusic){ scm.stop(); scm = zvmuss.play(0, int.MAX_VALUE); }; } function giveScoreLoaded(_arg1:APIEvents):void{ trace(_arg1.data.gameid); trace(_arg1.data.level); trace(_arg1.data.authed); trace(_arg1.data.username); } public function selmen3click(_arg1:Event):void{ if (lvlpart > 0){ lvlpart--; selMen(); if (dazvuk){ zvv1s.play(); }; }; } public function butmenOut(_arg1:Event):void{ _arg1.target.gotoAndStop(1); } public function endLevel(){ if (estvrag == 0){ if (dazvuk){ zvv2s.play(); }; if (mySharedObject.data[("lev" + tlevel)] == undefined){ mySharedObject.data[("lev" + tlevel)] = scoreint; } else { if (mySharedObject.data[("lev" + tlevel)] < scoreint){ mySharedObject.data[("lev" + tlevel)] = scoreint; }; }; if (mySharedObject.data[("med" + tlevel)] == undefined){ mySharedObject.data[("med" + tlevel)] = 0; mySharedObject.data[("medk" + tlevel)] = 4; }; if (Number(mySharedObject.data[("med" + tlevel)]) < scoreint){ if (scoreint >= mpgold){ mySharedObject.data[("med" + tlevel)] = scoreint; mySharedObject.data[("medk" + tlevel)] = 1; }; if ((((scoreint < mpgold)) && ((scoreint >= mpsilver)))){ mySharedObject.data[("med" + tlevel)] = scoreint; mySharedObject.data[("medk" + tlevel)] = 2; }; if ((((scoreint < mpsilver)) && ((scoreint >= mpbronze)))){ mySharedObject.data[("med" + tlevel)] = scoreint; mySharedObject.data[("medk" + tlevel)] = 3; }; if (scoreint < mpbronze){ mySharedObject.data[("med" + tlevel)] = scoreint; mySharedObject.data[("medk" + tlevel)] = 4; }; }; estvrag = 100; mySharedObject.flush(); if (tlevel != 24){ glmenu = true; scoreTimer.stop(); perehodm = new perehodmc(); perehodm.x = (perehodm.width / 2); perehodm.y = (perehodm.height / 2); parent.addChild(perehodm); perehodm.addEventListener(Event.ENTER_FRAME, UpdatePerehod); perehodm.addFrameScript((perehodm.totalFrames - 1), function (_arg1:MovieClip){ var perehodm = _arg1; return (function (){ killMeDa(perehodm); }); }(perehodm)); }; if (tlevel == 24){ selectm.visible = true; glmenu = true; exitbtn.visible = false; btnbtnmc.visible = false; exitbtn.visible = false; if (damusic){ scm.stop(); scm = zvmuss.play(0, int.MAX_VALUE); }; menum.visible = false; selMen(); }; }; } public function mousetext(_arg1:MovieClip):void{ var _local2:*; var _local3:TextField; _local2 = 0; while (_local2 < _arg1.numChildren) { _local3 = new TextField(); _local3.x = _arg1.getChildAt(_local2).x; _local3.y = _arg1.getChildAt(_local2).y; _local3.selectable = false; _local3.htmlText = ((((("<b>" + _local2) + "(") + _local2) + ")") + "</b>"); _local3.textColor = 13551989; parent.parent.addChild(_local3); _local2++; }; } public function selmcOut(_arg1:Event):void{ _arg1.target.alpha = 1; } public function menuhit():void{ var _local1:uint; if (menum.visible == true){ _local1 = 0; while (_local1 < all_mcsmen.length) { if (all_mcsmen[_local1].y > 560){ m_world.DestroyBody(all_objmen[_local1]); parent.parent.removeChild(all_mcsmen[_local1]); all_mcsmen.splice(_local1, 1); all_objmen.splice(_local1, 1); }; _local1++; }; }; } public function fButtonClicked(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/Kgcgn6I2pbGT"), "_blank"); } public function butm2click(_arg1:Event):void{ if (dazvuk){ zvv1s.play(); }; trace("yes"); } public function create_triangle(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):void{ var _local9:*; var _local10:GlowFilter; var _local11:GlowFilter; _local9 = new trianglemc(); _local9.gotoAndStop(_arg7); if (_arg8 == 1){ _local9.buttonMode = true; _local9.addEventListener(MouseEvent.CLICK, selmcClick); _local9.addEventListener(MouseEvent.MOUSE_OVER, selmcOver); _local9.addEventListener(MouseEvent.MOUSE_OUT, selmcOut); _local10 = new GlowFilter(16512307, 1, 8, 8, 2, 3, false, false); _local11 = new GlowFilter(16512307, 1, 8, 8, 2, 3, true, false); _local9.ln = 1; _local9.addEventListener(Event.ENTER_FRAME, lasd); _local9.filters = [_local10, _local11]; _local9.obr = "net"; }; bodyDef = new b2BodyDef(); _local9.width = _arg3; _local9.height = _arg4; _local9.x = (_arg1 + (_arg3 / 2)); _local9.y = (_arg2 + (_arg4 / 2)); bodyDef.position.x = (_local9.x / pixels_in_a_meter); bodyDef.position.y = (_local9.y / pixels_in_a_meter); polygon.vertexCount = 3; polygon.vertices[0].Set(0, ((_arg3 / pixels_in_a_meter2) * -1)); polygon.vertices[1].Set((_arg3 / pixels_in_a_meter2), (_arg3 / pixels_in_a_meter2)); polygon.vertices[2].Set(((_arg3 / pixels_in_a_meter2) * -1), (_arg3 / pixels_in_a_meter2)); polygon.density = 1; if (_arg7 == 1){ polygon.density = 0; }; bodyDef.userData = _local9; bodyDef.angle = (_arg5 / (180 / Math.PI)); _local9.rotation = (bodyDef.angle * (180 / Math.PI)); body = m_world.CreateBody(bodyDef); body.CreateShape(polygon); body.SetMassFromShapes(); addChild(_local9); kvadmcar.push(_local9); kvadobjar.push(body); } public function walclick(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/FE70zwicyxLe"), "_blank"); } public function hitgnez():void{ var _local1:uint; var _local2:uint; _local1 = 0; while (_local1 < chickmcar.length) { _local2 = 0; while (_local2 < gnezmcar.length) { if (chickmcar[_local1].dead == false){ if (chickmcar[_local1].getChildAt(2).hitTestObject(gnezmcar[_local2])){ chickmcar[_local1].dead = true; }; }; _local2++; }; _local1++; }; } public function worldClear(){ var _local1:uint; var _local2:uint; all_mcs = all_mcs.concat(kvadmcar, chickmcar, gnezmcar); _local1 = 0; while (_local1 < all_mcs.length) { if (all_mcs[_local1] != undefined){ removeChild(all_mcs[_local1]); delete all_mcs[_local1]; }; _local1++; }; all_obj = all_obj.concat(kvadobjar, chickobjar, gnezobjar); _local2 = 0; while (_local2 < all_obj.length) { if (all_obj[_local2] != undefined){ m_world.DestroyBody(all_obj[_local2]); all_obj[_local2] = null; }; _local2++; }; listjoint = []; kvadmcar = []; kvadobjar = []; chickmcar = []; chickobjar = []; gnezmcar = []; gnezobjar = []; all_mcs = []; all_obj = []; listjoint = []; init(); } public function isUrl(_arg1:Array):Boolean{ var _local2:String; var _local3:Number; var _local4:Number; var _local5:String; var _local6:Number; var _local7:Number; var _local8:int; _local2 = root.loaderInfo.loaderURL; _local3 = (_local2.indexOf("://") + 3); _local4 = _local2.indexOf("/", _local3); _local5 = _local2.substring(_local3, _local4); _local6 = (_local5.lastIndexOf(".") - 1); _local7 = (_local5.lastIndexOf(".", _local6) + 1); _local5 = _local5.substring(_local7, _local5.length); _local8 = 0; while (_local8 < _arg1.length) { if (_local5 == _arg1[_local8]){ return (true); }; _local8++; }; return (false); } public function selmcClick(_arg1:Event):void{ _arg1.target.dead = true; scoreint = (scoreint - 50); if (dazvuk){ zv1s.play(); }; } } }//package
Section 117
//mainclass (mainclass) package { public dynamic class mainclass extends Main { } }//package
Section 118
//menumc (menumc) package { import flash.display.*; public dynamic class menumc extends MovieClip { public var mgb:SimpleButton; public var ttgbtn:SimpleButton; public var addbut:SimpleButton; public var walbtn:SimpleButton; public var hsb:SimpleButton; public var ngb:SimpleButton; } }//package
Section 119
//menupan (menupan) package { import flash.display.*; import flash.text.*; public dynamic class menupan extends MovieClip { public var lvltxt:TextField; public var ttgbtn:SimpleButton; public var walbtn:SimpleButton; public var scoretxt:TextField; public var resbtn:SimpleButton; public var mmbtn:SimpleButton; } }//package
Section 120
//musicmc (musicmc) package { import flash.display.*; public dynamic class musicmc extends MovieClip { } }//package
Section 121
//MyRectangle (MyRectangle) package { import flash.display.*; public dynamic class MyRectangle extends MovieClip { } }//package
Section 122
//nextbtnm (nextbtnm) package { import flash.display.*; public dynamic class nextbtnm extends MovieClip { } }//package
Section 123
//oknomc (oknomc) package { import flash.display.*; public dynamic class oknomc extends MovieClip { public var ok:SimpleButton; public var cancel:SimpleButton; } }//package
Section 124
//palkamc (palkamc) package { import flash.display.*; public dynamic class palkamc extends MovieClip { } }//package
Section 125
//perehodmc (perehodmc) package { import flash.display.*; public dynamic class perehodmc extends MovieClip { public var mov:MovieClip; public var tabl:MovieClip; public function perehodmc(){ addFrameScript(19, frame20); } function frame20(){ stop(); } } }//package
Section 126
//PixelExplosion (PixelExplosion) package { import flash.events.*; import flash.display.*; public class PixelExplosion extends Sprite { private var img_bmp:Bitmap; private var K:Number; private var V:Number; private var pixelsCount:uint; private var ySpeed:Array; private var h:uint; private var minPixelLife:Number; private var w:uint; private var pixelAlpha:Array; private var deadPixel:uint; private var r:uint; private var img_mc:Sprite; private var pixel:Array; private var maxPixelLife:Number; private var xSpeed:Array; private var outAlpha:Number; private var img:BitmapData; private var xA:Number; private var yA:Number; private var overAlpha:Number; public function PixelExplosion(_arg1:uint, _arg2:BitmapData, _arg3:Number=14, _arg4:Number=0.1, _arg5:Number=0, _arg6:Number=14, _arg7:Number=0.2, _arg8:Number=0.5, _arg9:Number=1, _arg10:Number=0.8){ img_mc = new Sprite(); super(); this.overAlpha = _arg9; this.outAlpha = _arg10; this.V = (_arg3 / _arg1); this.K = _arg4; this.xA = (_arg5 / _arg1); this.yA = (_arg6 / _arg1); this.minPixelLife = (1 / (_arg7 * _arg1)); this.maxPixelLife = (1 / (_arg8 * _arg1)); img = _arg2; img_bmp = new Bitmap(img); img_mc.addChild(img_bmp); w = img.width; h = img.height; pixelsCount = (w * h); pixel = formArray(w, h); pixelAlpha = formArray(w, h); xSpeed = formArray(w, h); ySpeed = formArray(w, h); createPixelArray(); img_mc.alpha = _arg10; addChild(img_mc); mouseDownListener(); } private function setSpeed():void{ var _local1:uint; var _local2:uint; _local1 = 0; while (_local1 < w) { _local2 = 0; while (_local2 < h) { xSpeed[_local1][_local2] = ((K * (0.5 - Math.random())) + ((V * ((_local1 - img_mc.x) - (img_mc.width / 2))) * Math.random())); ySpeed[_local1][_local2] = ((K * (0.5 - Math.random())) + ((V * ((_local2 - img_mc.y) - 10)) * Math.random())); _local2++; }; _local1++; }; } private function formArray(_arg1:uint, _arg2:uint):Array{ var _local3:Array; var _local4:uint; _local3 = new Array(_arg1); _local4 = 0; while (_local4 < _arg1) { _local3[_local4] = new Array(_arg2); _local4++; }; return (_local3); } private function setAlpha():void{ var _local1:uint; var _local2:uint; _local1 = 0; while (_local1 < w) { _local2 = 0; while (_local2 < h) { pixelAlpha[_local1][_local2] = (minPixelLife + ((maxPixelLife - minPixelLife) * Math.random())); _local2++; }; _local1++; }; } private function enterFrameHandler(_arg1:Event):void{ var _local2:uint; var _local3:uint; _local2 = 0; while (_local2 < w) { _local3 = 0; while (_local3 < h) { if (pixel[_local2][_local3] != null){ pixel[_local2][_local3].x = (pixel[_local2][_local3].x + (xSpeed[_local2][_local3] + (xA / 2))); xSpeed[_local2][_local3] = (xSpeed[_local2][_local3] + xA); pixel[_local2][_local3].y = (pixel[_local2][_local3].y + (ySpeed[_local2][_local3] + (yA / 2))); ySpeed[_local2][_local3] = (ySpeed[_local2][_local3] + yA); pixel[_local2][_local3].alpha = (pixel[_local2][_local3].alpha - pixelAlpha[_local2][_local3]); if (pixel[_local2][_local3].alpha <= 0){ removeChild(pixel[_local2][_local3]); pixel[_local2][_local3] = new Shape(); pixel[_local2][_local3] = null; deadPixel++; }; }; _local3++; }; _local2++; }; if (deadPixel == pixelsCount){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); deactivate(); }; } private function showPixelArray():void{ var _local1:uint; var _local2:uint; _local1 = 0; while (_local1 < w) { _local2 = 0; while (_local2 < h) { addChild(pixel[_local1][_local2]); _local2++; }; _local1++; }; } public function deactivate():void{ pixel = null; pixelAlpha = null; xSpeed = null; ySpeed = null; } private function deleteImage():void{ img_mc.removeChild(img_bmp); removeChild(img_mc); img = null; img_bmp = null; img_mc = null; } private function createPixelArray():void{ var _local1:uint; var _local2:uint; var _local3:uint; _local2 = 0; while (_local2 < w) { _local3 = 0; while (_local3 < h) { _local1 = ((img.getPixel32(_local2, _local3) >> 24) & 0xFF); pixel[_local2][_local3] = new Shape(); if (_local1 != 0){ pixel[_local2][_local3].alpha = (_local1 / 0xFF); pixel[_local2][_local3].graphics.lineStyle(0, 0, 0); pixel[_local2][_local3].graphics.beginFill(img.getPixel(_local2, _local3)); pixel[_local2][_local3].graphics.drawRect(0, 0, 1, 1); pixel[_local2][_local3].graphics.endFill(); pixel[_local2][_local3].x = _local2; pixel[_local2][_local3].y = _local3; }; _local3++; }; _local2++; }; } private function mouseDownListener():void{ setSpeed(); setAlpha(); showPixelArray(); deleteImage(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } } }//package
Section 127
//Preloader (Preloader) package { import flash.display.*; import flash.events.*; import com.api.as3.evnt.*; import CPMStar.*; import com.api.as3.*; import flash.net.*; public class Preloader extends MovieClip { public var ttgsplash:MovieClip; var api:API; private var flongamovem; private var progressBar:Sprite; private var adbox; private static const ENTRY_FRAME:int = 2; public function Preloader():void{ api = new API("000185", "apUfSbxD", "http://twotowersgames.com/exclusiveapi/"); addFrameScript(1, frame2, 2, frame3); super(); stop(); flongamovem = new flongamove(); flongamovem.x = (700 / 2); flongamovem.y = (525 / 2); addChild(flongamovem); loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler); loaderInfo.addEventListener(Event.COMPLETE, completeHandler); flongamovem.playy.visible = false; flongamovem.playy.addEventListener(MouseEvent.MOUSE_DOWN, butp2); flongamovem.logottg.buttonMode = true; flongamovem.logottg.addEventListener(MouseEvent.MOUSE_DOWN, butp3); flongamovem.logottg.visible = false; api.addEventListener(APIEvents.ADVERTISING, function (_arg1:APIEvents){ var _local2:int; var _local3:int; var _local4:DisplayObject; trace(_arg1.data.reply); if (_arg1.data.reply == "allowed"){ flongamovem.logottg.visible = false; flongamovem.adbox.visible = true; _local2 = 17281; _local3 = 185; _local4 = AdLoader.LoadAd(_local2, _local3); flongamovem.adbox.addChild(_local4); }; if (_arg1.data.reply == "prohibited"){ flongamovem.logottg.visible = true; flongamovem.adbox.visible = false; }; }); api.advertising(root.loaderInfo.loaderURL); } public function butp3(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/Kgcgn6I2pbGT"), "_blank"); } public function butp2(_arg1:MouseEvent):void{ play(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(_arg1:Event):void{ if (currentFrame >= ENTRY_FRAME){ removeEventListener(Event.ENTER_FRAME, enterFrameHandler); stop(); removeChild(flongamovem); }; } function frame3(){ stop(); } private function progressHandler(_arg1:ProgressEvent):void{ flongamovem.fText.text = (Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100)) + "%"); flongamovem.fBar.width = (Math.round(((_arg1.bytesLoaded / _arg1.bytesTotal) * 100)) * 2); } function frame2(){ ttgsplash.addEventListener(MouseEvent.CLICK, clickTAG); ttgsplash.buttonMode = true; } private function completeHandler(_arg1:Event):void{ flongamovem.playy.visible = true; } public function clickTAG(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://twotowersgames.com/eredir/Kgcgn6I2pbGT"), "_blank"); } } }//package
Section 128
//resbtnm (resbtnm) package { import flash.display.*; public dynamic class resbtnm extends MovieClip { } }//package
Section 129
//selectmc (selectmc) package { import flash.display.*; import flash.text.*; public dynamic class selectmc extends MovieClip { public var subbtn:SimpleButton; public var s1:SimpleButton; public var ttgbtn:SimpleButton; public var s2:SimpleButton; public var st:TextField; public var walbtn:SimpleButton; public var mmbtn:SimpleButton; } }//package
Section 130
//siskimc (siskimc) package { import flash.display.*; public dynamic class siskimc extends MovieClip { } }//package
Section 131
//soundmc (soundmc) package { import flash.display.*; public dynamic class soundmc extends MovieClip { } }//package
Section 132
//trianglemc (trianglemc) package { import flash.display.*; public dynamic class trianglemc extends MovieClip { } }//package
Section 133
//zv1 (zv1) package { import flash.media.*; public dynamic class zv1 extends Sound { } }//package
Section 134
//zv2 (zv2) package { import flash.media.*; public dynamic class zv2 extends Sound { } }//package
Section 135
//zv3 (zv3) package { import flash.media.*; public dynamic class zv3 extends Sound { } }//package
Section 136
//zv4 (zv4) package { import flash.media.*; public dynamic class zv4 extends Sound { } }//package
Section 137
//zvmus (zvmus) package { import flash.media.*; public dynamic class zvmus extends Sound { } }//package
Section 138
//zvmus2 (zvmus2) package { import flash.media.*; public dynamic class zvmus2 extends Sound { } }//package
Section 139
//zvv1 (zvv1) package { import flash.media.*; public dynamic class zvv1 extends Sound { } }//package
Section 140
//zvv2 (zvv2) package { import flash.media.*; public dynamic class zvv2 extends Sound { } }//package

Library Items

Symbol 1 Font {Font1}Used by:23 153 188 266 269 271 273 276 283 286 288 307 309 312 386 404 405
Symbol 2 Sound {zvv2}Used by:352
Symbol 3 Sound {zv4}Used by:352
Symbol 4 Sound {zv3}Used by:352
Symbol 5 Sound {zv2}Used by:352
Symbol 6 Sound {zv1}Used by:352
Symbol 7 BitmapUsed by:8
Symbol 8 GraphicUses:7Used by:9 334
Symbol 9 MovieClip {light}Uses:8
Symbol 10 GraphicUsed by:11
Symbol 11 MovieClipUses:10Used by:12
Symbol 12 MovieClip {fireworks_mc4}Uses:11
Symbol 13 GraphicUsed by:14
Symbol 14 MovieClipUses:13Used by:15
Symbol 15 MovieClip {fireworks_mc3}Uses:14
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:16Used by:18
Symbol 18 MovieClip {fireworks_mc2}Uses:17
Symbol 19 GraphicUsed by:20
Symbol 20 MovieClipUses:19Used by:21
Symbol 21 MovieClip {fireworks_mc1}Uses:20
Symbol 22 GraphicUsed by:24 154 247 267 290 352
Symbol 23 TextUses:1Used by:24
Symbol 24 MovieClip {lockmc}Uses:22 23
Symbol 25 GraphicUsed by:29
Symbol 26 GraphicUsed by:29
Symbol 27 GraphicUsed by:29
Symbol 28 GraphicUsed by:29
Symbol 29 MovieClip {bangmc}Uses:25 26 27 28
Symbol 30 BitmapUsed by:31
Symbol 31 GraphicUses:30Used by:34
Symbol 32 BitmapUsed by:33
Symbol 33 GraphicUses:32Used by:34
Symbol 34 MovieClip {trianglemc}Uses:31 33
Symbol 35 GraphicUsed by:50
Symbol 36 FontUsed by:37
Symbol 37 EditableTextUses:36Used by:50
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClipUses:38Used by:50
Symbol 40 GraphicUsed by:44 304
Symbol 41 FontUsed by:42 43 52 149 151 188 251 252 253 254 270 288 302 303 404 405
Symbol 42 TextUses:41Used by:44
Symbol 43 TextUses:41Used by:44
Symbol 44 ButtonUses:40 42 43Used by:50
Symbol 45 BitmapUsed by:46 199
Symbol 46 GraphicUses:45Used by:47 200
Symbol 47 MovieClipUses:46Used by:50
Symbol 48 GraphicUsed by:49
Symbol 49 MovieClipUses:48Used by:50
Symbol 50 MovieClipUses:35 37 39 44 47 49
Symbol 51 GraphicUsed by:53 237
Symbol 52 EditableTextUses:41Used by:53
Symbol 53 MovieClip {lvlcomp}Uses:51 52
Symbol 54 BitmapUsed by:55
Symbol 55 GraphicUses:54Used by:70
Symbol 56 BitmapUsed by:57
Symbol 57 GraphicUses:56Used by:70
Symbol 58 BitmapUsed by:59
Symbol 59 GraphicUses:58Used by:70
Symbol 60 BitmapUsed by:61
Symbol 61 GraphicUses:60Used by:70
Symbol 62 BitmapUsed by:63
Symbol 63 GraphicUses:62Used by:70
Symbol 64 BitmapUsed by:65
Symbol 65 GraphicUses:64Used by:70
Symbol 66 BitmapUsed by:67
Symbol 67 GraphicUses:66Used by:70
Symbol 68 BitmapUsed by:69
Symbol 69 GraphicUses:68Used by:70
Symbol 70 MovieClip {circmc}Uses:55 57 59 61 63 65 67 69
Symbol 71 BitmapUsed by:72 75
Symbol 72 GraphicUses:71Used by:83
Symbol 73 BitmapUsed by:74 76
Symbol 74 GraphicUses:73Used by:83
Symbol 75 GraphicUses:71Used by:83
Symbol 76 GraphicUses:73Used by:83
Symbol 77 BitmapUsed by:78 81
Symbol 78 GraphicUses:77Used by:83
Symbol 79 BitmapUsed by:80 82
Symbol 80 GraphicUses:79Used by:83
Symbol 81 GraphicUses:77Used by:83
Symbol 82 GraphicUses:79Used by:83
Symbol 83 MovieClip {palkamc}Uses:72 74 75 76 78 80 81 82
Symbol 84 BitmapUsed by:85 155
Symbol 85 GraphicUses:84Used by:158
Symbol 86 BitmapUsed by:87
Symbol 87 GraphicUses:86Used by:146
Symbol 88 BitmapUsed by:89
Symbol 89 GraphicUses:88Used by:146
Symbol 90 BitmapUsed by:91
Symbol 91 GraphicUses:90Used by:146
Symbol 92 BitmapUsed by:93
Symbol 93 GraphicUses:92Used by:146
Symbol 94 BitmapUsed by:95
Symbol 95 GraphicUses:94Used by:146
Symbol 96 BitmapUsed by:97
Symbol 97 GraphicUses:96Used by:146
Symbol 98 BitmapUsed by:99
Symbol 99 GraphicUses:98Used by:146
Symbol 100 BitmapUsed by:101
Symbol 101 GraphicUses:100Used by:146
Symbol 102 BitmapUsed by:103
Symbol 103 GraphicUses:102Used by:146
Symbol 104 BitmapUsed by:105
Symbol 105 GraphicUses:104Used by:146
Symbol 106 BitmapUsed by:107
Symbol 107 GraphicUses:106Used by:146
Symbol 108 BitmapUsed by:109
Symbol 109 GraphicUses:108Used by:146
Symbol 110 BitmapUsed by:111
Symbol 111 GraphicUses:110Used by:146
Symbol 112 BitmapUsed by:113
Symbol 113 GraphicUses:112Used by:146
Symbol 114 BitmapUsed by:115
Symbol 115 GraphicUses:114Used by:146
Symbol 116 BitmapUsed by:117
Symbol 117 GraphicUses:116Used by:146
Symbol 118 BitmapUsed by:119
Symbol 119 GraphicUses:118Used by:146
Symbol 120 BitmapUsed by:121
Symbol 121 GraphicUses:120Used by:146
Symbol 122 BitmapUsed by:123
Symbol 123 GraphicUses:122Used by:146
Symbol 124 BitmapUsed by:125
Symbol 125 GraphicUses:124Used by:146
Symbol 126 BitmapUsed by:127
Symbol 127 GraphicUses:126Used by:146
Symbol 128 BitmapUsed by:129
Symbol 129 GraphicUses:128Used by:146
Symbol 130 BitmapUsed by:131
Symbol 131 GraphicUses:130Used by:146
Symbol 132 BitmapUsed by:133
Symbol 133 GraphicUses:132Used by:146
Symbol 134 BitmapUsed by:135
Symbol 135 GraphicUses:134Used by:146
Symbol 136 BitmapUsed by:137
Symbol 137 GraphicUses:136Used by:146
Symbol 138 BitmapUsed by:139
Symbol 139 GraphicUses:138Used by:146
Symbol 140 BitmapUsed by:141
Symbol 141 GraphicUses:140Used by:146
Symbol 142 BitmapUsed by:143
Symbol 143 GraphicUses:142Used by:146
Symbol 144 BitmapUsed by:145
Symbol 145 GraphicUses:144Used by:146
Symbol 146 MovieClipUses:87 89 91 93 95 97 99 101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145Used by:158
Symbol 147 FontUsed by:148
Symbol 148 EditableTextUses:147Used by:158
Symbol 149 EditableTextUses:41Used by:150
Symbol 150 MovieClip {Untitled_fla.medal_m_82}Uses:149Used by:158
Symbol 151 EditableTextUses:41Used by:158
Symbol 152 MovieClipUsed by:158
Symbol 153 TextUses:1Used by:154
Symbol 154 MovieClipUses:22 153Used by:158
Symbol 155 GraphicUses:84Used by:156
Symbol 156 MovieClipUses:155Used by:158
Symbol 157 GraphicUsed by:158
Symbol 158 MovieClip {m_btn}Uses:85 146 148 150 151 152 154 156 157
Symbol 159 GraphicUsed by:160 161
Symbol 160 MovieClip {resbtnm}Uses:159
Symbol 161 MovieClip {nextbtnm}Uses:159
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClip {btnbtn}Uses:162
Symbol 164 BitmapUsed by:165
Symbol 165 GraphicUses:164Used by:168
Symbol 166 BitmapUsed by:167
Symbol 167 GraphicUses:166Used by:168
Symbol 168 MovieClip {soundmc}Uses:165 167
Symbol 169 GraphicUsed by:170
Symbol 170 MovieClip {exitmc}Uses:169
Symbol 171 BitmapUsed by:172
Symbol 172 GraphicUses:171Used by:175
Symbol 173 BitmapUsed by:174
Symbol 174 GraphicUses:173Used by:175
Symbol 175 MovieClip {musicmc}Uses:172 174
Symbol 176 BitmapUsed by:177
Symbol 177 GraphicUses:176Used by:206
Symbol 178 BitmapUsed by:179 182 184 186
Symbol 179 GraphicUses:178Used by:183
Symbol 180 BitmapUsed by:181 185
Symbol 181 GraphicUses:180Used by:183
Symbol 182 GraphicUses:178Used by:183
Symbol 183 ButtonUses:179 181 182Used by:206
Symbol 184 GraphicUses:178Used by:187
Symbol 185 GraphicUses:180Used by:187
Symbol 186 GraphicUses:178Used by:187
Symbol 187 ButtonUses:184 185 186Used by:206
Symbol 188 EditableTextUses:1 41Used by:206
Symbol 189 BitmapUsed by:190
Symbol 190 GraphicUses:189Used by:193
Symbol 191 BitmapUsed by:192
Symbol 192 GraphicUses:191Used by:193
Symbol 193 ButtonUses:190 192Used by:206
Symbol 194 BitmapUsed by:195
Symbol 195 GraphicUses:194Used by:198
Symbol 196 BitmapUsed by:197
Symbol 197 GraphicUses:196Used by:198
Symbol 198 ButtonUses:195 197Used by:206 400 416
Symbol 199 GraphicUses:45Used by:200
Symbol 200 ButtonUses:46 199Used by:206 400 416
Symbol 201 BitmapUsed by:202 258
Symbol 202 GraphicUses:201Used by:205
Symbol 203 BitmapUsed by:204 259
Symbol 204 GraphicUses:203Used by:205
Symbol 205 ButtonUses:202 204Used by:206
Symbol 206 MovieClip {selectmc}Uses:177 183 187 188 193 198 200 205
Symbol 207 BitmapUsed by:208
Symbol 208 GraphicUses:207Used by:223
Symbol 209 BitmapUsed by:210
Symbol 210 GraphicUses:209Used by:223
Symbol 211 BitmapUsed by:212
Symbol 212 GraphicUses:211Used by:223
Symbol 213 BitmapUsed by:214
Symbol 214 GraphicUses:213Used by:223
Symbol 215 BitmapUsed by:216
Symbol 216 GraphicUses:215Used by:223
Symbol 217 BitmapUsed by:218
Symbol 218 GraphicUses:217Used by:223
Symbol 219 BitmapUsed by:220
Symbol 220 GraphicUses:219Used by:223
Symbol 221 BitmapUsed by:222
Symbol 222 GraphicUses:221Used by:223
Symbol 223 MovieClip {kvadmc}Uses:208 210 212 214 216 218 220 222
Symbol 224 BitmapUsed by:225 393 394
Symbol 225 GraphicUses:224Used by:233
Symbol 226 GraphicUsed by:227
Symbol 227 MovieClipUses:226Used by:233
Symbol 228 GraphicUsed by:233 350
Symbol 229 BitmapUsed by:230 397
Symbol 230 GraphicUses:229Used by:233
Symbol 231 BitmapUsed by:232 390
Symbol 232 GraphicUses:231Used by:233
Symbol 233 MovieClip {chickmc}Uses:225 227 228 230 232
Symbol 234 BitmapUsed by:235
Symbol 235 GraphicUses:234Used by:236
Symbol 236 MovieClip {gnezdomc}Uses:235
Symbol 237 MovieClipUses:51Used by:238
Symbol 238 MovieClip {gnezd3}Uses:237
Symbol 239 BitmapUsed by:240 242
Symbol 240 GraphicUses:239Used by:241
Symbol 241 MovieClip {gnezd2}Uses:240
Symbol 242 GraphicUses:239Used by:243
Symbol 243 MovieClip {gnezd1}Uses:242
Symbol 244 BitmapUsed by:245 293
Symbol 245 GraphicUses:244Used by:246
Symbol 246 MovieClip {MyRectangle}Uses:245
Symbol 247 MovieClipUses:22Used by:292
Symbol 248 GraphicUsed by:291
Symbol 249 FontUsed by:250
Symbol 250 EditableTextUses:249Used by:291
Symbol 251 TextUses:41Used by:255
Symbol 252 TextUses:41Used by:255
Symbol 253 TextUses:41Used by:255
Symbol 254 TextUses:41Used by:255
Symbol 255 MovieClip {Untitled_fla.perehod_nadpisi_49}Uses:251 252 253 254Used by:291
Symbol 256 GraphicUsed by:257
Symbol 257 MovieClipUses:256Used by:291
Symbol 258 GraphicUses:201Used by:260
Symbol 259 GraphicUses:203Used by:260
Symbol 260 ButtonUses:258 259Used by:290
Symbol 261 BitmapUsed by:262
Symbol 262 GraphicUses:261Used by:265
Symbol 263 BitmapUsed by:264
Symbol 264 GraphicUses:263Used by:265
Symbol 265 ButtonUses:262 264Used by:290 400
Symbol 266 TextUses:1Used by:267
Symbol 267 MovieClipUses:22 266Used by:290
Symbol 268 GraphicUsed by:289
Symbol 269 TextUses:1Used by:289
Symbol 270 TextUses:41Used by:289
Symbol 271 EditableTextUses:1Used by:289
Symbol 272 GraphicUsed by:275 277
Symbol 273 TextUses:1Used by:275
Symbol 274 GraphicUsed by:275 277
Symbol 275 ButtonUses:272 273 274Used by:289
Symbol 276 TextUses:1Used by:277
Symbol 277 ButtonUses:272 276 274Used by:289
Symbol 278 GraphicUsed by:281
Symbol 279 GraphicUsed by:281
Symbol 280 GraphicUsed by:281
Symbol 281 MovieClip {Untitled_fla.smmov1_57}Uses:278 279 280Used by:289
Symbol 282 GraphicUsed by:285 287
Symbol 283 TextUses:1Used by:285
Symbol 284 GraphicUsed by:285 287
Symbol 285 ButtonUses:282 283 284Used by:289
Symbol 286 TextUses:1Used by:287
Symbol 287 ButtonUses:282 286 284Used by:289
Symbol 288 EditableTextUses:1 41Used by:289
Symbol 289 MovieClip {Untitled_fla.pertab_sub_54}Uses:268 269 270 271 275 277 281 285 287 288Used by:290
Symbol 290 MovieClip {Untitled_fla.par_tabl_ssav_51}Uses:22 260 265 267 289Used by:291
Symbol 291 MovieClip {Untitled_fla.perehod_tabl_48}Uses:248 250 255 257 290Used by:292
Symbol 292 MovieClip {perehodmc}Uses:247 291
Symbol 293 GraphicUses:244Used by:294
Symbol 294 MovieClipUses:293Used by:295
Symbol 295 MovieClip {LightBall}Uses:294
Symbol 296 BitmapUsed by:297
Symbol 297 GraphicUses:296Used by:298
Symbol 298 MovieClip {siskimc}Uses:297
Symbol 299 GraphicUsed by:305
Symbol 300 FontUsed by:301
Symbol 301 EditableTextUses:300Used by:305
Symbol 302 TextUses:41Used by:304
Symbol 303 TextUses:41Used by:304
Symbol 304 ButtonUses:40 302 303Used by:305
Symbol 305 MovieClip {downpanmc}Uses:299 301 304
Symbol 306 GraphicUsed by:314
Symbol 307 TextUses:1Used by:314
Symbol 308 GraphicUsed by:311 313
Symbol 309 TextUses:1Used by:311
Symbol 310 GraphicUsed by:311 313
Symbol 311 ButtonUses:308 309 310Used by:314
Symbol 312 TextUses:1Used by:313
Symbol 313 ButtonUses:308 312 310Used by:314
Symbol 314 MovieClip {oknomc}Uses:306 307 311 313
Symbol 315 GraphicUsed by:350
Symbol 316 GraphicUsed by:321
Symbol 317 GraphicUsed by:321
Symbol 318 BitmapUsed by:319
Symbol 319 GraphicUses:318Used by:320
Symbol 320 MovieClipUses:319Used by:321
Symbol 321 MovieClip {Untitled_fla.flag_3}Uses:316 317 320Used by:324
Symbol 322 BitmapUsed by:323
Symbol 323 GraphicUses:322Used by:324
Symbol 324 MovieClipUses:321 323Used by:350
Symbol 325 GraphicUsed by:350
Symbol 326 SoundUsed by:350
Symbol 327 GraphicUsed by:328
Symbol 328 MovieClip {Untitled_fla.salut_5}Uses:327Used by:334 350
Symbol 329 SoundUsed by:350
Symbol 330 GraphicUsed by:334
Symbol 331 BitmapUsed by:332
Symbol 332 GraphicUses:331Used by:333
Symbol 333 MovieClipUses:332Used by:334
Symbol 334 MovieClip {Untitled_fla.logo_6}Uses:330 328 8 333Used by:350
Symbol 335 ShapeTweeningUsed by:350
Symbol 336 BitmapUsed by:337
Symbol 337 GraphicUses:336Used by:338 340
Symbol 338 ButtonUses:337Used by:350
Symbol 339 GraphicUsed by:350
Symbol 340 MovieClipUses:337Used by:350
Symbol 341 GraphicUsed by:344
Symbol 342 ShapeTweeningUsed by:344
Symbol 343 GraphicUsed by:344
Symbol 344 MovieClip {Untitled_fla.blik_10}Uses:341 342 343Used by:350
Symbol 345 GraphicUsed by:346
Symbol 346 MovieClipUses:345Used by:347
Symbol 347 MovieClipUses:346Used by:348
Symbol 348 MovieClip {Untitled_fla.stars_11}Uses:347Used by:350
Symbol 349 GraphicUsed by:350
Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1}Uses:315 228 324 325 326 328 329 334 335 338 339 340 344 348 349Used by:Timeline
Symbol 351 Sound {zvv1}Used by:352
Symbol 352 MovieClip {mainclass}Uses:22 6 5 4 3 351 2Used by:Timeline
Symbol 353 GraphicUsed by:417
Symbol 354 Sound {zvmus}Used by:417
Symbol 355 Sound {zvmus2}Used by:417
Symbol 356 BitmapUsed by:357
Symbol 357 GraphicUses:356Used by:370
Symbol 358 GraphicUsed by:361
Symbol 359 FontUsed by:360 363 365 367
Symbol 360 TextUses:359Used by:361
Symbol 361 MovieClipUses:358 360Used by:369
Symbol 362 GraphicUsed by:364
Symbol 363 TextUses:359Used by:364
Symbol 364 MovieClipUses:362 363Used by:369
Symbol 365 TextUses:359Used by:366
Symbol 366 MovieClipUses:365Used by:369
Symbol 367 TextUses:359Used by:368
Symbol 368 MovieClipUses:367Used by:369
Symbol 369 MovieClip {Untitled_fla.instructions_17}Uses:361 364 366 368Used by:370
Symbol 370 MovieClip {fonmc}Uses:357 369Used by:417
Symbol 371 BitmapUsed by:372
Symbol 372 GraphicUses:371Used by:400
Symbol 373 BitmapUsed by:374
Symbol 374 GraphicUses:373Used by:377
Symbol 375 BitmapUsed by:376
Symbol 376 GraphicUses:375Used by:377
Symbol 377 ButtonUses:374 376Used by:400
Symbol 378 BitmapUsed by:379 382
Symbol 379 GraphicUses:378Used by:383
Symbol 380 BitmapUsed by:381
Symbol 381 GraphicUses:380Used by:383
Symbol 382 GraphicUses:378Used by:383
Symbol 383 ButtonUses:379 381 382Used by:400
Symbol 384 BitmapUsed by:385
Symbol 385 GraphicUses:384Used by:389
Symbol 386 TextUses:1Used by:389
Symbol 387 BitmapUsed by:388
Symbol 388 GraphicUses:387Used by:389
Symbol 389 ButtonUses:385 386 388Used by:400
Symbol 390 GraphicUses:231Used by:391 392
Symbol 391 MovieClipUses:390Used by:392
Symbol 392 MovieClipUses:390 391Used by:400
Symbol 393 GraphicUses:224Used by:396
Symbol 394 GraphicUses:224Used by:395
Symbol 395 MovieClipUses:394Used by:396
Symbol 396 MovieClipUses:393 395Used by:400
Symbol 397 GraphicUses:229Used by:398 399
Symbol 398 MovieClipUses:397Used by:399
Symbol 399 MovieClipUses:397 398Used by:400
Symbol 400 MovieClip {menumc}Uses:372 198 200 377 383 389 265 392 396 399Used by:417
Symbol 401 BitmapUsed by:403
Symbol 402 BitmapUsed by:403
Symbol 403 GraphicUses:401 402Used by:416
Symbol 404 EditableTextUses:1 41Used by:416
Symbol 405 EditableTextUses:1 41Used by:416
Symbol 406 BitmapUsed by:407
Symbol 407 GraphicUses:406Used by:410
Symbol 408 BitmapUsed by:409
Symbol 409 GraphicUses:408Used by:410
Symbol 410 ButtonUses:407 409Used by:416
Symbol 411 BitmapUsed by:412
Symbol 412 GraphicUses:411Used by:415
Symbol 413 BitmapUsed by:414
Symbol 414 GraphicUses:413Used by:415
Symbol 415 ButtonUses:412 414Used by:416
Symbol 416 MovieClip {menupan}Uses:403 404 405 410 415 198 200Used by:417
Symbol 417 MovieClip {Untitled_fla.allall_15}Uses:353 354 355 370 400 416Used by:Timeline

Instance Names

"ttgsplash"Frame 2Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1}
"fw_mc"Symbol 21 MovieClip {fireworks_mc1} Frame 1Symbol 20 MovieClip
"fText"Symbol 50 MovieClip Frame 1Symbol 37 EditableText
"fBar"Symbol 50 MovieClip Frame 1Symbol 39 MovieClip
"playy"Symbol 50 MovieClip Frame 1Symbol 44 Button
"logottg"Symbol 50 MovieClip Frame 1Symbol 47 MovieClip
"adbox"Symbol 50 MovieClip Frame 1Symbol 49 MovieClip
"lvltxt"Symbol 150 MovieClip {Untitled_fla.medal_m_82} Frame 1Symbol 149 EditableText
"bim"Symbol 158 MovieClip {m_btn} Frame 1Symbol 146 MovieClip
"levtxt"Symbol 158 MovieClip {m_btn} Frame 1Symbol 148 EditableText
"med"Symbol 158 MovieClip {m_btn} Frame 1Symbol 150 MovieClip {Untitled_fla.medal_m_82}
"scoretxt"Symbol 158 MovieClip {m_btn} Frame 1Symbol 151 EditableText
"gal"Symbol 158 MovieClip {m_btn} Frame 1Symbol 152 MovieClip
"bon"Symbol 158 MovieClip {m_btn} Frame 1Symbol 154 MovieClip
"pov"Symbol 158 MovieClip {m_btn} Frame 1Symbol 156 MovieClip
"s1"Symbol 206 MovieClip {selectmc} Frame 1Symbol 183 Button
"s2"Symbol 206 MovieClip {selectmc} Frame 1Symbol 187 Button
"st"Symbol 206 MovieClip {selectmc} Frame 1Symbol 188 EditableText
"mmbtn"Symbol 206 MovieClip {selectmc} Frame 1Symbol 193 Button
"walbtn"Symbol 206 MovieClip {selectmc} Frame 1Symbol 198 Button
"ttgbtn"Symbol 206 MovieClip {selectmc} Frame 1Symbol 200 Button
"subbtn"Symbol 206 MovieClip {selectmc} Frame 1Symbol 205 Button
"nametxt"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 271 EditableText
"sn"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 275 Button
"gf"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 277 Button
"stat"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 281 MovieClip {Untitled_fla.smmov1_57}
"sub"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 285 Button
"can"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 287 Button
"scor"Symbol 289 MovieClip {Untitled_fla.pertab_sub_54} Frame 1Symbol 288 EditableText
"sub"Symbol 290 MovieClip {Untitled_fla.par_tabl_ssav_51} Frame 1Symbol 260 Button
"hsb"Symbol 290 MovieClip {Untitled_fla.par_tabl_ssav_51} Frame 1Symbol 265 Button
"ss"Symbol 290 MovieClip {Untitled_fla.par_tabl_ssav_51} Frame 1Symbol 267 MovieClip
"subm"Symbol 290 MovieClip {Untitled_fla.par_tabl_ssav_51} Frame 1Symbol 289 MovieClip {Untitled_fla.pertab_sub_54}
"scoretxt"Symbol 291 MovieClip {Untitled_fla.perehod_tabl_48} Frame 1Symbol 250 EditableText
"nadp"Symbol 291 MovieClip {Untitled_fla.perehod_tabl_48} Frame 1Symbol 255 MovieClip {Untitled_fla.perehod_nadpisi_49}
"sav"Symbol 291 MovieClip {Untitled_fla.perehod_tabl_48} Frame 1Symbol 290 MovieClip {Untitled_fla.par_tabl_ssav_51}
"mov"Symbol 292 MovieClip {perehodmc} Frame 1Symbol 247 MovieClip
"tabl"Symbol 292 MovieClip {perehodmc} Frame 1Symbol 291 MovieClip {Untitled_fla.perehod_tabl_48}
"txt"Symbol 305 MovieClip {downpanmc} Frame 1Symbol 301 EditableText
"loginbtn"Symbol 305 MovieClip {downpanmc} Frame 1Symbol 304 Button
"ok"Symbol 314 MovieClip {oknomc} Frame 1Symbol 311 Button
"cancel"Symbol 314 MovieClip {oknomc} Frame 1Symbol 313 Button
"flag_mc"Symbol 321 MovieClip {Untitled_fla.flag_3} Frame 1Symbol 320 MovieClip
"logo"Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1} Frame 3Symbol 328 MovieClip {Untitled_fla.salut_5}
"logo"Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1} Frame 4Symbol 334 MovieClip {Untitled_fla.logo_6}
"logo"Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1} Frame 16Symbol 328 MovieClip {Untitled_fla.salut_5}
"logo"Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1} Frame 35Symbol 328 MovieClip {Untitled_fla.salut_5}
"logo"Symbol 350 MovieClip {Untitled_fla.splash_fireworks_1} Frame 102Symbol 328 MovieClip {Untitled_fla.salut_5}
"walbtn"Symbol 400 MovieClip {menumc} Frame 1Symbol 198 Button
"ttgbtn"Symbol 400 MovieClip {menumc} Frame 1Symbol 200 Button
"ngb"Symbol 400 MovieClip {menumc} Frame 1Symbol 377 Button
"mgb"Symbol 400 MovieClip {menumc} Frame 1Symbol 383 Button
"addbut"Symbol 400 MovieClip {menumc} Frame 1Symbol 389 Button
"hsb"Symbol 400 MovieClip {menumc} Frame 1Symbol 265 Button
"scoretxt"Symbol 416 MovieClip {menupan} Frame 1Symbol 404 EditableText
"lvltxt"Symbol 416 MovieClip {menupan} Frame 1Symbol 405 EditableText
"mmbtn"Symbol 416 MovieClip {menupan} Frame 1Symbol 410 Button
"resbtn"Symbol 416 MovieClip {menupan} Frame 1Symbol 415 Button
"walbtn"Symbol 416 MovieClip {menupan} Frame 1Symbol 198 Button
"ttgbtn"Symbol 416 MovieClip {menupan} Frame 1Symbol 200 Button

Special Tags

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




http://swfchan.com/27/133332/info.shtml
Created: 14/2 -2019 07:41:52 Last modified: 14/2 -2019 07:41:52 Server time: 05/05 -2024 13:28:31