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

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

front2-back.swf

This is the info page for
Flash #122939

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


Text
00000000000

<p align="left"><font face="Times New Roman" size="20" color="#ffffff" letterSpacing="0.000000" kerning="0">THIS GAME IS CURRENTLY NOT <sbr />AVAILABLE FOR DISTRIBUTION. &nbsp;</font></p><p align="left"></p><p align="left"><font face="Times New Roman" size="20" color="#ffffff" letterSpacing="0.000000" kerning="0">If you would like to play, please visit :</font></p><p align="left"></p><p align="left"><font face="Times New Roman" size="20" color="#ffff00" letterSpacing="0.000000" kerning="0"><a href="http://www.freeworldgroup.com" target = "_blank">www.freeworldgroup.com</a></font></p><p align="left"></p><p align="left"><font face="Times New Roman" size="20" color="#ffffff" letterSpacing="0.000000" kerning="0">For licensing information please contact us <sbr />via the freeworldgroup.com <font color="#ffff00"><a href="http://www.freeworldgroup.com/emailform.html" target = "_blank">contact form</a></font>.</font></p><p align="left"></p><p align="left"><font face="Times New Roman" size="20" color="#ffffff" letterSpacing="0.000000" kerning="0">Thanks!</font></p><p align="left"></p>

Menu

Reset

Walkthrough

<p align="left"><font face="reckoning" size="40" color="#1bcddb" letterSpacing="1.000000" kerning="0"><b>19</b></font></p>

<p align="left"><font face="reckoning" size="40" color="#1bcddb" letterSpacing="1.000000" kerning="0"><b>0</b></font></p>

SCORE:

LEVEL:

pass page

NEXT LEVEL

NEXT LEVEL

success

MAIN MENU

MAIN MENU

PLAY GAME

PLAY GAME

PLAY ZOO ESCAPE 2

PLAY ZOO ESCAPE 2

VIEW HIGHSCORES

VIEW HIGHSCORES

Credits

Credits

Copyright © Freeworldgroup.com

Copyright © Freeworldgroup.com

v.1.2

SELECT LEVEL

<p align="center"></p>

<p align="center"></p>

MAIN MENU

MAIN MENU

SUBMIT SCORE

SUBMIT SCORE

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

SCORE

BACK TO
MAIN MENU ?

YES

YES

NO

NO

You cannot shift
layers from here

“WAD or arrow keys to
move. Try to move now!”

“Press Space to shift from foreground
to background. You cannot shift into a
solid area, it must be empty. Try to
shift layers now!

Space

z

x

“Z and X to rotate screen.
Rotate the screen now!

“Good, your objective is to
make it to the exit.”

QUALITY

LOW

MEDIUM

HIGH

BEST

PAUSE

Level Complete

next level

next level

back to main menu

back to main menu

YOUR SCORE:

name

<p align="center"></p>

<p align="center"></p>

SENDING...

HIGHSCORE
RECEIVED

Download Games

Download Games

YOU WIN

YOUR SCORE:

SUBMIT SCORE

SUBMIT SCORE

REPLAY

REPLAY

MAIN MENU

MAIN MENU

<p align="left"><font face="Urban" size="42" color="#ffffff" letterSpacing="1.000000" kerning="0">9999</font></p>

soundcon

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ mass = 0; center = new b2Vec2(0, 0); I = 0; super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public function GetCoreVertices():Array{ return (m_coreVertices); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local5:Array; var _local6:Number; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2Shape { public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var 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;// = -1 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); _local10 = 0; _local11 = 0; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.lowerBound.x; _local5 = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); _local6 = _arg3.upperBound.x; _local7 = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; _local10 = 0; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; _local7 = 0; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _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.Collision.Shapes.*; import Box2D.Common.Math.*; 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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _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.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); _local8 = [false, false]; _local9 = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); _local9 = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; 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.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ } public function Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; _local5 = _local2.m_body; _local6 = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_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.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; 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.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local4:int; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; _local4 = 0; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:b2ContactSolver; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; _local8 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; _local4 = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ 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
//SimpleBox (engine.mapItem.SimpleBox) package engine.mapItem { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; public class SimpleBox { public function SimpleBox(_arg1:b2World, _arg2:MovieClip, _arg3:int, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number=0, _arg10:Number=0){ var _local11:b2PolygonDef; var _local12:b2BodyDef; var _local13:b2Body; super(); _local11 = new b2PolygonDef(); _local11.SetAsBox((_arg6 / 60), (_arg7 / 60)); _local11.friction = _arg8; _local11.density = _arg10; _local11.restitution = 0; _local11.filter.groupIndex = _arg3; _local12 = new b2BodyDef(); _local12.position.Set((_arg4 / 30), (_arg5 / 30)); _local12.angle = _arg9; _local12.allowSleep = false; if (_arg2 != null){ _local12.userData = _arg2; }; _local13 = _arg1.CreateBody(_local12); if (_local12.userData){ _local12.userData.b2_body = _local13; }; _local13.CreateShape(_local11); _local13.SetMassFromShapes(); } } }//package engine.mapItem
Section 76
//b2_Man (engine.b2_Man) package engine { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import flash.geom.*; import sound.*; import General.*; import flash.utils.*; public class b2_Man { public var deaded:Boolean;// = false private var b2_w:Number; private var world:b2World; private var shadow_ui:MovieClip; private var UI:MovieClip; private var zoom:Number;// = 1 private var jumpCnt:int;// = 0 private var body:b2Body; public var standing_mc:MovieClip; private var GM:GameMain; private var b2_h:Number; public function b2_Man(_arg1:GameMain, _arg2:b2World){ zoom = 1; deaded = false; jumpCnt = 0; super(); world = _arg2; this.UI = _arg1.man_mc; this.shadow_ui = _arg1.map_mc.shadow_mc; this.GM = _arg1; reset(world); } private function checkHitDoor():void{ var _local1:*; _local1 = this.GM.map_mc[("layer" + this.GM.mapMgr.layerInUse)].getChildByName("door"); if (_local1){ if (_local1.hitTestPoint(this.UI.x, this.UI.y, true)){ soundCtr.playSound("win"); soundCtr.stopWalkingSound(); this.UI.gotoAndStop("pass"); this.deaded = true; this.GM.boxEngine.motionTime = true; this.shadow_ui.visible = false; setTimeout(this.GM.boxEngine.passDoor, 1500); }; }; } private function checkStriked():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Vec2; var _local4:b2AABB; var _local5:int; var _local6:Array; var _local7:int; var _local8:int; var _local9:*; var _local10:b2Body; _local1 = (this.UI.x / 30); _local2 = (((this.UI.y - (this.UI.height / 2)) - 2) / 30); _local3 = new b2Vec2(_local1, _local2); _local4 = new b2AABB(); _local4.lowerBound.Set((_local1 - 0.08), (_local2 - 0.08)); _local4.upperBound.Set((_local1 + 0.001), (_local2 + 0.001)); _local5 = 10; _local6 = new Array(); _local7 = world.Query(_local4, _local6, _local5); _local8 = 0; while (_local8 < _local7) { _local9 = _local6[_local8]; if (_local9.GetBody().IsStatic() == false){ _local10 = _local9.GetBody(); if (_local10.m_userData.name.slice(0, 1) == "b"){ return (true); }; }; _local8++; }; return (false); } private function reset(_arg1:b2World):void{ world = _arg1; this.UI.gotoAndStop(1); deaded = false; createMan(); } private function checkIsPushing():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Vec2; var _local4:b2AABB; var _local5:int; var _local6:Array; var _local7:int; var _local8:int; var _local9:*; var _local10:b2Body; _local1 = (this.body.GetPosition().x + (((this.body.GetLinearVelocity().x > 0)) ? 1 : -1 * 0.2)); _local2 = this.body.GetPosition().y; _local3 = new b2Vec2(_local1, _local2); _local4 = new b2AABB(); _local4.lowerBound.Set((_local1 - 0.001), (_local2 - 0.001)); _local4.upperBound.Set((_local1 + 0.001), (_local2 + 0.001)); _local5 = 10; _local6 = new Array(); _local7 = world.Query(_local4, _local6, _local5); _local8 = 0; while (_local8 < _local7) { _local9 = _local6[_local8]; if (_local9.GetBody().IsStatic() == false){ _local10 = _local9.GetBody(); if (_local10.m_userData.name.slice(0, 1) == "b"){ return (true); }; }; _local8++; }; return (false); } public function loop():void{ var _local1:Point; var _local2:*; var _local3:*; var _local4:*; var _local5:b2Vec2; var _local6:b2Body; var _local7:Number; var _local8:String; var _local9:String; var _local10:b2Vec2; var _local11:Boolean; var _local12:int; var _local13:int; var _local14:Boolean; this.UI.x = (body.GetPosition().x * 30); this.UI.y = (body.GetPosition().y * 30); _local1 = new Point(); _local1.x = (GM.man_mc.x - GM.map_mc.x); _local1.y = (GM.man_mc.y - GM.map_mc.y); _local2 = (GM.map_mc[("layer" + GM.mapMgr.layerNoUse)].x + ((_local1.x - GM.map_mc[("layer" + GM.mapMgr.layerInUse)].x) * ((GM.mapMgr.layerInUse == 2)) ? (1 / 0.825) : 0.825)); _local3 = (GM.map_mc[("layer" + GM.mapMgr.layerNoUse)].y + ((_local1.y - GM.map_mc[("layer" + GM.mapMgr.layerInUse)].y) * ((GM.mapMgr.layerInUse == 2)) ? (1 / 0.825) : 0.825)); _local4 = Math.round((GM.map_mc.rotation / 90)); if (_local4 < 0){ _local4 = Math.round(((_local4 % 4) + 4)); } else { _local4 = (_local4 % 4); }; if (_local4 == 1){ this.shadow_ui.x = _local3; this.shadow_ui.y = -(_local2); } else { if (_local4 == 2){ this.shadow_ui.x = -(_local2); this.shadow_ui.y = -(_local3); } else { if (_local4 == 3){ this.shadow_ui.x = -(_local3); this.shadow_ui.y = _local2; } else { this.shadow_ui.x = _local2; this.shadow_ui.y = _local3; }; }; }; this.shadow_ui.rotation = (-(_local4) * 90); _local5 = body.GetLinearVelocity(); _local6 = isLand(); if (_local6 == null){ standing_mc = null; } else { standing_mc = _local6.m_userData; }; _local7 = 0; if (((!((_local6 == null))) && (_local6.m_userData.moving))){ _local12 = ((_local6.m_userData.movingDir + (GM.map_mc.rotation / 90)) % 4); _local13 = ((_local12 < 0)) ? (_local12 + 4) : _local12; _local7 = ((GM.mapMgr.moveVec[_local13][0] * 0.03) * 30); }; if (((Input.isKeyPressed(65)) || (Input.isKeyPressed(37)))){ body.SetLinearVelocity(new b2Vec2((-3 + _local7), _local5.y)); } else { if (((Input.isKeyPressed(68)) || (Input.isKeyPressed(39)))){ body.SetLinearVelocity(new b2Vec2((3 + _local7), _local5.y)); } else { body.SetLinearVelocity(new b2Vec2(_local7, _local5.y)); }; }; if (((Input.isKeyPressed(87)) || (Input.isKeyPressed(38)))){ if (Math.abs(_local5.y) < 0.2){ if (_local6 != null){ body.SetLinearVelocity(new b2Vec2(_local5.x, -6)); jumpCnt = 1; } else { if (jumpCnt == 1){ jumpCnt = 0; body.SetLinearVelocity(new b2Vec2(_local5.x, -4)); this.UI.child.gotoAndPlay(5); }; }; }; }; _local9 = this.UI.currentLabel; _local10 = body.GetLinearVelocity(); if (_local10.x > 0.5){ if (this.UI.scaleX < 0){ this.UI.scaleX = 1; }; } else { if (_local10.x < -0.5){ if (this.UI.scaleX > 0){ this.UI.scaleX = -1; }; }; }; if (_local6 != null){ _local14 = checkIsPushing(); if (Math.abs((_local10.x - _local7)) < 0.2){ if (_local9 == "push"){ this.UI.gotoAndStop("move"); } else { if (_local9 != "move"){ if (this.UI.child.currentFrame < 20){ this.UI.child.gotoAndPlay(20); }; } else { if ((((this.UI.child.currentFrame < 23)) && ((this.UI.child.currentFrame > 3)))){ this.UI.child.gotoAndPlay(24); }; }; }; } else { if (_local14){ if (_local9 != "push"){ this.UI.gotoAndStop("push"); }; } else { if (_local9 == "push"){ this.UI.gotoAndStop("move"); } else { if (_local9 != "move"){ this.UI.child.play(); } else { if (this.UI.child.currentFrame == 1){ this.UI.child.gotoAndPlay(5); }; }; }; }; }; } else { if (_local10.y < 0){ if (_local9 != "drump"){ this.UI.gotoAndStop("drump"); }; } else { if (_local9 != "drump"){ this.UI.gotoAndStop("drump"); } else { if (this.UI.child.currentFrame < 11){ this.UI.child.gotoAndPlay(11); }; }; }; }; if ((((this.UI.currentFrame == 1)) && ((this.UI.child.currentFrame > 2)))){ soundCtr.playSound("walk"); } else { soundCtr.stopWalkingSound(); }; checkHitKey(); _local11 = checkStriked(); if (_local11){ GM.boxEngine.dead(); } else { if (_local6 != null){ checkHitDoor(); }; }; } public function checkDead(_arg1:Number, _arg2:Number, _arg3:int):Boolean{ var _local4:*; var _local5:int; var _local6:int; var _local7:*; var _local8:*; _local4 = this.GM.map_mc[("layer" + _arg3)]; _local5 = _local4.numChildren; _local6 = 0; while (_local6 < _local5) { _local7 = _local4.getChildAt(_local6); if ((((((_local7.name.slice(0, 1) == "b")) || ((_local7.name.slice(0, 1) == "g")))) || ((_local7.name.slice(0, 1) == "p")))){ _local8 = true; if ((((_local7.name.slice(0, 5) == "plat2")) && ((_local7.currentFrame == 1)))){ _local8 = false; }; if (((_local7.hitTestPoint(_arg1, _arg2, true)) && (_local8))){ return (true); }; }; _local6++; }; return (false); } private function checkHitKey():void{ var _local1:MovieClip; var _local2:int; var _local3:*; var _local4:*; var _local5:*; _local1 = this.GM.map_mc[("layer" + this.GM.mapMgr.layerInUse)]; _local2 = 0; while (_local2 < 20) { _local3 = _local1.getChildByName(("key1_" + _local2)); _local4 = _local1.getChildByName(("key2_" + _local2)); _local5 = _local1.getChildByName(("key3_" + _local2)); if (_local4){ if (_local4.hitTestPoint(this.UI.x, this.UI.y, true)){ soundCtr.playSound("key"); _local1.removeChild(_local4); this.GM.boxEngine.addB2_Plat1(_local1.getChildByName(("plat2_" + _local2))); this.GM.mapMgr.automation1(_local1.getChildByName(("plat2_" + _local2))); }; }; if (_local3){ if (_local3.hitTestPoint(this.UI.x, this.UI.y, true)){ soundCtr.playSound("plat"); _local1.removeChild(_local3); this.GM.boxEngine.rotateB2_Plat2(MovieClip(_local1.getChildByName(("plat1_" + _local2))).b2_body); this.GM.mapMgr.automation2(_local1.getChildByName(("plat1_" + _local2))); }; }; if (_local5){ if (_local5.hitTestPoint(this.UI.x, this.UI.y, true)){ soundCtr.playSound("plat"); _local1.removeChild(_local5); MovieClip(_local1.getChildByName(("plat3_" + _local2))).startPos = [MovieClip(_local1.getChildByName(("plat3_" + _local2))).x, MovieClip(_local1.getChildByName(("plat3_" + _local2))).y]; MovieClip(_local1.getChildByName(("plat3_" + _local2))).moving = true; }; }; _local2++; }; } public function isLand():b2Body{ var _local1:Number; var _local2:Number; var _local3:b2Vec2; var _local4:b2AABB; var _local5:int; var _local6:Array; var _local7:int; var _local8:b2Body; _local1 = body.GetPosition().x; _local2 = ((body.GetPosition().y + b2_h) + 0.1); _local3 = new b2Vec2(_local1, _local2); _local4 = new b2AABB(); _local4.lowerBound.Set(((_local1 - b2_w) - 0.02), (_local2 - 0.1)); _local4.upperBound.Set(((_local1 + b2_w) + 0.02), (_local2 + 0.001)); _local5 = 10; _local6 = new Array(); _local7 = world.Query(_local4, _local6, _local5); _local8 = _local6[0].GetBody(); if ((((((_local7 > 1)) && (!((_local8.GetUserData().name.slice(0, 1) == "m"))))) && ((_local8.GetPosition().y > (((this.UI.y + (this.UI.height / 2)) + 2) / 30))))){ return (_local6[0].GetBody()); }; return (null); } private function createMan():void{ var _local1:b2PolygonDef; var _local2:Number; var _local3:b2BodyDef; _local1 = new b2PolygonDef(); _local2 = 1; if (GM.mapMgr.layerInUse == 2){ b2_h = 0.33; b2_w = 0.108; _local2 = 1.46; } else { b2_h = 0.4; b2_w = 0.13; }; _local1.SetAsBox(b2_w, b2_h); _local1.friction = 0; _local1.density = (3 * _local2); _local1.restitution = 0; _local1.filter.groupIndex = 0; _local3 = new b2BodyDef(); _local3.position.Set((this.UI.x / 30), (this.UI.y / 30)); _local3.userData = this.UI; _local3.fixedRotation = true; _local3.allowSleep = false; body = world.CreateBody(_local3); body.CreateShape(_local1); body.SetMassFromShapes(); } } }//package engine
Section 77
//BoxEngine (engine.BoxEngine) package engine { import flash.display.*; import flash.events.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import flash.geom.*; import General.*; import engine.mapItem.*; import flash.utils.*; public class BoxEngine extends MovieClip { public var pauseTime:Number;// = 0 private var space:b2AABB; private var spaceRate:Number;// = 30 private var hitLis:hitMagager; private var timeStep:Number;// = 0.0333333333333333 public var engineStop:Boolean;// = true private var passPage:Boolean;// = false public var world:b2World; public var mapAction:Boolean;// = false public var b2_man:b2_Man; public var motionTime:Boolean;// = true private var input:Input; private var GM:GameMain; private var debugSprite:MovieClip; public function BoxEngine(){ timeStep = (1 / 30); spaceRate = 30; pauseTime = 0; engineStop = true; motionTime = true; mapAction = false; passPage = false; super(); this.addEventListener(Event.ADDED_TO_STAGE, setParent); } public function resetCar(_arg1:MouseEvent):void{ } private function clearWorld():void{ try { world = null; space = null; hitLis = null; b2_man = null; } catch(e:Error) { }; } private function addDebug():void{ var _local1:b2DebugDraw; _local1 = new b2DebugDraw(); _local1.m_sprite = debugSprite; _local1.m_drawScale = 30; _local1.m_fillAlpha = 0.3; _local1.m_lineThickness = 1; _local1.m_drawFlags = b2DebugDraw.e_shapeBit; world.SetDebugDraw(_local1); } public function passDoor():void{ var _local1:*; GM.recordWhenPass(); if (GM.swf.level == 20){ GM.succed(); } else { this.GM.showPopUp("levelComplete"); passPage = true; if (GM.swf.level == 1){ _local1 = GM.effect_mc.getChildByName("instruct"); if (_local1){ GM.effect_mc.removeChild(_local1); }; }; }; GM.map_mc.shadow_mc.visible = false; } public function buildNewLevel(_arg1:Boolean=false):void{ clearWorld(); createWorld(); createMap(_arg1); addDebug(); pauseTime = getTimer(); engineStop = false; mapAction = false; motionTime = false; GM.mapMgr.statu = 0; passPage = false; } public function rotateB2_Plat2(_arg1:b2Body):void{ _arg1.SetXForm(_arg1.GetPosition(), ((Math.PI / 2) + _arg1.GetAngle())); } public function dead():void{ this.GM.man_mc.gotoAndStop("dead"); b2_man.deaded = true; motionTime = true; setTimeout(this.GM.newLevel, 1500); GM.map_mc.shadow_mc.visible = false; } private function setParent(_arg1:Event):void{ this.removeEventListener(Event.ADDED_TO_STAGE, setParent); this.GM = (this.parent as GameMain); debugSprite = new MovieClip(); debugSprite.visible = false; addChild(debugSprite); input = new Input(this.GM); } public function addB2_Plat1(_arg1):void{ var _local2:Point; var _local3:Number; _local2 = new Point(0, 0); _local2 = _arg1.localToGlobal(_local2); _local3 = ((GM.map_mc.rotation * Math.PI) / 180); _arg1.stand = true; new SimpleBox(world, _arg1, 0, _local2.x, _local2.y, _arg1.width, _arg1.height, 0, _local3, 0); } public function loop():void{ var _local1:*; var _local2:*; var _local3:*; var _local4:b2Body; var _local5:Point; if (((!(engineStop)) && (!(motionTime)))){ if (((Input.isKeyPressed(82)) && (((getTimer() - pauseTime) > 300)))){ pauseTime = getTimer(); GM.resetLevel(null); }; if (Input.isKeyPressed(90)){ mapAction = true; GM.mapMgr.rotateLayer(90); } else { if (Input.isKeyPressed(88)){ mapAction = true; GM.mapMgr.rotateLayer(-90); }; }; if (((Input.isKeyPressed(32)) && (((getTimer() - pauseTime) > 300)))){ mapAction = true; GM.mapMgr.swapLayer(); pauseTime = getTimer(); }; if (GM.swf.level == 1){ _local1 = GM.effect_mc.getChildByName("instruct"); if (_local1){ _local2 = _local1.currentFrame; _local3 = _local1.child.currentFrame; if ((((_local2 == 1)) && ((_local3 == 8)))){ if (((((((((((Input.isKeyPressed(65)) || (Input.isKeyPressed(37)))) || (Input.isKeyPressed(68)))) || (Input.isKeyPressed(39)))) || (Input.isKeyPressed(87)))) || (Input.isKeyPressed(38)))){ _local1.child.play(); }; } else { if ((((_local2 == 2)) && ((_local3 == 8)))){ if (Input.isKeyPressed(32)){ _local1.child.play(); }; } else { if ((((_local2 == 3)) && ((_local3 == 8)))){ if (((Input.isKeyPressed(90)) || (Input.isKeyPressed(88)))){ _local1.child.play(); }; }; }; }; }; }; if (!mapAction){ world.Step(timeStep, 30); _local4 = world.m_bodyList; while (_local4) { if ((_local4.m_userData is MovieClip)){ if (_local4.m_userData.movingLen > 0){ _local5 = new Point((_local4.GetPosition().x * 30), (_local4.GetPosition().y * 30)); _local5 = this.GM.map_mc[("layer" + this.GM.mapMgr.layerInUse)].globalToLocal(_local5); _local4.m_userData.x = _local5.x; _local4.m_userData.y = _local5.y; if (_local4.m_userData.name.slice(0, 1) == "b"){ _local4.m_userData.rotation = (_local4.GetAngle() * (180 / Math.PI)); }; }; }; _local4 = _local4.m_next; }; if (!b2_man.deaded){ b2_man.loop(); }; }; } else { if (((((Input.isKeyPressed(32)) && (((getTimer() - pauseTime) > 300)))) && ((passPage == true)))){ pauseTime = getTimer(); GM.passLevel(null); }; }; if (((((Input.isKeyPressed(80)) && (((getTimer() - pauseTime) > 300)))) && (!(motionTime)))){ pauseTime = getTimer(); GM.pauseGame(null); }; } private function createMap(_arg1:Boolean):void{ var _local2:Number; var _local3:int; var _local4:Array; var _local5:int; var _local6:int; var _local7:Point; var _local8:*; _local3 = this.GM.mapMgr.layerInUse; _local4 = MapStore.getMap(GM.swf.level); _local5 = GM.map_mc[("layer" + _local3)].numChildren; if (!_arg1){ }; _local6 = 0; while (_local6 < _local5) { _local8 = GM.map_mc[("layer" + _local3)].getChildAt(_local6); _local7 = new Point(0, 0); _local7 = _local8.localToGlobal(_local7); _local2 = ((GM.map_mc.rotation * Math.PI) / 180); if (_local8.name.slice(0, 1) == "g"){ if (_local8.danger == true){ _local2 = (((GM.map_mc.rotation + _local8.rotation) * Math.PI) / 180); new SimpleBox(world, _local8, 0, _local7.x, _local7.y, _local8.wid, _local8.hei, 0.5, _local2, 0); } else { new SimpleBox(world, _local8, 0, _local7.x, _local7.y, _local8.width, _local8.height, 0.5, _local2, 0); }; } else { if (_local8.name.slice(0, 5) == "plat1"){ new SimpleBox(world, _local8, 0, _local7.x, _local7.y, _local8.width, _local8.height, 0.5, _local2, 0); } else { if ((((_local8.name.slice(0, 5) == "plat2")) && ((_local8.stand == true)))){ new SimpleBox(world, _local8, 0, _local7.x, _local7.y, _local8.width, _local8.height, 0.5, _local2, 0); } else { if (_local8.name.slice(0, 5) == "plat3"){ new SimpleBox(world, _local8, 0, _local7.x, _local7.y, _local8.width, _local8.height, 0.5, _local2, 0); } else { if (_local8.name.slice(0, 1) == "b"){ new SimpleBox(world, _local8, 0, _local7.x, _local7.y, _local8.width, _local8.height, 1, _local2, 3); }; }; }; }; }; _local6++; }; b2_man = new b2_Man(this.GM, world); } private function createWorld():void{ var _local1:b2Vec2; var _local2:Boolean; space = new b2AABB(); space.upperBound.Set(100, 100); space.lowerBound.Set(-100, -100); _local1 = new b2Vec2(0, 10); _local2 = true; world = new b2World(space, _local1, _local2); hitLis = new hitMagager(this, GM.mapMgr); world.SetContactListener(hitLis); } } }//package engine
Section 78
//GameMain (engine.GameMain) package engine { import flash.display.*; import flash.events.*; import sound.*; import so.*; import flash.system.*; import flash.utils.*; public class GameMain extends MovieClip { private var popup_mc:MovieClip; public var effect_mc:MovieClip; public var mapMgr:MapManager; public var map_mc:MovieClip; private var levelScore:Number;// = 0 private var levelLowScore:int;// = 0 public var swf:Shift; public var tool_mc:Tool; public var man_mc:MovieClip; private var domain:ApplicationDomain; private var levelTopScore:int;// = 0 public var manBorn_arr:Array; public var boxEngine:BoxEngine; public function GameMain(){ manBorn_arr = [0, 0]; levelScore = 0; levelLowScore = 0; levelTopScore = 0; super(); this.addEventListener(Event.ADDED_TO_STAGE, init); } private function buildMap():void{ var _local1:*; var _local2:*; var _local3:*; var _local4:*; var _local5:Array; var _local6:int; var _local7:int; var _local8:Array; var _local9:String; var _local10:String; var _local11:MovieClip; var _local12:Class; var _local13:int; var _local14:MovieClip; var _local15:int; var _local16:int; var _local17:*; _local1 = 5; _local2 = 0; _local3 = 0; _local4 = 0; if (swf.customLevel_arr.length > 1){ _local5 = swf.customLevel_arr.concat([]); } else { _local5 = MapStore.getMap(swf.level); }; _local6 = _local5.length; _local7 = 0; while (_local7 < _local6) { _local8 = new Array(); if (swf.customLevel_arr.length > 1){ _local8 = _local5[_local7].split(","); } else { _local8 = _local5[_local7]; }; _local9 = _local8[1].split("_")[0]; _local10 = _local9.slice(0, 1).toLocaleLowerCase(); if (_local9 == "Man"){ manBorn_arr = [Number(_local8[4]), Number(_local8[5])]; } else { if (_local9 == "spine"){ _local11 = new MovieClip(); _local12 = (domain.getDefinition(_local9) as Class); _local15 = int(_local8[7]); _local16 = 0; while (_local16 < _local15) { _local17 = new (_local12); _local17.x = ((_local16 * 18) - (((_local15 - 1) / 2) * 18)); _local11.addChild(_local17); _local16++; }; _local11.num = _local15; _local10 = "g"; _local11.wid = Number(_local8[2]); _local11.hei = Number(_local8[3]); _local11.scaleY = (_local11.hei / 31); _local11.danger = true; } else { _local12 = (domain.getDefinition(_local9) as Class); _local11 = new (_local12); _local11.num = 1; _local11.danger = false; }; _local11.stand = true; _local11.moving = false; if ((((((((_local9 == "plat1")) || ((_local9 == "plat3")))) || ((_local9 == "GroundItem1")))) && ((int(_local8[0]) == 2)))){ }; if (_local9 == "plat2"){ _local11.stand = false; }; if (_local9.slice(0, 4) == "plat"){ _local11.name = ((_local9 + "_") + _local2); _local2++; } else { if (_local9.slice(0, 3) == "key"){ _local11.name = ((_local9 + "_") + _local3); _local3++; } else { if (_local9 == "door"){ _local11.name = "door"; } else { if (_local9 == "Box"){ _local11.name = (_local10 + _local4); _local4++; _local8[9] = 1; } else { _local11.name = (_local10 + _local1); _local1++; }; }; }; }; _local13 = Number(_local8[0]); _local14 = map_mc[("layer" + _local13)]; _local11.width = Number(_local8[2]); if (_local9 != "spine"){ _local11.height = Number(_local8[3]); }; _local11.x = Number(_local8[4]); _local11.y = Number(_local8[5]); _local11.rotation = Number(_local8[6]); _local11.layer = int(_local8[0]); _local11.movingDir = int(_local8[8]); _local11.movingLen = Number(_local8[9]); _local14.addChild(_local11); }; _local7++; }; } private function init(_arg1:Event):void{ swf = (this.parent as Shift); domain = swf.loaderInfo.applicationDomain; this.removeEventListener(Event.ADDED_TO_STAGE, init); swf.played = true; this.addEventListener(Event.ENTER_FRAME, loop); boxEngine = new BoxEngine(); addChild(boxEngine); mapMgr = new MapManager(this); newLevel(); levelScore = MapStore.score_arr[Math.ceil((swf.level / 5))][1]; levelLowScore = MapStore.score_arr[Math.ceil((swf.level / 5))][0]; levelTopScore = levelScore; swf.score = MapStore.getTotalScore(swf.level); this.tool_mc.updateScore((swf.score + (Math.ceil((levelScore / 10)) * 10))); } public function pauseGame(_arg1):void{ var _local2:*; soundCtr.playSound("btn"); boxEngine.engineStop = !(boxEngine.engineStop); boxEngine.pauseTime = getTimer(); if (boxEngine.engineStop){ showPopUp("pause_popup"); } else { _local2 = popup_mc.getChildByName("child"); _local2.gotoAndPlay(14); }; } public function fail():void{ swf.showFail(); } public function passLevel(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); swf.level++; levelScore = MapStore.score_arr[Math.ceil((swf.level / 5))][1]; levelTopScore = levelScore; levelLowScore = MapStore.score_arr[Math.ceil((swf.level / 5))][0]; newLevel(); this.tool_mc.updateTime(1); this.tool_mc.updateScore((swf.score + (Math.ceil((levelScore / 10)) * 10))); } public function unSwapable():void{ var _local1:*; _local1 = new UnSwapable_mc(); _local1.x = 325; _local1.y = 250; this.effect_mc.addChild(_local1); } public function recordWhenPass():void{ var _local1:*; _local1 = (Math.ceil((levelScore / 10)) * 10); if (MapStore.scorePlayed_arr[swf.level] < _local1){ MapStore.scorePlayed_arr[swf.level] = _local1; ShiftSO.setHighScore(_local1, swf.level); }; swf.score = MapStore.getTotalScore((swf.level + 1)); if (swf.level >= MapStore.levelPlayed){ MapStore.levelPlayed = (swf.level + 1); ShiftSO.writeLevel(MapStore.levelPlayed); }; } public function switchSound(_arg1:MouseEvent){ var _local2:*; soundCtr.playSound("btn"); _local2 = soundCtr.setSoundOff(); if (!_local2){ this.tool_mc.soundEnabled_mc.visible = false; } else { this.tool_mc.soundEnabled_mc.visible = true; }; } public function backToMenu(_arg1:MouseEvent):void{ this.removeEventListener(Event.ENTER_FRAME, loop); swf.level = 1; swf.showStartPage(); } public function switchMusic(_arg1:MouseEvent):void{ var _local2:*; soundCtr.playSound("btn"); _local2 = soundCtr.setMusicOff(); if (!_local2){ this.tool_mc.musicEnabled_mc.visible = false; soundCtr.openMusic(); } else { this.tool_mc.musicEnabled_mc.visible = true; soundCtr.closeMusic(); }; } public function succed():void{ var _local1:*; _local1 = (Math.ceil((levelScore / 10)) * 10); if (MapStore.scorePlayed_arr[swf.level] < _local1){ MapStore.scorePlayed_arr[swf.level] = _local1; ShiftSO.setHighScore(_local1, swf.level); }; MapStore.levelPlayed = 20; ShiftSO.writeLevel(20); swf.score = (MapStore.getTotalScore(20) + _local1); showPopUp("Win_popup"); } public function replayLastLevel():void{ swf.score = MapStore.getTotalScore((19 + 1)); levelScore = MapStore.score_arr[Math.ceil((swf.level / 5))][1]; levelTopScore = levelScore; levelLowScore = MapStore.score_arr[Math.ceil((swf.level / 5))][0]; newLevel(); this.tool_mc.updateTime(1); this.tool_mc.updateScore((swf.score + (Math.ceil((levelScore / 10)) * 10))); } public function resetLevel(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); newLevel(); } public function showPopUp(_arg1:String):void{ var _local2:Class; var _local3:MovieClip; _local2 = (domain.getDefinition(_arg1) as Class); _local3 = new (_local2); _local3.name = "child"; popup_mc.addChild(_local3); } private function loop(_arg1:Event):void{ if (!boxEngine.engineStop){ mapMgr.loop(); if (!boxEngine.motionTime){ levelScore = (levelScore - 0.2); if (levelScore < levelLowScore){ levelScore = levelLowScore; }; this.tool_mc.updateTime(((levelScore - levelLowScore) / (levelTopScore - levelLowScore))); this.tool_mc.updateScore((swf.score + (Math.ceil((levelScore / 10)) * 10))); }; }; boxEngine.loop(); } private function showHelpTip():void{ var _local1:*; _local1 = new Instruct(); _local1.x = 287; _local1.y = 138; _local1.name = "instruct"; this.effect_mc.addChild(_local1); } public function newLevel():void{ try { this.removeChild(this.map_mc); this.removeChild(this.man_mc); this.removeChild(this.popup_mc); this.removeChild(this.effect_mc); this.man_mc = null; } catch(e:Error) { }; map_mc = new MapCon(); map_mc.x = 317; map_mc.y = 246; buildMap(); addChild(map_mc); mapMgr.setMapContainer(map_mc); man_mc = new Man_mc(); man_mc.movingLen = 0; man_mc.name = "man_mc"; man_mc.x = (manBorn_arr[0] + map_mc.x); man_mc.y = (manBorn_arr[1] + map_mc.y); addChild(man_mc); effect_mc = new MovieClip(); addChild(effect_mc); popup_mc = new MovieClip(); addChild(popup_mc); this.setChildIndex(boxEngine, (this.numChildren - 1)); boxEngine.buildNewLevel(true); tool_mc.updateLevel(swf.level); swf.setFouces(); if (swf.level == 1){ showHelpTip(); }; } } }//package engine
Section 79
//hitMagager (engine.hitMagager) package engine { import Box2D.Dynamics.*; import Box2D.Collision.*; public class hitMagager extends b2ContactListener { private var body_angle:Number; private var boxEninge:BoxEngine; private var mapMgr:MapManager; public function hitMagager(_arg1:BoxEngine, _arg2:MapManager){ boxEninge = _arg1; mapMgr = _arg2; } override public function Add(_arg1:b2ContactPoint):void{ var _local2:b2Body; var _local3:b2Body; if ((((boxEninge.motionTime == false)) && ((boxEninge.engineStop == false)))){ _local2 = _arg1.shape1.GetBody(); _local3 = _arg1.shape2.GetBody(); if (_local2.GetUserData()){ if (_local2.GetUserData().name == "man_mc"){ if (_local3.GetUserData()){ if (_local3.GetUserData().danger){ boxEninge.dead(); }; }; }; }; if (_local3.GetUserData()){ if (_local3.GetUserData().name == "man_mc"){ if (_local2.GetUserData()){ if (_local2.GetUserData().danger){ boxEninge.dead(); }; }; }; }; }; } override public function Persist(_arg1:b2ContactPoint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:*; var _local5:*; var _local6:*; var _local7:*; var _local8:*; var _local9:Boolean; if ((((boxEninge.motionTime == false)) && ((boxEninge.engineStop == false)))){ _local2 = _arg1.shape1.GetBody(); _local3 = _arg1.shape2.GetBody(); _local4 = _local2.GetUserData(); _local5 = _local3.GetUserData(); if (((_local2.GetUserData()) && (_local3.GetUserData()))){ _local6 = _local4.name.slice(0, 1); _local7 = _local5.name.slice(0, 1); _local9 = false; if ((((_local6 == "m")) || ((_local7 == "m")))){ if (Math.abs(_arg1.separation) > 0.08){ if (((!((_local6 == "g"))) && (!((_local7 == "g"))))){ _local9 = true; boxEninge.dead(); }; }; } else { if (_local6 == "b"){ if ((((Math.abs(_arg1.separation) > 0.1)) && (!(_local9)))){ _local8 = _local5.name.slice(0, 5); if (_local8 == "plat3"){ mapMgr.platMoveBack(_local5, _local4); }; }; } else { if (_local7 == "b"){ if ((((Math.abs(_arg1.separation) > 0.1)) && (!(_local9)))){ _local8 = _local4.name.slice(0, 5); if (_local8 == "plat3"){ mapMgr.platMoveBack(_local4, _local5); }; }; }; }; }; }; }; } } }//package engine
Section 80
//MapManager (engine.MapManager) package engine { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.geom.*; import sound.*; public class MapManager { public var movePlat_arr:Array; public var moveVec:Array; private var colorTrans:ColorTransform; public var layerInUse:int;// = 1 private var endRotate:int; private var map:MovieClip; private var startRotate:int; public var statu:int;// = 0 private var gm:GameMain; public var box_arr:Array; private var rotatePlat:MovieClip; private var rotateDir:int;// = 1 private var man_mc_point:MovieClip; public var layerNoUse:int;// = 2 public function MapManager(_arg1:GameMain){ statu = 0; layerInUse = 1; layerNoUse = 2; rotateDir = 1; moveVec = [[0, -1], [1, 0], [0, 1], [-1, 0]]; super(); gm = _arg1; man_mc_point = new ManPoint(); } public function swapSpecilLayer():void{ var _local1:*; var _local2:*; var _local3:Transform; _local1 = map[("layer" + layerInUse)][("plat_" + 1)]; _local2 = map[("layer" + layerInUse)][("plat_" + 2)]; _local1.danger = true; _local2.danger = false; statu = 0; colorTrans = new ColorTransform(); _local3 = new Transform(_local2); _local3.colorTransform = colorTrans; colorTrans.color = 11403043; _local3.colorTransform = colorTrans; _local3 = new Transform(_local1); _local3.colorTransform = colorTrans; colorTrans.color = 16737843; _local3.colorTransform = colorTrans; } private function boxHit(_arg1:MovieClip, _arg2:MovieClip, _arg3, _arg4):Boolean{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local5 = (_arg1.x - _arg2.x); _local6 = (_arg1.y - _arg2.y); _local7 = ((_arg1.width / 2) + (_arg2.width / 2)); _local8 = ((_arg1.height / 2) + (_arg2.height / 2)); if ((((((_arg3 < 0)) && ((_local5 < 0)))) || ((((_arg3 > 0)) && ((_local5 > 0)))))){ _local7 = (_local7 - 16); }; if ((((((_arg4 < 0)) && ((_local6 < 0)))) || ((((_arg4 > 0)) && ((_local6 > 0)))))){ _local8 = (_local8 - 16); }; if ((((Math.abs(_local5) < _local7)) && ((Math.abs(_local6) < _local8)))){ return (true); }; return (false); } public function setMapContainer(_arg1:MovieClip):void{ this.map = _arg1; map.layer1.visible = true; map.layer2.alpha = 0.3; this.layerInUse = 1; this.layerNoUse = 2; boxCollection(); movingPlatCollection(); } private function boxCollection():void{ var _local1:*; var _local2:int; var _local3:*; box_arr = new Array(); _local1 = gm.map_mc[("layer" + layerInUse)].numChildren; _local2 = 0; while (_local2 < _local1) { _local3 = gm.map_mc[("layer" + layerInUse)].getChildAt(_local2); if (_local3.name.slice(0, 1) == "b"){ box_arr.push(_local3); }; _local2++; }; } public function automation1(_arg1):void{ var _local2:MovieClip; _arg1.gotoAndStop(2); } private function movePlatResolve():void{ var _local1:int; var _local2:int; var _local3:*; var _local4:b2Vec2; var _local5:int; var _local6:int; var _local7:Boolean; var _local8:Boolean; var _local9:*; var _local10:int; var _local11:*; _local1 = movePlat_arr.length; _local2 = 0; while (_local2 < _local1) { _local3 = movePlat_arr[_local2]; if (_local3.moving == true){ _local4 = new b2Vec2(); _local5 = ((_local3.movingDir + (map.rotation / 90)) % 4); _local6 = ((_local5 < 0)) ? (_local5 + 4) : _local5; _local4.x = ((moveVec[_local6][0] * 0.03) + _local3.b2_body.GetPosition().x); _local4.y = ((moveVec[_local6][1] * 0.03) + _local3.b2_body.GetPosition().y); _local3.b2_body.SetXForm(_local4, _local3.b2_body.GetAngle()); _local7 = false; if ((((Math.abs((_local3.x - _local3.startPos[0])) >= _local3.movingLen)) || ((Math.abs((_local3.y - _local3.startPos[1])) >= _local3.movingLen)))){ _local7 = true; _local3.movingDir = ((_local3.movingDir + 2) % 4); _local3.startPos = [_local3.x, _local3.y]; }; if (!_local7){ _local8 = false; _local9 = map[("layer" + layerInUse)].numChildren; _local10 = 0; while (_local10 < _local9) { _local11 = map[("layer" + layerInUse)].getChildAt(_local10); if ((((((_local11.name.slice(0, 1) == "g")) || ((_local11.name.slice(0, 1) == "p")))) && (!((_local11 == _local3))))){ if (_local11.hitTestObject(_local3)){ if (_local3.hiting_mc != _local11){ _local3.hiting_mc = _local11; _local8 = true; break; }; }; }; _local10++; }; if (_local8){ platMoveBack(_local3, null); }; }; }; _local2++; }; } private function movingPlatCollection():void{ var _local1:*; var _local2:int; var _local3:*; movePlat_arr = new Array(); _local1 = gm.map_mc[("layer" + layerInUse)].numChildren; _local2 = 0; while (_local2 < _local1) { _local3 = gm.map_mc[("layer" + layerInUse)].getChildAt(_local2); if (_local3.name.slice(0, 5) == "plat3"){ movePlat_arr.push(_local3); }; _local2++; }; } public function platMoveBack(_arg1, _arg2):void{ var _local3:Boolean; var _local4:int; var _local5:int; var _local6:*; var _local7:*; var _local8:b2Vec2; var _local9:*; var _local10:*; var _local11:*; var _local12:int; var _local13:Boolean; var _local14:Point; var _local15:int; var _local16:*; _local3 = false; _local4 = ((_arg1.movingDir + (map.rotation / 90)) % 4); _local5 = ((_local4 < 0)) ? (_local4 + 4) : _local4; if (_arg2 == null){ _local3 = true; } else { _local6 = (_arg1.b2_body.GetPosition().x - _arg2.b2_body.GetPosition().x); _local7 = (_arg1.b2_body.GetPosition().y - _arg2.b2_body.GetPosition().y); if ((_local6 * moveVec[_local5][0]) < 0){ _local3 = true; }; if ((_local7 * moveVec[_local5][1]) < 0){ _local3 = true; }; }; if (_local3){ _arg1.hiting_mc = _arg2; _local8 = new b2Vec2(); _local9 = _arg1.b2_body.GetPosition().x; _local10 = _arg1.b2_body.GetPosition().y; _local11 = map[("layer" + layerInUse)].numChildren; _local12 = 0; while (_local12 < 10) { _local13 = false; _local8.x = (_local9 - (moveVec[_local5][0] * (0.05 + (0.01 * _local12)))); _local8.y = (_local10 - (moveVec[_local5][1] * (0.05 + (0.01 * _local12)))); _arg1.b2_body.SetXForm(_local8, _arg1.b2_body.GetAngle()); _local14 = new Point((_local8.x * 30), (_local8.y * 30)); _local14 = this.gm.map_mc[("layer" + layerInUse)].globalToLocal(_local14); _arg1.x = _local14.x; _arg1.y = _local14.y; _local15 = 0; while (_local15 < _local11) { _local16 = map[("layer" + layerInUse)].getChildAt(_local15); if ((((((_local16.name.slice(0, 1) == "g")) || ((_local16.name.slice(0, 1) == "p")))) && (!((_local16 == _arg1))))){ if (_local16.hitTestObject(_arg1)){ _local13 = true; break; }; }; _local15++; }; if (!_local13){ break; }; _local12++; }; _arg1.movingDir = ((_arg1.movingDir + 2) % 4); }; } public function loop():void{ var _local1:Point; var _local2:int; var _local3:*; var _local4:int; var _local5:*; var _local6:b2Body; if (statu > 0){ _local1 = new Point(); if (statu == 1){ soundCtr.playSound("layer"); map[("layer" + layerInUse)].alpha = (map[("layer" + layerInUse)].alpha - 0.1); map[("layer" + layerNoUse)].alpha = (map[("layer" + layerNoUse)].alpha + 0.1); if (map[("layer" + layerNoUse)].alpha >= 1){ map[("layer" + layerInUse)].alpha = 0.3; map[("layer" + layerNoUse)].alpha = 1; _local2 = layerInUse; layerInUse = layerNoUse; layerNoUse = _local2; movingPlatCollection(); boxCollection(); gm.boxEngine.buildNewLevel(false); }; } else { if (statu == 2){ startRotate = (startRotate + (rotateDir * 5)); map.rotation = startRotate; if (Math.abs((startRotate - endRotate)) < 8){ map.rotation = (endRotate % 360); _local1.x = 0; _local1.y = 0; _local1 = man_mc_point.localToGlobal(_local1); gm.man_mc.x = _local1.x; gm.man_mc.y = _local1.y; gm.man_mc.visible = true; map.removeChild(man_mc_point); gm.boxEngine.buildNewLevel(false); gm.map_mc.shadow_mc.visible = true; }; } else { if (statu == 3){ startRotate = (startRotate + (rotateDir * 5)); rotatePlat.rotation = startRotate; if (Math.abs((startRotate - endRotate)) < 8){ rotatePlat.rotation = endRotate; gm.boxEngine.mapAction = false; statu = 0; }; }; }; }; } else { _local3 = box_arr.length; _local4 = 0; while (_local4 < _local3) { _local5 = box_arr[_local4]; _local6 = _local5.b2_body; if (_local6.GetLinearVelocity().y < 1){ _local6.SetLinearVelocity(new b2Vec2(_local6.GetLinearVelocity().x, (_local6.GetLinearVelocity().y + 1))); }; _local4++; }; movePlatResolve(); }; } public function rotateLayer(_arg1:int):void{ var _local2:Point; if (statu == 0){ if (gm.boxEngine.b2_man.isLand()){ gm.map_mc.shadow_mc.visible = false; soundCtr.playSound("rotate"); endRotate = (map.rotation + _arg1); startRotate = map.rotation; rotateDir = ((_arg1 == 90)) ? 1 : -1; _local2 = new Point(gm.man_mc.x, gm.man_mc.y); _local2 = map.globalToLocal(_local2); man_mc_point.x = _local2.x; man_mc_point.y = _local2.y; man_mc_point.scaleX = (man_mc_point.scaleY = ((layerInUse == 1)) ? 1 : 0.825); gm.man_mc.visible = false; map.addChild(man_mc_point); statu = 2; } else { gm.boxEngine.mapAction = false; }; }; } public function automation2(_arg1):void{ gm.boxEngine.mapAction = true; endRotate = (_arg1.rotation + 90); startRotate = _arg1.rotation; rotateDir = 1; rotatePlat = _arg1; statu = 3; } public function swapLayer():void{ var _local1:Point; var _local2:Point; var _local3:Boolean; if (statu == 0){ _local1 = new Point(); _local1.x = (gm.man_mc.x - gm.map_mc.x); _local1.y = (gm.man_mc.y - gm.map_mc.y); _local2 = new Point(); _local2.x = ((gm.map_mc.x + gm.map_mc[("layer" + layerNoUse)].x) + ((_local1.x - gm.map_mc[("layer" + layerInUse)].x) * ((layerInUse == 2)) ? (1 / 0.825) : 0.825)); _local2.y = ((gm.map_mc.y + gm.map_mc[("layer" + layerNoUse)].y) + ((_local1.y - gm.map_mc[("layer" + layerInUse)].y) * ((layerInUse == 2)) ? (1 / 0.825) : 0.825)); _local3 = gm.boxEngine.b2_man.checkDead(_local2.x, _local2.y, layerNoUse); if (!_local3){ gm.man_mc.scaleX = (gm.man_mc.scaleY = ((layerNoUse == 1)) ? 1 : 0.825); gm.man_mc.x = _local2.x; gm.man_mc.y = _local2.y; statu = 1; } else { gm.unSwapable(); gm.boxEngine.mapAction = false; }; }; } } }//package engine
Section 81
//MapStore (engine.MapStore) package engine { public class MapStore { public static var score:int = 0; public static var quickRun:Boolean = false; public static var totalLevel:uint = 20; public static var scorePlayed_arr = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; public static var score_arr:Array = [[], [100, 500], [500, 1000], [1000, 2000], [2000, 4000]]; public static var levelPlayed:int = 1; public static function getMap10():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_0", 120, 20, -100, 0, 0, 1, 0, 0], [1, "plat1_0", 79, 20, 0, 0, 0, 1, 0, 0], [1, "key1_0", 23, 23, -98, -23, 0, 1, 0, 0], [1, "GroundItem_3", 120, 20, 100, 0, 0, 1, 0, 0], [1, "GroundItem_5", 20, 120, 0, -100, 0, 1, 0, 0], [1, "Man_6", 11.2, 24.6, -143.7, -22.7, 0, 1, 0, 0], [1, "Box_8", 20, 20, -15.7, 150.3, 0, 1, 0, 0], [1, "Box_9", 20, 20, 5.2, 150.3, 0, 1, 0, 0], [1, "plat3_2", 50, 17, 41, 149, 0, 1, 1, 500], [1, "key3_2", 23.1, 23, 139.3, 149.3, 0, 1, 0, 0], [1, "plat3_3", 50, 17, -52, 150, 0, 1, 1, 500], [1, "key3_3", 23.1, 23, 137.3, -24.7, 0, 1, 0, 0], [1, "GroundItem_12", 84, 30, -120, 145, 0, 1, 0, 0], [1, "door_13", 19.5, 27, -148.7, 116.3, 0, 1, 0, 0], [1, "GroundItem_14", 150, 20, -85, 77, 0, 1, 0, 0], [1, "GroundItem_16", 20, 50, -20, 113.5, 0, 1, 0, 0], [1, "plat1_5", 90, 20, 26, 55, 0, 1, 0, 0], [1, "key1_5", 23.1, 23, -119.4, 49.3, 0, 1, 0, 0], [2, "GroundItem_7", 260, 260, 0, 0, 0, 1, 0, 0]]; return (_local1); } public static function getMap11():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Man_1", 11, 25, 103, 148, 0, 1, 0, 0], [1, "GroundItem_2", 115, 20, -104, 106, 0, 1, 0, 0], [1, "plat1_1", 110, 20, 37, 106, 0, 1, 0, 0], [1, "key1_1", 23.1, 23, 137.6, 149.3, 0, 1, 0, 0], [1, "GroundItem_4", 65, 20, 125.5, 106, 0, 1, 0, 0], [1, "GroundItem_5", 95, 20, 0, 40, 0, 1, 0, 0], [1, "plat1_2", 112, 20, -104, 40, 0, 1, 0, 0], [1, "key1_2", 23, 23, -77, 80, 0, 1, 0, 0], [1, "plat1_3", 110, 20, 103, 40, 0, 1, 0, 0], [1, "key1_3", 23, 23, 125, 84, 0, 1, 0, 0], [1, "GroundItem_8", 20, 32, 103, -31.5, 0, 1, 0, 0], [1, "plat1_4", 110, 20, 103, -104, 90, 1, 0, 0], [1, "key1_4", 23, 23, 125, 64, 0, 1, 0, 0], [1, "GroundItem_10", 60, 20, 17, -104, 0, 1, 0, 0], [1, "plat1_5", 110, 20, -24, -59, 90, 1, 0, 0], [1, "key1_5", 23.1, 23, 44.6, -81.7, 0, 1, 0, 0], [1, "GroundItem_12", 60, 20, 62, -59, 0, 1, 0, 0], [1, "GroundItem_13", 20, 35, -24, 14, 0, 1, 0, 0], [1, "plat1_6", 10, 40, -125, 139, 0, 1, 0, 0], [1, "key1_6", 23, 23, -144, -148, 0, 1, 0, 0], [1, "door_15", 20, 27, -150, 151, 90, 1, 0, 0], [1, "GroundItem_16", 126, 20, -98, -104, 0, 1, 0, 0], [1, "plat1_7", 10, 40, -92, 139, 0, 1, 0, 0], [1, "key1_7", 23.1, 23, 135.6, -138.7, 0, 1, 0, 0], [2, "GroundItem_18", 260, 260, 0, 0, 0, 1, 0, 0]]; return (_local1); } public static function getMap12():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "spine_4", 126, 31, -100, -143, 180, 7, 0, 0], [1, "spine_5", 126, 31, 25, -143, 180, 7, 0, 0], [1, "spine_7", 72, 31, 123, -143, 180, 4, 0, 0], [1, "GroundItem_8", 243, 10, -40, -89, 0, 1, 0, 0], [1, "Man_9", 11.2, 24.6, -151.7, -109.7, 0, 1, 0, 0], [1, "plat1_4", 76, 10, 120, -89, 0, 1, 0, 0], [1, "key1_4", 23, 23, 147, -112, 0, 1, 0, 0], [1, "plat1_5", 76, 10, -124, -41, 0, 1, 0, 0], [1, "key1_5", 23.1, 23, -150.4, -60.7, 0, 1, 0, 0], [1, "GroundItem_13", 125, 10, -22.5, -41, 0, 1, 0, 0], [1, "GroundItem_14", 10, 92, 120, -4.5, 0, 1, 0, 0], [1, "plat1_7", 76, 10, 120, 80, 90, 1, 0, 0], [1, "key1_7", 23, 23, 144, 18, 0, 1, 0, 0], [1, "GroundItem_16", 200, 86, -62, 118, 0, 1, 0, 0], [1, "GroundItem_18", 10, 42, 120, 140, 0, 1, 0, 0], [1, "GroundItem_19", 10, 76, -124, 37, 0, 1, 0, 0], [1, "plat3_8", 42, 10, 60, 80, 0, 1, 0, 90], [1, "key3_8", 23, 23, 144, 147, 0, 1, 0, 0], [1, "GroundItem_34", 10, 36, -55, -18, 0, 1, 0, 0], [1, "GroundItem_35", 70, 10, -85, 4, 0, 1, 0, 0], [1, "plat1_9", 72, 10, 76, 124, 0, 1, 0, 0], [1, "key1_9", 23.1, 23, -149.4, 55.3, 0, 1, 0, 0], [2, "GroundItem_22", 90, 30, 86, 12, 0, 1, 0, 0], [2, "GroundItem_26", 140, 30, -61, 12, 0, 1, 0, 0], [2, "GroundItem_27", 262, 30, 0, 71.5, 0, 1, 0, 0], [2, "GroundItem_28", 232, 29.5, 15, 41.8, 0, 1, 0, 0], [2, "GroundItem_29", 262, 30, 0, -118, 0, 1, 0, 0], [2, "GroundItem_30", 154, 30, 54, -88, 0, 1, 0, 0], [2, "GroundItem_31", 70, 30, -96, -88, 0, 1, 0, 0], [2, "GroundItem_32", 262, 40, 0, -53, 0, 1, 0, 0], [2, "GroundItem_42", 262, 17, 0, 95, 0, 1, 0, 0], [2, "plat1_10", 25, 5, -78, 116, 90, 1, 0, 0], [2, "key1_10", 23.1, 23, -117.2, 43.2, 0, 1, 0, 0], [2, "plat1_11", 25, 5, -44, 116, 90, 1, 0, 0], [2, "key1_11", 23.1, 23, -41.1, -87.8, 0, 1, 0, 0], [2, "plat1_12", 25, 5, -10, 116, 90, 1, 0, 0], [2, "key1_12", 23.1, 23, 22.9, 14.2, 0, 1, 0, 0], [2, "GroundItem_47", 190, 30, 36, -18, 0, 1, 0, 0], [2, "plat1_13", 25, 5, 19, 116, 90, 1, 0, 0], [2, "key1_13", 23.1, 23, -115.1, -17.8, 0, 1, 0, 0], [2, "GroundItem_49", 70, 27, 96, 117, 0, 1, 0, 0], [2, "door_50", 19.5, 27, -118.5, 118.2, 0, 1, 0, 0]]; return (_local1); } public static function getMap13():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_0", 80, 80, -84, -64, 0, 1, 0, 0], [1, "Man_1", 11.2, 24.6, -117.7, -115.7, 0, 1, 0, 0], [1, "Box_2", 20, 20, -67, -114, 0, 1, 0, 0], [1, "spine_3", 126, 31, -98.8, 145.3, 0, 7, 0, 0], [1, "GroundItem_4", 75, 80, 22, -64, 0, 1, 0, 0], [1, "spine_5", 126, 31, 26, 145, 0, 7, 0, 0], [1, "spine_7", 72, 31, 123, 145, 0, 4, 0, 0], [1, "Box_8", 20, 20, 26.2, -114.7, 0, 1, 0, 0], [1, "Box_9", 20, 20, 98, -114, 0, 1, 0, 0], [1, "GroundItem_10", 72, 80, 124, -64, 0, 1, 0, 0], [1, "GroundItem_11", 10, 80, -156, -64, 0, 1, 0, 0], [2, "GroundItem_13", 20, 20, 57, 98, 0, 1, 0, 0], [2, "GroundItem_14", 20, 20, -31, 98, 0, 1, 0, 0], [2, "GroundItem_15", 24, 20, -119, 98, 0, 1, 0, 0], [2, "GroundItem_16", 20, 30, 77, 74, 0, 1, 0, 0], [2, "GroundItem_17", 20, 30, 39, 74, 0, 1, 0, 0], [2, "GroundItem_18", 20, 30, -11, 74, 0, 1, 0, 0], [2, "GroundItem_19", 24, 20, -119, 50, 0, 1, 0, 0], [2, "GroundItem_20", 20, 30, -50, 74, 0, 1, 0, 0], [2, "GroundItem_21", 20, 30, -97, 74, 0, 1, 0, 0], [2, "GroundItem_22", 20, 20, -31, 50, 0, 1, 0, 0], [2, "GroundItem_23", 20, 20, 57, 50, 0, 1, 0, 0], [2, "GroundItem_24", 20, 20, 77, 117, 0, 1, 0, 0], [2, "GroundItem_25", 42, 20, 107, 98, 0, 1, 0, 0], [2, "GroundItem_32", 265, 58, 0, -106, 0, 1, 0, 0], [2, "plat1_5", 45, 20, -86, -53, 90, 1, 0, 0], [2, "key1_5", 23.1, 23, -121.2, 75.2, 0, 1, 0, 0], [2, "plat1_7", 45, 30, -29, -53, 90, 1, 0, 0], [2, "key1_7", 23, 23, -30, 74, 0, 1, 0, 0], [2, "plat1_8", 45, 30, 66, -53, 90, 1, 0, 0], [2, "key1_8", 23.1, 23, 57.9, 73.2, 0, 1, 0, 0], [2, "door_37", 19.5, 27, 114.5, -48.8, 0, 1, 0, 0], [2, "GroundItem_38", 265, 30, 1, -14, 0, 1, 0, 0], [2, "plat1_9", 45, 20, 15, -53, 90, 1, 0, 0], [2, "key1_9", 23.1, 23, 75.9, 97.2, 0, 1, 0, 0]]; return (_local1); } public static function getMap14():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Man_1", 11, 25, -155, 144, 0, 1, 0, 0], [1, "door_2", 20, 27, 23, 60, 0, 1, 0, 0], [1, "Box_3", 20, 20, -8, 131, 0, 1, 0, 0], [1, "Box_4", 20, 20, -8.7, 151.3, 0, 1, 0, 0], [1, "Box_5", 20, 20, -29.7, 131.3, 0, 1, 0, 0], [1, "Box_6", 20, 20, -29.7, 151.3, 0, 1, 0, 0], [1, "Box_7", 20, 20, 88.3, 150.3, 0, 1, 0, 0], [1, "Box_8", 20, 20, 111.3, 149.3, 0, 1, 0, 0], [1, "Box_9", 20, 20, 133.2, 149.3, 0, 1, 0, 0], [1, "Box_10", 20, 20, 66.2, 150.3, 0, 1, 0, 0], [1, "GroundItem_11", 20, 20, 24, 151, 0, 1, 0, 0], [1, "GroundItem_12", 20, 20, -14, -152, 0, 1, 0, 0], [1, "GroundItem_13", 65, 10, -118, 128, 90, 1, 0, 0], [1, "plat3_0", 47, 10, -136, 90, 0, 1, 0, 300], [1, "key3_0", 23, 23, -137, 108, 0, 1, 0, 0], [1, "GroundItem_15", 22, 10, -134, 124, 0, 1, 0, 0], [1, "Box_16", 20, 20, 132.3, 127.3, 0, 1, 0, 0], [1, "GroundItem_17", 20, 20, -77, 151, 0, 1, 0, 0]]; return (_local1); } public static function getMap15():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_15", 30, 30, 31, 0, 0, 1, 0, 0], [1, "GroundItem_16", 30, 30, -31, 0, 0, 1, 0, 0], [1, "GroundItem_17", 30, 30, 0, 31, 0, 1, 0, 0], [1, "GroundItem_18", 30, 30, 0, -31, 0, 1, 0, 0], [1, "GroundItem_19", 30, 30, -31, 31, 0, 1, 0, 0], [1, "GroundItem_20", 30, 30, -31, -31, 0, 1, 0, 0], [1, "GroundItem_21", 30, 30, 31, 31, 0, 1, 0, 0], [1, "GroundItem_22", 30, 30, 31, -31, 0, 1, 0, 0], [1, "Man_23", 11.2, 24.6, 0.3, 4.3, 0, 1, 0, 0], [1, "GroundItem_34", 30, 30, 62, 62, 0, 1, 0, 0], [1, "GroundItem_35", 30, 30, 62, -62, 0, 1, 0, 0], [1, "GroundItem_36", 30, 30, -62, -62, 0, 1, 0, 0], [1, "GroundItem_37", 30, 30, -62, 62, 0, 1, 0, 0], [1, "GroundItem_44", 30, 30, 93, -31, 0, 1, 0, 0], [1, "GroundItem_45", 30, 30, 93, 31, 0, 1, 0, 0], [1, "GroundItem_46", 30, 30, 31, -93, 0, 1, 0, 0], [1, "GroundItem_48", 30, 30, -31, -92, 0, 1, 0, 0], [1, "GroundItem_50", 30, 30, -93, -31, 0, 1, 0, 0], [1, "GroundItem_52", 30, 30, -93, 31, 0, 1, 0, 0], [1, "GroundItem_54", 30, 30, -31, 93, 0, 1, 0, 0], [1, "GroundItem_56", 30, 30, 31, 93, 0, 1, 0, 0], [1, "plat3_9", 30, 30, 0, -124, 0, 1, 0, 0], [1, "key3_9", 23.1, 23, -0.7, -93.7, 0, 1, 0, 0], [1, "plat3_10", 30, 30, 124, 0, 0, 1, 0, 0], [1, "key3_10", 23.1, 23, 92.3, 3.3, 0, 1, 0, 0], [1, "plat3_11", 30, 30, 0, 124, 0, 1, 0, 0], [1, "key3_11", 23.1, 23, 0.3, 95.3, 0, 1, 0, 0], [1, "plat3_12", 30, 30, -124, 0, 0, 1, 0, 0], [1, "key3_12", 23.1, 23, -91.7, 1.3, 0, 1, 0, 0], [2, "GroundItem_26", 30, 30, -31, -31, 0, 1, 0, 0], [2, "GroundItem_27", 30, 30, 31, 31, 0, 1, 0, 0], [2, "GroundItem_28", 30, 30, -31, 31, 0, 1, 0, 0], [2, "GroundItem_29", 30, 30, 31, -32, 0, 1, 0, 0], [2, "GroundItem_30", 30, 30, 0, -62, 0, 1, 0, 0], [2, "GroundItem_31", 30, 30, 0, 62, 0, 1, 0, 0], [2, "GroundItem_32", 30, 30, 62, 0, 0, 1, 0, 0], [2, "GroundItem_33", 30, 30, -62, 0, 0, 1, 0, 0], [2, "GroundItem_62", 30, 30, -62, 93, 0, 1, 0, 0], [2, "GroundItem_66", 30, 30, -93, 31, 0, 1, 0, 0], [2, "GroundItem_67", 30, 30, -93, 62, 0, 1, 0, 0], [2, "GroundItem_68", 30, 30, -93, 93, 0, 1, 0, 0], [2, "GroundItem_69", 30, 30, -31, 93, 0, 1, 0, 0], [2, "GroundItem_70", 30, 30, 0, 93, 0, 1, 0, 0], [2, "GroundItem_71", 30, 30, 31, 93, 0, 1, 0, 0], [2, "GroundItem_72", 30, 30, 93, 93, 0, 1, 0, 0], [2, "GroundItem_73", 30, 30, 62, 93, 0, 1, 0, 0], [2, "GroundItem_74", 30, 30, 93, -62, 0, 1, 0, 0], [2, "GroundItem_75", 30, 30, 93, -93, 0, 1, 0, 0], [2, "GroundItem_76", 30, 30, 31, -93, 0, 1, 0, 0], [2, "GroundItem_77", 30, 30, -93, -62, 0, 1, 0, 0], [2, "GroundItem_78", 30, 30, -93, -31, 0, 1, 0, 0], [2, "GroundItem_79", 30, 30, -93, 0, 0, 1, 0, 0], [2, "GroundItem_80", 30, 30, 62, -93, 0, 1, 0, 0], [2, "GroundItem_81", 30, 30, 93, 62, 0, 1, 0, 0], [2, "GroundItem_82", 30, 30, 93, 31, 0, 1, 0, 0], [2, "GroundItem_83", 30, 30, 93, 0, 0, 1, 0, 0], [2, "GroundItem_84", 30, 30, 93, -31, 0, 1, 0, 0], [2, "GroundItem_85", 30, 30, 0, -93, 0, 1, 0, 0], [2, "GroundItem_86", 30, 30, -31, -93, 0, 1, 0, 0], [2, "GroundItem_87", 30, 30, -62, -93, 0, 1, 0, 0], [2, "GroundItem_88", 30, 30, -93, -93, 0, 1, 0, 0], [2, "door_97", 20, 27, 118, -124, -90, 1, 0, 0], [2, "door_98", 19.5, 27, 122.5, 116.2, 0, 1, 0, 0], [2, "door_99", 20, 27, -119, 122, 90, 1, 0, 0], [2, "door_100", 20, 27, -122, -118, 180, 1, 0, 0]]; return (_local1); } public static function getMap1():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Man_0", 11.2, 24.6, -114.7, 147.3, 0, 1, 0, 0], [1, "GroundItem_3", 30, 30, -78, 146, 0, 1, 0, 0], [1, "GroundItem_4", 90, 50, -18, 136, 0, 1, 0, 0], [2, "GroundItem_3", 30, 30, 101.5, -56.8, 0, 1, 0, 0], [2, "door_4", 20, 27, 75, -57, -90, 1, 0, 0], [2, "GroundItem_6", 90, 80, -13, 91, 0, 1, 0, 0], [2, "GroundItem_7", 50, 60, -83, 101, 0, 1, 0, 0], [2, "GroundItem_8", 40, 60, 52, 100, 0, 1, 0, 0]]; return (_local1); } public static function getMap2():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Man_3", 11.2, 24.6, -151.7, 147.3, 0, 1, 0, 0], [1, "GroundItem_5", 30, 30, -146.7, 117.3, 0, 1, 0, 0], [1, "GroundItem_6", 30, 30, -117.7, 147.3, 0, 1, 0, 0], [1, "GroundItem_7", 30, 30, 145.3, 115.3, 0, 1, 0, 0], [1, "GroundItem_8", 30, 30, 116.3, 144.3, 0, 1, 0, 0], [1, "door_9", 19.5, 27, 146.3, 148.3, 0, 1, 0, 0], [2, "GroundItem_10", 30, 260, -1, 0, 0, 1, 0, 0]]; return (_local1); } public static function getMap3():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_9", 30, 300, -149, 11, 0, 1, 0, 0], [1, "GroundItem_10", 250, 200, 35, 64, 0, 1, 0, 0], [1, "plat2_0", 35, 23, -113, 54, 0, 1, 0, 0], [1, "key2_0", 26, 24, 144.3, -50.7, 0, 1, 0, 0], [1, "GroundItem_13", 85, 40, 115, -133, 0, 1, 0, 0], [1, "plat1_1", 76, 22, 84, -74, 90, 1, 0, 0], [1, "key1_1", 23.1, 23, 18.6, -45.7, 0, 1, 0, 0], [1, "spine_18", 36, 31, -113.7, 147.3, 0, 2, 0, 0], [2, "GroundItem_1", 201, 70, -31.5, 97, 0, 1, 0, 0], [2, "GroundItem_3", 60, 20, -102, 52, 0, 1, 0, 0], [2, "Box_4", 20, 20, -90.5, 33.2, 0, 1, 0, 0], [2, "GroundItem_6", 118, 20, 10, 52, 0, 1, 0, 0], [2, "GroundItem_7", 200, 140, -32, -63, 0, 1, 0, 0], [2, "door_8", 20, 27, 82, -69, 90, 1, 0, 0], [2, "GroundItem_17", 30, 134, 117, 65, 0, 1, 0, 0], [2, "GroundItem_18", 90, 33, 85.5, 87, 90, 1, 0, 0], [2, "plat2_2", 30, 10, 63, 24, 90, 1, 0, 0], [2, "key2_2", 26, 24, 88.5, -26.8, 0, 1, 0, 0], [2, "Man_20", 11, 25, -144, -152, 0, 1, 0, 0], [2, "spine_19", 126, 31, 114, -67, -90, 7, 0, 0]]; return (_local1); } public static function getMap5():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_0", 320, 180, 0, -71, 0, 1, 0, 0], [1, "GroundItem_1", 320, 110, 0, 105, 0, 1, 0, 0], [1, "Man_2", 11.2, 24.6, -150.7, 34.3, 0, 1, 0, 0], [2, "GroundItem_3", 20, 260, -90, 0, 0, 1, 0, 0], [2, "GroundItem_4", 20, 260, -50, 0, 0, 1, 0, 0], [2, "GroundItem_5", 20, 260, 30, 0, 0, 1, 0, 0], [2, "GroundItem_6", 20, 260, 70, 0, 0, 1, 0, 0], [2, "GroundItem_7", 20, 260, -10, 0, 0, 1, 0, 0], [2, "GroundItem_8", 20, 260, 107, 0, 0, 1, 0, 0], [2, "spine_9", 18, 31, -69.5, 117.2, 0, 1, 0, 0], [2, "spine_10", 18, 31, -30.5, 117.2, 0, 1, 0, 0], [2, "spine_11", 18, 31, 9.5, 116.2, 0, 1, 0, 0], [2, "spine_13", 18, 31, 87.5, 117.2, 0, 1, 0, 0], [2, "spine_14", 18, 31, 124.5, 115.2, 0, 1, 0, 0], [2, "spine_15", 18, 31, -70, -116, 180, 1, 0, 0], [2, "spine_16", 18, 31, -115.5, 116.2, 0, 1, 0, 0], [2, "spine_17", 18, 31, -116, -116, 180, 1, 0, 0], [2, "spine_18", 18, 31, -28, -115, 180, 1, 0, 0], [2, "spine_19", 18, 31, 9, -115, 180, 1, 0, 0], [2, "spine_20", 18, 31, 124, -115, 180, 1, 0, 0], [2, "spine_21", 18, 31, 89, -114, 180, 1, 0, 0], [2, "spine_22", 18, 31, 48.5, 117.2, 0, 1, 0, 0], [2, "door_23", 20, 27, 51, -117, 180, 1, 0, 0]]; return (_local1); } public static function getMap6():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Man_0", 11.2, 24.6, -114.7, 147.3, 0, 1, 0, 0], [1, "GroundItem_6", 30, 30, 136.3, 146.3, 0, 1, 0, 0], [1, "GroundItem_7", 30, 30, 97.3, -41.7, 0, 1, 0, 0], [1, "GroundItem_8", 30, 30, -101.7, -3.7, 0, 1, 0, 0], [2, "GroundItem_3", 30, 30, -8, -9, 0, 1, 0, 0], [2, "door_4", 20, 27, -7, -35, 0, 1, 0, 0], [2, "GroundItem_9", 30, 30, -88.5, -10.8, 0, 1, 0, 0], [2, "GroundItem_10", 30, 30, -50.5, 91.2, 0, 1, 0, 0], [2, "GroundItem_11", 30, 30, 64, 54, 0, 1, 0, 0], [2, "GroundItem_12", 30, 30, 29.5, -104.8, 0, 1, 0, 0], [2, "GroundItem_13", 30, 30, -48.5, -72.8, 0, 1, 0, 0], [2, "spine_11", 18, 40, -90, -45, 0, 1, 0, 0], [2, "spine_12", 18, 40, -90, 24, 180, 1, 0, 0], [2, "spine_13", 18, 40, 64, -103, 90, 1, 0, 0], [2, "spine_14", 18, 40, -5, -104, -90, 1, 0, 0], [2, "spine_15", 18, 40, -16, 90, 90, 1, 0, 0], [2, "spine_16", 18, 40, -85, 90, -90, 1, 0, 0]]; return (_local1); } public static function getMap7():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_2", 30, 30, 0, 0, 0, 1, 0, 0], [1, "door_3", 20, 27, 0, -27, 0, 1, 0, 0], [1, "Man_4", 11.2, 24.6, -153.7, 146.3, 0, 1, 0, 0], [1, "Box_5", 20, 20, -117, 150, 0, 1, 0, 0], [1, "Box_6", 20, 20, 108.3, 149.3, 0, 1, 0, 0], [1, "Box_8", 20, 20, -1, -24, 0, 1, 0, 0]]; return (_local1); } public static function getMap9():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_40", 30, 290, 0, -15, 0, 1, 0, 0], [1, "GroundItem_44", 144, 30, 87, 0, 0, 1, 0, 0], [1, "plat3_2", 30, 28, 0, 145, 0, 1, 3, 900], [1, "key3_2", 23, 23, 136, -26, 0, 1, 0, 0], [2, "Man_32", 11, 25, -150, 147, 0, 1, 0, 0], [2, "GroundItem_42", 260, 30, 0, 0, 0, 1, 0, 0], [2, "GroundItem_45", 30, 116, 0, 73, 0, 1, 0, 0], [2, "door_50", 20, 27, 108, 119, 0, 1, 0, 0]]; return (_local1); } public static function getMap18():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Box_4", 20, 20, -99, 13, 0, 1, 0, 0], [1, "spine_5", 126, 31, -71.7, 38.3, 0, 7, 0, 0], [1, "spine_6", 126, 31, 54, 38, 0, 7, 0, 0], [1, "spine_7", 126, 31, -71, -50, 180, 7, 0, 0], [1, "spine_9", 90, 31, 76, -49, 180, 5, 0, 0], [1, "GroundItem_10", 126, 96, -70, -112, 0, 1, 0, 0], [1, "GroundItem_11", 90, 96, 77, -112, 0, 1, 0, 0], [1, "GroundItem_12", 0x0100, 106, -7, 106, 0, 1, 0, 0], [1, "plat2_4", 77, 20, -92, 13, 0, 1, 0, 0], [1, "key2_4", 26, 24, 140.3, 142.3, 0, 1, 0, 0], [1, "GroundItem_14", 38, 80, 140, 93, 0, 1, 0, 0], [1, "Man_15", 11.2, 24.6, -149.7, -12.7, 0, 1, 0, 0], [1, "GroundItem_16", 30, 20, -147, 13, 0, 1, 0, 0], [1, "spine_17", 90, 31, 143, -8, -90, 5, 0, 0], [1, "door_18", 20, 27, 22, -104, 0, 1, 0, 0], [1, "plat2_7", 40, 20, -13, 13, 0, 1, 0, 0], [1, "key2_7", 26, 24, 142.3, -146.7, 0, 1, 0, 0], [1, "GroundItem_31", 38, 70, 140, -100, 0, 1, 0, 0], [1, "GroundItem_34", 30, 70, -148, -99, 0, 1, 0, 0], [1, "plat3_9", 10, 5, 26, -83, 0, 1, 2, 130], [1, "key3_9", 23, 23, -150, -147, 0, 1, 0, 0], [1, "Box_40", 20, 20, -149.7, 149.3, 0, 1, 0, 0], [1, "spine_38", 18, 31, 298.2, 1.3, 0, 1, 0, 0], [1, "spine_39", 18, 31, 83.3, -74.7, 0, 1, 0, 0], [1, "spine_40", 18, 31, 346.2, -63.7, 0, 1, 0, 0], [1, "spine_41", 34, 24, 14, -148, 180, 2, 0, 0], [2, "GroundItem_19", 30, 30, 50, 14, 0, 1, 0, 0], [2, "GroundItem_20", 30, 30, 111, 16, 0, 1, 0, 0], [2, "GroundItem_21", 30, 30, 81, -15, 0, 1, 0, 0], [2, "GroundItem_22", 30, 30, 80.5, 43.2, 0, 1, 0, 0], [2, "plat1_6", 68, 10, 88, 95, 90, 1, 0, 0], [2, "key1_6", 23.1, 23, 82.9, 13.2, 0, 1, 0, 0], [2, "GroundItem_26", 30, 30, -34.5, -34.8, 0, 1, 0, 0], [2, "GroundItem_27", 30, 30, -3.5, -5.8, 0, 1, 0, 0], [2, "GroundItem_28", 30, 30, -65.5, -4.8, 0, 1, 0, 0], [2, "GroundItem_29", 30, 30, -34.5, 23.2, 0, 1, 0, 0], [2, "plat1_8", 54, 10, 73, -58, 90, 1, 0, 0], [2, "key1_8", 23.1, 23, -34.1, -8.8, 0, 1, 0, 0], [2, "GroundItem_33", 140, 45, 14, -109, 0, 1, 0, 0], [2, "GroundItem_36", 30, 10, -116, 77, 0, 1, 0, 0], [2, "GroundItem_37", 30, 30, -85.5, 97.2, 0, 1, 0, 0], [2, "GroundItem_38", 30, 20, -115, 122, 0, 1, 0, 0], [2, "plat1_10", 73, 10, -93, -91, 0, 1, 0, 0], [2, "key1_10", 23.1, 23, -117.1, 96.2, 0, 1, 0, 0], [2, "GroundItem_37", 50, 30, 17, -71.5, 0, 1, 0, 0]]; return (_local1); } public static function getMap4():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_0", 320, 80, -2.5, 121, 0, 1, 0, 0], [1, "Man_1", 11.2, 24.6, -153.7, 70.3, 0, 1, 0, 0], [1, "GroundItem_2", 30, 30, -120.7, 67.3, 0, 1, 0, 0], [1, "GroundItem_3", 30, 30, -91.7, 67.3, 0, 1, 0, 0], [1, "GroundItem_4", 30, 30, -91.7, 37.3, 0, 1, 0, 0], [1, "GroundItem_6", 30, 30, -28.7, -23.7, 0, 1, 0, 0], [1, "GroundItem_8", 30, 30, -118, 115, 0, 1, 0, 0], [1, "GroundItem_19", 135.4, 90, 89.8, 36, 0, 1, 0, 0], [1, "plat2_2", 20, 23, 117, -66, 0, 1, 0, 0], [1, "key2_2", 26, 24, 118.3, -31.7, 0, 1, 0, 0], [1, "GroundItem_22", 260, 60, -31, -130, 0, 1, 0, 0], [1, "GroundItem_23", 29, 114, 143, -66, 0, 1, 0, 0], [1, "GroundItem_27", 102, 64, 37.3, -41.1, 0, 1, 0, 0], [1, "plat3_4", 50, 25, 37, -86.5, 0, 1, 3, 500], [1, "key3_4", 23.1, 23, -143.7, -81.7, 0, 1, 0, 0], [1, "GroundItem_33", 99, 90, -27.5, 36, 0, 1, 0, 0], [2, "GroundItem_9", 100, 260, -83, -1, 0, 1, 0, 0], [2, "GroundItem_10", 30, 30, -18, -56, 0, 1, 0, 0], [2, "GroundItem_11", 30, 30, 13.5, 7.2, 0, 1, 0, 0], [2, "GroundItem_12", 30, 30, 36, 37.2, 0, 1, 0, 0], [2, "GroundItem_13", 30, 30, 59.5, 67.2, 0, 1, 0, 0], [2, "GroundItem_14", 30, 30, 116.5, 67.2, 0, 1, 0, 0], [2, "door_16", 20, 27, 117, 93, -90, 1, 0, 0], [2, "GroundItem_24", 140, 30, 37, -116, 0, 1, 0, 0], [2, "GroundItem_25", 140, 30, 37, -86, 0, 1, 0, 0], [2, "GroundItem_28", 30, 90, 92, -26, 0, 1, 0, 0], [2, "GroundItem_29", 30, 30, 87.5, 97.2, 0, 1, 0, 0], [2, "spine_30", 18, 15, 121, 45, 0, 1, 0, 0]]; return (_local1); } public static function getMap8():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "plat3_0", 90, 20, 12, -40, 0, 1, 1, 100], [1, "key3_0", 23, 23, -51, 147, 0, 1, 0, 0], [1, "plat3_1", 90, 20, -23, 25, 0, 1, 3, 100], [1, "key3_1", 23, 23, -106, 147, 0, 1, 0, 0], [1, "plat3_2", 90, 20, -44, -31, 90, 1, 0, 100], [1, "key3_2", 23, 23, -79, 147, 0, 1, 0, 0], [1, "plat3_3", 90, 20, 33, 16, 90, 1, 2, 100], [1, "key3_3", 23.1, 23, -23.7, 147.3, 0, 1, 0, 0], [1, "Man_5", 11, 25, -148, 146, 0, 1, 0, 0], [1, "GroundItem_6", 290, 20, -16, 121, 0, 1, 0, 0], [1, "plat3_4", 40, 20, 77, 74, 0, 1, 1, 200], [1, "key3_4", 23.1, 23, 2.3, 147.3, 0, 1, 0, 0], [1, "plat3_5", 50, 20, -127, 86, 0, 1, 0, 400], [1, "key3_5", 23, 23, 27, 147, 0, 1, 0, 0], [1, "plat3_6", 50, 20, -72, -111, 0, 1, 2, 400], [1, "key3_6", 23, 23, 53, 147, 0, 1, 0, 0], [1, "GroundItem_10", 30, 30, 311.3, -8.7, 0, 1, 0, 0], [1, "plat3_7", 50, 20, 113, -99, 90, 1, 0, 200], [1, "key3_7", 23, 23, 78, 147, 0, 1, 0, 0], [1, "plat3_8", 50, 20, -129, -130, 90, 1, 2, 400], [1, "key3_8", 23, 23, 103, 147, 0, 1, 0, 0], [1, "door_13", 20, 27, -103, -83, 90, 1, 0, 0], [2, "GroundItem_14", 260, 260, 0, 0, 0, 1, 0, 0]]; return (_local1); } public static function getMap16():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "Man_3", 11, 25, -144, -143, 0, 1, 0, 0], [1, "GroundItem_4", 30, 30, -147, -116, 0, 1, 0, 0], [1, "GroundItem_5", 30, 30, -115.7, -145.7, 0, 1, 0, 0], [1, "GroundItem_10", 30, 30, -115.7, -24.7, 0, 1, 0, 0], [1, "GroundItem_12", 30, 30, -55, -147, 0, 1, 0, 0], [1, "GroundItem_40", 30, 30, -147, -56, 0, 1, 0, 0], [1, "GroundItem_41", 30, 30, -116.7, -85.7, 0, 1, 0, 0], [1, "GroundItem_42", 30, 30, -55.7, -85.7, 0, 1, 0, 0], [1, "GroundItem_43", 30, 30, -23.7, -116.7, 0, 1, 0, 0], [1, "GroundItem_44", 30, 30, -54.7, -24.7, 0, 1, 0, 0], [1, "GroundItem_45", 30, 30, -24.7, -55.7, 0, 1, 0, 0], [1, "GroundItem_46", 30, 30, 38.2, 5.3, 0, 1, 0, 0], [1, "GroundItem_47", 30, 30, -146.7, 6.3, 0, 1, 0, 0], [1, "GroundItem_48", 30, 30, -85.7, 5.3, 0, 1, 0, 0], [1, "GroundItem_49", 30, 30, -115.7, 36.3, 0, 1, 0, 0], [1, "GroundItem_50", 30, 30, 38, -115, 0, 1, 0, 0], [1, "GroundItem_51", 30, 30, 68.3, -145.7, 0, 1, 0, 0], [1, "GroundItem_52", 30, 30, 37.2, -54.7, 0, 1, 0, 0], [1, "GroundItem_53", 30, 30, 7.2, -25.7, 0, 1, 0, 0], [1, "GroundItem_54", 30, 30, -23.7, 6.3, 0, 1, 0, 0], [1, "GroundItem_55", 30, 30, 68.2, -83.7, 0, 1, 0, 0], [1, "GroundItem_56", 30, 30, 99.3, -113.7, 0, 1, 0, 0], [1, "GroundItem_57", 30, 30, 8.2, 37.3, 0, 1, 0, 0], [1, "GroundItem_58", 30, 30, -85.7, 66.3, 0, 1, 0, 0], [1, "GroundItem_59", 30, 30, -146.7, 65.3, 0, 1, 0, 0], [1, "GroundItem_60", 30, 30, -116, 95, 0, 1, 0, 0], [1, "GroundItem_61", 30, 30, -22, 67, 0, 1, 0, 0], [1, "GroundItem_62", 30, 30, -52, 95, 0, 1, 0, 0], [1, "GroundItem_63", 30, 30, 67.2, -25.7, 0, 1, 0, 0], [1, "GroundItem_64", 30, 30, 67.3, 34.3, 0, 1, 0, 0], [1, "GroundItem_65", 30, 30, 38, 66, 0, 1, 0, 0], [1, "GroundItem_66", 30, 30, 98.3, 4.3, 0, 1, 0, 0], [1, "door_67", 19.5, 27, 130.3, 148.3, 0, 1, 0, 0], [1, "GroundItem_68", 150, 10, 83, 100, 0, 1, 0, 0], [1, "plat1_3", 50, 10, 95, 134, 90, 1, 0, 0], [1, "key1_3", 23.1, 23, -117.4, 2.3, 0, 1, 0, 0], [1, "plat1_4", 50, 10, 55, 133, 90, 1, 0, 0], [1, "key1_4", 23, 23, 39, -25, 0, 1, 0, 0], [1, "plat1_5", 50, 10, 13, 132, 90, 1, 0, 0], [1, "key1_5", 23.1, 23, 66.6, -111.7, 0, 1, 0, 0], [1, "GroundItem_72", 30, 30, 8.2, -144.7, 0, 1, 0, 0], [1, "GroundItem_75", 30, 30, 129.3, -23.7, 0, 1, 0, 0], [1, "GroundItem_76", 30, 30, 129.3, -80.7, 0, 1, 0, 0], [1, "GroundItem_77", 30, 30, 130.3, -142.7, 0, 1, 0, 0], [1, "GroundItem_79", 15, 30, 151, -52, 0, 1, 0, 0], [1, "GroundItem_80", 15, 30, 152, -111, 0, 1, 0, 0], [2, "GroundItem_6", 30, 30, -117, -98, 0, 1, 0, 0], [2, "GroundItem_7", 30, 30, -87.5, -68.8, 0, 1, 0, 0], [2, "GroundItem_8", 30, 30, -57, -98, 0, 1, 0, 0], [2, "GroundItem_9", 30, 20, -27, -121, 0, 1, 0, 0], [2, "GroundItem_13", 30, 30, -56.5, -39.8, 0, 1, 0, 0], [2, "GroundItem_14", 30, 30, -86.5, -9.8, 0, 1, 0, 0], [2, "GroundItem_15", 30, 30, -114.5, 18.2, 0, 1, 0, 0], [2, "GroundItem_16", 30, 30, -25.5, -9.8, 0, 1, 0, 0], [2, "GroundItem_17", 30, 30, 2.5, -38.8, 0, 1, 0, 0], [2, "GroundItem_18", 30, 30, 1.5, -96.8, 0, 1, 0, 0], [2, "GroundItem_19", 30, 30, 63, -37, 0, 1, 0, 0], [2, "GroundItem_20", 30, 30, 62.5, -96.8, 0, 1, 0, 0], [2, "GroundItem_21", 30, 30, 93.5, -67.8, 0, 1, 0, 0], [2, "GroundItem_23", 30, 30, 32.5, -8.8, 0, 1, 0, 0], [2, "GroundItem_24", 30, 30, -86.5, 46.2, 0, 1, 0, 0], [2, "GroundItem_25", 30, 30, -23.5, 48.2, 0, 1, 0, 0], [2, "GroundItem_26", 30, 30, -53.5, 78.2, 0, 1, 0, 0], [2, "GroundItem_27", 30, 30, -84.5, 107.2, 0, 1, 0, 0], [2, "GroundItem_28", 30, 30, -116.5, 76.2, 0, 1, 0, 0], [2, "GroundItem_29", 30, 30, 3.5, 20.2, 0, 1, 0, 0], [2, "GroundItem_30", 30, 30, -22.5, 107.2, 0, 1, 0, 0], [2, "GroundItem_31", 30, 30, 6.5, 78.2, 0, 1, 0, 0], [2, "GroundItem_32", 30, 30, 61.5, 22.2, 0, 1, 0, 0], [2, "GroundItem_33", 30, 30, 91.5, 52.2, 0, 1, 0, 0], [2, "GroundItem_34", 30, 30, 61.5, 80.2, 0, 1, 0, 0], [2, "GroundItem_35", 30, 30, 34.5, 108.2, 0, 1, 0, 0], [2, "GroundItem_37", 25, 30, 120, -38, 0, 1, 0, 0], [2, "GroundItem_38", 25, 30, 120, -97, 0, 1, 0, 0], [2, "GroundItem_81", 25, 30, 120, 23, 0, 1, 0, 0]]; return (_local1); } public static function getMap17():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_0", 120, 30, -102, 115, 0, 1, 0, 0], [1, "plat2_0", 30, 30, -117, 147, 0, 1, 0, 0], [1, "key2_0", 26, 24, -118, 148, 0, 1, 0, 0], [1, "Man_2", 11.2, 24.6, -153.7, 145.3, 0, 1, 0, 0], [1, "GroundItem_3", 60, 30, 53, 115, 0, 1, 0, 0], [1, "plat2_1", 32, 30, -25, 115, 0, 1, 0, 0], [1, "key2_1", 26, 24, 101.3, 114.3, 0, 1, 0, 0], [1, "GroundItem_5", 30, 60, 7, 101, 0, 1, 0, 0], [1, "plat2_2", 30, 34, 7, 53, 0, 1, 0, 0], [1, "key2_2", 26, 24, 100, 85, 0, 1, 0, 0], [1, "plat2_3", 70, 30, 120, 145, 0, 1, 0, 0], [1, "key2_3", 26, 24, 118, 147, 0, 1, 0, 0], [1, "GroundItem_8", 30, 30, -147, 85, 0, 1, 0, 0], [1, "GroundItem_9", 30, 22, -148, 24, 0, 1, 0, 0], [1, "plat2_4", 30, 32, -147, 52, 0, 1, 0, 0], [1, "key2_4", 26, 24, -24, 115, 0, 1, 0, 0], [1, "plat1_5", 76, 22, -93, 24, 0, 1, 0, 0], [1, "key1_5", 23.1, 23, -148.4, 52.3, 0, 1, 0, 0], [1, "plat2_6", 70, 22, -46, 24, 0, 1, 0, 0], [1, "key2_6", 26, 24, -85.7, 87.3, 0, 1, 0, 0], [1, "GroundItem_13", 44, 30, 138, 114, 0, 1, 0, 0], [1, "GroundItem_14", 45, 22, 14, 24, 0, 1, 0, 0], [1, "GroundItem_15", 110, 22, 106, 57, 0, 1, 0, 0], [1, "GroundItem_16", 22, 90, 76, 1, 0, 1, 0, 0], [1, "GroundItem_17", 22, 90, 124, 1, 0, 1, 0, 0], [1, "GroundItem_18", 169, 22, -19, -27, 0, 1, 0, 0], [1, "plat2_7", 24, 28, 100, -25, 0, 1, 0, 0], [1, "key2_7", 26, 24, 8.3, 54.3, 0, 1, 0, 0], [1, "plat2_8", 22, 28, 147, -24, 0, 1, 0, 0], [1, "key2_8", 26, 24, 44.3, -106.7, 0, 1, 0, 0], [1, "GroundItem_21", 170, 22, -1, -83, 0, 1, 0, 0], [1, "plat1_9", 76, 22, 124, -83, 0, 1, 0, 0], [1, "key1_9", 23, 23, 147, 33, 0, 1, 0, 0], [1, "plat2_10", 30, 27, -89, -1, 0, 1, 0, 0], [1, "key2_10", 26, 24, -86, -1, 0, 1, 0, 0], [1, "GroundItem_25", 24, 84, -149, -29, 0, 1, 0, 0], [1, "door_26", 19.5, 27, -147.7, -83.7, 0, 1, 0, 0], [1, "GroundItem_27", 22, 39, 124, -141, 0, 1, 0, 0], [1, "plat3_12", 22, 15, -125, -150, 0, 1, 1, 500], [1, "key3_12", 23.1, 23, 146.3, -145.7, 0, 1, 0, 0], [1, "GroundItem_29", 22, 40, 44, -141, 0, 1, 0, 0], [1, "GroundItem_30", 22, 40, -2, -111, 0, 1, 0, 0], [1, "GroundItem_31", 40, 22, -49, -140, 90, 1, 0, 0], [1, "plat2_13", 22, 20, -125, -132, 0, 1, 0, 0], [1, "key2_13", 26, 24, -96.7, -54.7, 0, 1, 0, 0], [1, "plat1_14", 76, 22, -125, -83, 90, 1, 0, 0], [1, "key1_14", 23.1, 23, 99.7, 33.3, 0, 1, 0, 0], [1, "plat2_14", 51, 20, -87, -132, 0, 1, 0, 0], [1, "key2_14", 26, 24, 124.2, -106.7, 0, 1, 0, 0], [1, "plat2_15", 25, 30, 147, 83, 0, 1, 0, 0], [1, "key2_15", 26, 24, 125.3, 83.3, 0, 1, 0, 0], [2, "GroundItem_35", 245, 235, -9, -13, 0, 1, 0, 0], [2, "GroundItem_36", 180, 25, 38.5, 117, 0, 1, 0, 0], [2, "GroundItem_36", 15, 150, 121, -55, 0, 1, 0, 0], [2, "GroundItem_37", 15, 30, 121, 89.5, 0, 1, 0, 0]]; return (_local1); } public static function getMap19():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_40", 30, 290, 0, -15, 0, 1, 0, 0], [1, "GroundItem_44", 144, 30, 87, 0, 0, 1, 0, 0], [1, "plat3_2", 30, 28, 0, 145, 0, 1, 3, 900], [1, "key3_2", 23, 23, 136, -26, 0, 1, 0, 0], [1, "Man_51", 11, 25, -149, 148, 0, 1, 0, 0], [1, "plat3_6", 50, 20, -133, 89.3, 0, 1, 0, 300], [1, "key3_6", 23, 23, -72, 148, 0, 1, 0, 0], [1, "plat3_7", 50, 20, -86, 64, 0, 1, 1, 400], [1, "key3_7", 23, 23, -32, 148, 0, 1, 0, 0], [1, "plat3_8", 50, 20, -48, 31, 0, 1, 2, 300], [1, "key3_8", 23, 23, -23, 105, 0, 1, 0, 0], [1, "plat3_9", 50, 20, -133.7, 30.3, 0, 1, 0, 500], [1, "key3_9", 23, 23, -52, 148, 0, 1, 0, 0], [1, "plat3_10", 50, 20, -127.7, -21.7, 0, 1, 0, 400], [1, "key3_10", 23.1, 23, -133.7, 148.3, 0, 1, 0, 0], [1, "plat3_11", 50, 20, -66, -68, 0, 1, 2, 500], [1, "key3_11", 23, 23, -113, 148, 0, 1, 0, 0], [1, "plat3_12", 50, 20, -133, -94, 0, 1, 0, 400], [1, "key3_12", 23, 23, -93, 148, 0, 1, 0, 0], [1, "plat3_13", 50, 20, -60, -17, 0, 1, 3, 500], [1, "key3_13", 23, 23, -23, 127, 0, 1, 0, 0], [1, "GroundItem_61", 130, 10, -98, 126, 0, 1, 0, 0], [2, "GroundItem_42", 260, 30, 0, 0, 0, 1, 0, 0], [2, "GroundItem_45", 30, 116, 0, 73, 0, 1, 0, 0], [2, "door_50", 20, 27, 103, 98, 0, 1, 0, 0], [2, "GroundItem_41", 80, 90, -90, -60, 0, 1, 0, 0], [2, "spine_42", 90, 31, -6, -31, 0, 5, 0, 0], [2, "spine_43", 90, 31, 82, -31, 0, 5, 0, 0], [2, "plat3_5", 50, 10, 26, -75, 0, 1, 2, 90], [2, "key3_5", 23.1, 23, -33.5, -91.8, 0, 1, 0, 0], [2, "GroundItem_46", 50, 10, -25, -75, 0, 1, 0, 0], [2, "plat3_6", 50, 10, 78, -75, 0, 1, 0, 90], [2, "key3_6", 23.1, 23, 25.5, -92.8, 0, 1, 0, 0], [2, "spine_48", 90, 25, 17, -120, 180, 5, 0, 0], [2, "spine_50", 72, 31, 96, -117, 180, 4, 0, 0], [2, "Box_53", 20, 20, 26, 27, 0, 1, 0, 0], [2, "GroundItem_54", 90, 5, 60, 39, 0, 1, 0, 0], [2, "GroundItem_55", 90, 5, 86, 65, 0, 1, 0, 0], [2, "GroundItem_56", 60, 5, 45, 90, 0, 1, 0, 0]]; return (_local1); } public static function getMap(_arg1:uint):Array{ return (MapStore[("getMap" + _arg1)]()); } public static function getTotalScore(_arg1:int=0):int{ var _local2:int; var _local3:int; var _local4:int; _local2 = 0; _local3 = _arg1; if (_local3 == 0){ _local3 = (levelPlayed + 1); }; _local4 = 1; while (_local4 < _local3) { _local2 = (_local2 + scorePlayed_arr[_local4]); _local4++; }; return (_local2); } public static function getMap20():Array{ var _local1:Array; _local1 = new Array(); _local1 = [[1, "GroundItem_0", 25, 75, -121, -123, 0, 1, 0, 0], [1, "GroundItem_1", 25, 75, -148, -48, 0, 1, 0, 0], [1, "GroundItem_2", 25, 75, -95, -48, 0, 1, 0, 0], [1, "GroundItem_3", 25, 75, -121, 29, 0, 1, 0, 0], [1, "GroundItem_4", 25, 75, -95, 103, 0, 1, 0, 0], [1, "GroundItem_5", 25, 75, -148, 103, 0, 1, 0, 0], [1, "GroundItem_6", 25, 20, -121, 151, 0, 1, 0, 0], [1, "GroundItem_8", 25, 20, -68, 151, 0, 1, 0, 0], [1, "Man_14", 11, 25, -153, -146, 0, 1, 0, 0], [1, "GroundItem_40", 25, 75, -68, -123, 0, 1, 0, 0], [1, "GroundItem_41", 25, 75, -42, -48, 0, 1, 0, 0], [1, "GroundItem_42", 25, 75, -42, 102, 0, 1, 0, 0], [1, "GroundItem_43", 25, 75, -15, -123, 0, 1, 0, 0], [1, "GroundItem_45", 25, 75, 11, 104, 0, 1, 0, 0], [1, "GroundItem_46", 25, 20, -15, 150, 0, 1, 0, 0], [1, "GroundItem_47", 25, 75, 11, -48, 0, 1, 0, 0], [1, "GroundItem_49", 25, 75, 38, -123, 0, 1, 0, 0], [1, "GroundItem_51", 25, 75, 65, 103, 0, 1, 0, 0], [1, "GroundItem_52", 25, 75, 91, -123, 0, 1, 0, 0], [1, "GroundItem_53", 25, 75, 91, 27, 0, 1, 0, 0], [1, "GroundItem_57", 25, 20, 91, 149, 0, 1, 0, 0], [1, "GroundItem_58", 25, 75, 144, -123, 0, 1, 0, 0], [1, "GroundItem_59", 25, 75, 144, 27, 0, 1, 0, 0], [1, "GroundItem_60", 25, 20, 144, 150, 0, 1, 0, 0], [1, "plat3_0", 25, 75, -68, 28, 0, 1, 0, 150], [1, "key3_0", 23.1, 23, -148.7, 53.3, 0, 1, 0, 0], [1, "plat3_1", 25, 20, 38, 148, 0, 1, 0, 75], [1, "key3_1", 23.1, 23, -40.7, 151.3, 0, 1, 0, 0], [1, "plat3_2", 25, 75, 117, 102, 0, 1, 0, 150], [1, "key3_2", 23.1, 23, -66.7, -28.7, 0, 1, 0, 0], [1, "door_66", 20, 27, 144, 78, 180, 1, 0, 0], [1, "plat3_3", 25, 75, -15, 27, 0, 1, 0, 0], [1, "key3_3", 23.1, 23, -96.8, -98.7, 0, 1, 0, 0], [1, "plat3_4", 25, 75, 38, 28, 0, 1, 0, 0], [1, "key3_4", 23.1, 23, 64.3, 48.3, 0, 1, 0, 0], [1, "plat3_5", 25, 75, 65, -48, 0, 1, 0, 0], [1, "key3_5", 23.1, 23, 64.3, -99.7, 0, 1, 0, 0], [1, "plat3_6", 25, 75, 117, -48, 0, 1, 0, 0], [1, "key3_6", 23.1, 23, 64.3, 149.3, 0, 1, 0, 0], [2, "GroundItem_12", 25, 75, -94, -93, 90, 1, 0, 0], [2, "GroundItem_13", 75, 25, -18, -119, 0, 1, 0, 0], [2, "GroundItem_15", 75, 25, 58, -93, 0, 1, 0, 0], [2, "GroundItem_16", 35, 25, 113, -119, 0, 1, 0, 0], [2, "GroundItem_18", 75, 25, -18, -66, 0, 1, 0, 0], [2, "GroundItem_19", 35, 25, 113, -66, 0, 1, 0, 0], [2, "GroundItem_20", 75, 25, -94, -40, 0, 1, 0, 0], [2, "GroundItem_21", 75, 25, 58, -40, 0, 1, 0, 0], [2, "GroundItem_23", 75, 25, -18, -13, 0, 1, 0, 0], [2, "GroundItem_24", 35, 25, 113, -13, 0, 1, 0, 0], [2, "GroundItem_25", 75, 25, 58, 13, 0, 1, 0, 0], [2, "GroundItem_27", 75, 25, -94, 13, 0, 1, 0, 0], [2, "GroundItem_28", 75, 25, -18, 40, 0, 1, 0, 0], [2, "GroundItem_29", 35, 25, 113, 40, 0, 1, 0, 0], [2, "GroundItem_30", 75, 25, -94, 66, 0, 1, 0, 0], [2, "GroundItem_31", 75, 25, 58, 66, 0, 1, 0, 0], [2, "GroundItem_33", 75, 25, -18, 93, 0, 1, 0, 0], [2, "GroundItem_34", 35, 25, 113, 93, 0, 1, 0, 0], [2, "GroundItem_35", 75, 25, -94, 119, 0, 1, 0, 0], [2, "GroundItem_36", 75, 25, 58, 119, 0, 1, 0, 0]]; return (_local1); } } }//package engine
Section 82
//Tool (engine.Tool) package engine { import flash.display.*; import flash.events.*; import sound.*; import flash.text.*; import flash.net.*; public class Tool extends MovieClip { public var z_btn:SimpleButton; public var quality_btn:SimpleButton; public var sound_btn:SimpleButton; public var level_txt:TextField; public var score_txt:TextField; public var time_mc:MovieClip; public var x_btn:SimpleButton; public var musicEnabled_mc:MovieClip; public var music_btn:SimpleButton; public var menu_btn:SimpleButton; public var walkthrough_btn:SimpleButton; public var link_btn:SimpleButton; public var reset_btn:SimpleButton; public var pause_btn:SimpleButton; public var soundEnabled_mc:MovieClip; private var GM:GameMain; public function Tool(){ this.addEventListener(Event.ADDED_TO_STAGE, init); } private function rotate1Event(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); GM.boxEngine.mapAction = true; GM.mapMgr.rotateLayer(-90); } private function init(_arg1:Event):void{ this.removeEventListener(Event.ADDED_TO_STAGE, init); GM = (this.parent as GameMain); setBtnEvent(); this.level_txt.selectable = (this.score_txt.selectable = false); this.time_mc.bar.width = 160; } public function updateTime(_arg1:Number):void{ this.time_mc.bar.width = ((160 / 27) * Math.round((_arg1 * 27))); if (_arg1 < 0.02){ this.time_mc.clock_mc.gotoAndStop(2); } else { this.time_mc.clock_mc.gotoAndStop(1); }; } public function updateLevel(_arg1:int):void{ this.level_txt.text = String(_arg1); this.time_mc.clock_mc.gotoAndStop(1); } private function setQuality(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); GM.showPopUp("quality_popup"); } private function backToMenu(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); GM.showPopUp("BackMenu_popup"); } private function setBtnEvent():void{ this.soundEnabled_mc.visible = soundCtr.soundOff; this.musicEnabled_mc.visible = soundCtr.musicOff; this.soundEnabled_mc.mouseEnabled = false; this.musicEnabled_mc.mouseEnabled = false; this.reset_btn.addEventListener(MouseEvent.CLICK, GM.resetLevel); this.menu_btn.addEventListener(MouseEvent.CLICK, backToMenu); this.sound_btn.addEventListener(MouseEvent.CLICK, GM.switchSound); this.music_btn.addEventListener(MouseEvent.CLICK, GM.switchMusic); this.link_btn.addEventListener(MouseEvent.CLICK, linkMainNet); this.pause_btn.addEventListener(MouseEvent.CLICK, GM.pauseGame); this.quality_btn.addEventListener(MouseEvent.CLICK, setQuality); this.x_btn.addEventListener(MouseEvent.CLICK, rotate1Event); this.z_btn.addEventListener(MouseEvent.CLICK, rotate2Event); this.walkthrough_btn.addEventListener(MouseEvent.CLICK, linkWalkThrough); } private function linkWalkThrough(_arg1:MouseEvent):void{ var _local2:URLRequest; soundCtr.playSound("btn"); _local2 = new URLRequest("http://www.freeworldgroup.com/walkthroughs/front2back.htm"); navigateToURL(_local2, "_blank"); } public function updateScore(_arg1:int):void{ this.score_txt.text = String(_arg1); } public function clearEvent():void{ } private function rotate2Event(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); GM.boxEngine.mapAction = true; GM.mapMgr.rotateLayer(90); } private function linkMainNet(_arg1:MouseEvent):void{ var _local2:URLRequest; soundCtr.playSound("btn"); _local2 = new URLRequest("http://www.freeworldgroup.com/"); navigateToURL(_local2, "_blank"); } } }//package engine
Section 83
//Logo (framework.Logo) package framework { import flash.display.*; public dynamic class Logo extends MovieClip { } }//package framework
Section 84
//all_mc_13 (front2back_fla.all_mc_13) package front2back_fla { import flash.display.*; public dynamic class all_mc_13 extends MovieClip { public function all_mc_13(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package front2back_fla
Section 85
//clock_mc_35 (front2back_fla.clock_mc_35) package front2back_fla { import flash.display.*; public dynamic class clock_mc_35 extends MovieClip { public function clock_mc_35(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package front2back_fla
Section 86
//games2girls_inv_74 (front2back_fla.games2girls_inv_74) package front2back_fla { import flash.display.*; public dynamic class games2girls_inv_74 extends MovieClip { public var games2girls_button:SimpleButton; } }//package front2back_fla
Section 87
//layer1_91 (front2back_fla.layer1_91) package front2back_fla { import flash.display.*; public dynamic class layer1_91 extends MovieClip { public var g3:GroundItem; public var g4:GroundItem; public var g1:GroundItem; public var g2:GroundItem; public var point_mc:GroundItem; } }//package front2back_fla
Section 88
//layer2_89 (front2back_fla.layer2_89) package front2back_fla { import flash.display.*; public dynamic class layer2_89 extends MovieClip { public var g3:GroundItem; public var g4:GroundItem; public var g1:GroundItem; public var g2:GroundItem; } }//package front2back_fla
Section 89
//levelItem_66 (front2back_fla.levelItem_66) package front2back_fla { import flash.display.*; import flash.text.*; public dynamic class levelItem_66 extends MovieClip { public var score_txt:TextField; public var bg:MovieClip; public var lev_txt:TextField; public function levelItem_66(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package front2back_fla
Section 90
//loading_11 (front2back_fla.loading_11) package front2back_fla { import flash.display.*; public dynamic class loading_11 extends MovieClip { public function loading_11(){ addFrameScript(133, frame134); } function frame134(){ stop(); (root as MovieClip).play(); } } }//package front2back_fla
Section 91
//loading_3 (front2back_fla.loading_3) package front2back_fla { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import loading.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class loading_3 extends MovieClip { public var txt:LoadingTxt; public var loading_text_mc:MovieClip; public function loading_3(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 38, frame39); } function frame3(){ this.visible = true; } function frame1(){ this.visible = false; } function frame2(){ (this.parent as PrevLoader).checkGoNext(); } function frame39(){ stop(); txt.onLoadComplete = (parent as PrevLoader).goNext; loading_text_mc.txt.text = "Loading..."; loading_text_mc.txt.autoSize = "center"; } } }//package front2back_fla
Section 92
//loading_8 (front2back_fla.loading_8) package front2back_fla { import flash.display.*; public dynamic class loading_8 extends MovieClip { public var txt:Txt1; } }//package front2back_fla
Section 93
//time_mc_32 (front2back_fla.time_mc_32) package front2back_fla { import flash.display.*; public dynamic class time_mc_32 extends MovieClip { public var b10:MovieClip; public var b14:MovieClip; public var b17:MovieClip; public var b18:MovieClip; public var b13:MovieClip; public var b15:MovieClip; public var b16:MovieClip; public var b2:MovieClip; public var b7:MovieClip; public var b1:MovieClip; public var b19:MovieClip; public var b6:MovieClip; public var b3:MovieClip; public var b26:MovieClip; public var b27:MovieClip; public var b21:MovieClip; public var b23:MovieClip; public var b24:MovieClip; public var b5:MovieClip; public var b11:MovieClip; public var b12:MovieClip; public var b4:MovieClip; public var b8:MovieClip; public var b22:MovieClip; public var b20:MovieClip; public var clock_mc:MovieClip; public var b9:MovieClip; public var bar:MovieClip; public var b25:MovieClip; } }//package front2back_fla
Section 94
//Timeline_100 (front2back_fla.Timeline_100) package front2back_fla { import flash.display.*; public dynamic class Timeline_100 extends MovieClip { public function Timeline_100(){ addFrameScript(7, frame8, 15, frame16); } function frame16(){ stop(); MovieClip(this.parent).nextFrame(); } function frame8(){ stop(); } } }//package front2back_fla
Section 95
//Timeline_101 (front2back_fla.Timeline_101) package front2back_fla { import flash.display.*; public dynamic class Timeline_101 extends MovieClip { public function Timeline_101(){ addFrameScript(7, frame8, 15, frame16); } function frame16(){ stop(); MovieClip(this.parent).nextFrame(); } function frame8(){ stop(); } } }//package front2back_fla
Section 96
//Timeline_102 (front2back_fla.Timeline_102) package front2back_fla { import flash.display.*; public dynamic class Timeline_102 extends MovieClip { public function Timeline_102(){ addFrameScript(7, frame8, 15, frame16); } function frame16(){ stop(); MovieClip(this.parent).nextFrame(); } function frame8(){ stop(); } } }//package front2back_fla
Section 97
//Timeline_38 (front2back_fla.Timeline_38) package front2back_fla { import flash.display.*; public dynamic class Timeline_38 extends MovieClip { public function Timeline_38(){ addFrameScript(0, frame1, 21, frame22, 34, frame35); } function frame1(){ stop(); } function frame22(){ gotoAndPlay(6); } function frame35(){ gotoAndStop(1); } } }//package front2back_fla
Section 98
//Timeline_77 (front2back_fla.Timeline_77) package front2back_fla { import flash.display.*; public dynamic class Timeline_77 extends MovieClip { public function Timeline_77(){ addFrameScript(9, frame10, 16, frame17, 24, frame25); } function frame10(){ stop(); } function frame17(){ stop(); } function frame25(){ MovieClip(this.parent).gotoAndStop("move"); } } }//package front2back_fla
Section 99
//Timeline_78 (front2back_fla.Timeline_78) package front2back_fla { import flash.display.*; public dynamic class Timeline_78 extends MovieClip { public function Timeline_78(){ addFrameScript(17, frame18); } function frame18(){ gotoAndPlay(1); } } }//package front2back_fla
Section 100
//Timeline_79 (front2back_fla.Timeline_79) package front2back_fla { import flash.display.*; public dynamic class Timeline_79 extends MovieClip { public function Timeline_79(){ addFrameScript(8, frame9); } function frame9(){ stop(); } } }//package front2back_fla
Section 101
//Timeline_80 (front2back_fla.Timeline_80) package front2back_fla { import flash.display.*; public dynamic class Timeline_80 extends MovieClip { public function Timeline_80(){ addFrameScript(24, frame25); } function frame25(){ stop(); } } }//package front2back_fla
Section 102
//Timeline_99 (front2back_fla.Timeline_99) package front2back_fla { import flash.display.*; public dynamic class Timeline_99 extends MovieClip { public function Timeline_99(){ addFrameScript(7, frame8, 16, frame17); } function frame8(){ stop(); } function frame17(){ stop(); MovieClip(this.parent).nextFrame(); } } }//package front2back_fla
Section 103
//Input (General.Input) package General { import flash.display.*; import flash.events.*; public class Input { public static var mouseOffsetX:Number = 0; private static var keyArr:Array; public static var mouseDragX:Number = 0; public static var mouseDragY:Number = 0; public static var mouseOffsetY:Number = 0; public static var ascii:Array; public static var mouseX:Number = 0; public static var mouseY:Number = 0; public static var mouseOver:Boolean = false; private static var bufferSize:int; public static var mouse:Sprite = new Sprite(); public static var mouseDown:Boolean = false; public static var mouseReleased:Boolean = false; public static var lastKey:int = 0; public static var m_stageMc:Sprite; private static var keyState:Array; public static var timeSinceLastKey = 0; public static var mousePressed:Boolean = false; private static var keyBuffer:Array; public function Input(_arg1:Sprite){ var _local2:int; var _local3:int; super(); m_stageMc = _arg1; ascii = new Array(222); fillAscii(); keyState = new Array(222); keyArr = new Array(); _local2 = 0; while (_local2 < 222) { keyState[_local2] = new int(0); if (ascii[_local2] != undefined){ keyArr.push(_local2); }; _local2++; }; bufferSize = 5; keyBuffer = new Array(bufferSize); _local3 = 0; while (_local3 < bufferSize) { keyBuffer[_local3] = new Array(0, 0); _local3++; }; _arg1.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPress, false, 0, true); _arg1.stage.addEventListener(KeyboardEvent.KEY_UP, keyRelease, false, 0, true); _arg1.stage.addEventListener(MouseEvent.MOUSE_DOWN, mousePress, false, 0, true); _arg1.stage.addEventListener(MouseEvent.CLICK, mouseRelease, false, 0, true); _arg1.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove, false, 0, true); _arg1.stage.addEventListener(Event.MOUSE_LEAVE, mouseLeave, false, 0, true); mouse.graphics.lineStyle(0.1, 0, 100); mouse.graphics.moveTo(0, 0); mouse.graphics.lineTo(0, 0.1); } public function mouseRelease(_arg1:MouseEvent){ mouseDown = false; mouseReleased = true; } public function keyPress(_arg1:KeyboardEvent){ keyState[_arg1.keyCode] = Math.max(keyState[_arg1.keyCode], 1); lastKey = _arg1.keyCode; } private function fillAscii(){ ascii[65] = "A"; ascii[66] = "B"; ascii[67] = "C"; ascii[68] = "D"; ascii[69] = "E"; ascii[70] = "F"; ascii[71] = "G"; ascii[72] = "H"; ascii[73] = "I"; ascii[74] = "J"; ascii[75] = "K"; ascii[76] = "L"; ascii[77] = "M"; ascii[78] = "N"; ascii[79] = "O"; ascii[80] = "P"; ascii[81] = "Q"; ascii[82] = "R"; ascii[83] = "S"; ascii[84] = "T"; ascii[85] = "U"; ascii[86] = "V"; ascii[87] = "W"; ascii[88] = "X"; ascii[89] = "Y"; ascii[90] = "Z"; ascii[48] = "0"; ascii[49] = "1"; ascii[50] = "2"; ascii[51] = "3"; ascii[52] = "4"; ascii[53] = "5"; ascii[54] = "6"; ascii[55] = "7"; ascii[56] = "8"; ascii[57] = "9"; ascii[32] = "Spacebar"; ascii[17] = "Ctrl"; ascii[16] = "Shift"; ascii[192] = "~"; ascii[38] = "up"; ascii[40] = "down"; ascii[37] = "left"; ascii[39] = "right"; ascii[96] = "Numpad 0"; ascii[97] = "Numpad 1"; ascii[98] = "Numpad 2"; ascii[99] = "Numpad 3"; ascii[100] = "Numpad 4"; ascii[101] = "Numpad 5"; ascii[102] = "Numpad 6"; ascii[103] = "Numpad 7"; ascii[104] = "Numpad 8"; ascii[105] = "Numpad 9"; ascii[111] = "Numpad /"; ascii[106] = "Numpad *"; ascii[109] = "Numpad -"; ascii[107] = "Numpad +"; ascii[110] = "Numpad ."; ascii[45] = "Insert"; ascii[46] = "Delete"; ascii[33] = "Page Up"; ascii[34] = "Page Down"; ascii[35] = "End"; ascii[36] = "Home"; ascii[112] = "F1"; ascii[113] = "F2"; ascii[114] = "F3"; ascii[115] = "F4"; ascii[116] = "F5"; ascii[117] = "F6"; ascii[118] = "F7"; ascii[119] = "F8"; ascii[188] = ","; ascii[190] = "."; ascii[186] = ";"; ascii[222] = "'"; ascii[219] = "["; ascii[221] = "]"; ascii[189] = "-"; ascii[187] = "+"; ascii[220] = "\\"; ascii[191] = "/"; ascii[9] = "TAB"; ascii[8] = "Backspace"; } public function mouseMove(_arg1:MouseEvent){ if (mouseDown != _arg1.buttonDown){ mouseDown = _arg1.buttonDown; mouseReleased = !(_arg1.buttonDown); mousePressed = _arg1.buttonDown; mouseDragX = 0; mouseDragY = 0; }; mouseX = (_arg1.stageX - m_stageMc.x); mouseY = (_arg1.stageY - m_stageMc.y); mouseOffsetX = (mouseX - mouse.x); mouseOffsetY = (mouseY - mouse.y); if (mouseDown){ mouseDragX = (mouseDragX + mouseOffsetX); mouseDragY = (mouseDragY + mouseOffsetY); }; mouse.x = mouseX; mouse.y = mouseY; } public function keyRelease(_arg1:KeyboardEvent){ var _local2:int; keyState[_arg1.keyCode] = -1; _local2 = (bufferSize - 1); while (_local2 > 0) { keyBuffer[_local2] = keyBuffer[(_local2 - 1)]; _local2--; }; keyBuffer[0] = [_arg1.keyCode, 0]; } public function mouseLeave(_arg1:Event){ mouseReleased = mouseDown; mouseDown = false; } public function mousePress(_arg1:MouseEvent){ mousePressed = true; mouseDown = true; mouseDragX = 0; mouseDragY = 0; } public static function getKeyHold(_arg1:int):int{ return (Math.max(0, keyState[_arg1])); } public static function update(){ var _local1:int; var _local2:int; _local1 = 0; while (_local1 < keyArr.length) { if (keyState[keyArr[_local1]] != 0){ var _local3 = keyState; var _local4 = keyArr[_local1]; var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; }; _local1++; }; _local2 = 0; while (_local2 < bufferSize) { _local3 = keyBuffer[_local2]; _local4 = 1; _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; _local2++; }; mouseReleased = false; mousePressed = false; mouseOver = false; } public static function isKeyPressed(_arg1:int):Boolean{ timeSinceLastKey = 0; return ((keyState[_arg1] == 1)); } public static function isKeyDown(_arg1:int):Boolean{ return ((keyState[_arg1] > 0)); } public static function getKeyString(_arg1:uint):String{ return (ascii[_arg1]); } public static function isKeyReleased(_arg1:int):Boolean{ return ((keyState[_arg1] == -1)); } public static function isKeyInBuffer(_arg1:int, _arg2:int, _arg3:int){ return ((((keyBuffer[_arg2][0] == _arg1)) && ((keyBuffer[_arg2][1] <= _arg3)))); } } }//package General
Section 104
//LoadingTxt (loading.LoadingTxt) package loading { import flash.display.*; import flash.events.*; import ui.*; public class LoadingTxt extends Sprite { private var txt:Txt; public var onLoadComplete:Function; public function LoadingTxt(){ onLoadComplete = function ():void{ }; super(); this.addEventListener(Event.ADDED_TO_STAGE, added); } private function added(_arg1:Event):void{ txt = (this.getChildAt(0) as Txt); txt.autoSize = "center"; this.removeEventListener(Event.ADDED_TO_STAGE, added); this.addEventListener(Event.REMOVED_FROM_STAGE, removed); this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); txt.text = "100%"; } private function onProgress(_arg1:ProgressEvent):void{ var _local2:int; _local2 = ((_arg1.bytesLoaded / _arg1.bytesTotal) * 100); txt.text = (_local2 + "%"); if (_local2 == 100){ if (onLoadComplete == null){ trace("你小子忘记设置 onLoadComplete 了!"); } else { onLoadComplete(); }; }; } private function removed(_arg1:Event):void{ this.removeEventListener(Event.REMOVED_FROM_STAGE, removed); this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onProgress); txt = null; onLoadComplete = null; } } }//package loading
Section 105
//PrevLoader (loading.PrevLoader) package loading { import flash.display.*; import flash.events.*; import ui.*; import mochi.as3.*; import flash.utils.*; public class PrevLoader extends MovieClip { public var mochi_container:MovieClip; public var mochi_code:String; public var protection:Boolean;// = true public var maskRect:MaskRect; public function PrevLoader(){ protection = true; super(); addFrameScript(1, frame2); stage.showDefaultContextMenu = false; (root as MovieClip).stop(); __setProp_maskRect_loading_1(); } public function set skip(_arg1:Boolean):void{ if (_arg1){ this.stop(); stopAll(this); (root as MovieClip).play(); this.visible = false; }; } private function isInUrlFront(_arg1:String):Boolean{ return ((this.loaderInfo.url.substr(0, _arg1.length).toLowerCase() == _arg1.toLowerCase())); } public function init():void{ stop(); MaskRect.setPos(maskRect, setPos); } public function checkGoNext():void{ if (this.loaderInfo.bytesLoaded == this.loaderInfo.bytesTotal){ goNext(); }; } public function goNext():void{ if ((mochi_container._mochiad is MovieClip)){ } else { goNext2(); }; } function frame2(){ init(); } private function setPos(_arg1:int, _arg2:int):void{ this.x = (_arg1 / 2); this.y = (_arg2 / 2); mochi_container.x = (-(_arg1) / 2); mochi_container.y = (-(_arg2) / 2); if (mochi_code){ MochiAd.showPreGameAd({clip:mochi_container, ad_failed:goNext2, ad_skipped:goNext2, ad_finished:goNext2, id:mochi_code, res:((_arg1 + "x") + _arg2)}); } else { trace("未设置mochi_code"); }; } public function goNext2():void{ try { MochiAd.unload(mochi_container); } catch(e) { trace(("mochiad e=" + e)); }; new smartGuard(this.loaderInfo.url, this); if (protection){ if (((isIn("freeworldgroup.com")) || (isIn("ifungames.com")))){ this.gotoAndStop(4); } else { this.gotoAndStop(3); }; } else { this.gotoAndStop(4); }; } function __setProp_maskRect_loading_1(){ try { maskRect["componentInspectorSetting"] = true; } catch(e:Error) { }; maskRect.align = "center-middle"; try { maskRect["componentInspectorSetting"] = false; } catch(e:Error) { }; } private function isIn(_arg1:String):Boolean{ return (((((((isInUrlFront(_arg1)) || (isInUrlFront(("http://" + _arg1))))) || (isInUrlFront(("http://www." + _arg1))))) || (isInUrlFront(("www." + _arg1))))); } public static function stopAll(_arg1:DisplayObject){ var _local2:DisplayObjectContainer; var _local3:int; if ((_arg1 is DisplayObjectContainer)){ _local2 = (_arg1 as DisplayObjectContainer); _local3 = _local2.numChildren; while (--_local3 >= 0) { stopAll(_local2.getChildAt(_local3)); }; if ((_arg1 is MovieClip)){ (_arg1 as MovieClip).stop(); }; }; } } }//package loading
Section 106
//smartGuard (loading.smartGuard) package loading { import flash.display.*; import flash.events.*; import flash.net.*; import flash.errors.*; public class smartGuard extends MovieClip { private var loader:URLLoader; private var selfURL:String; private var mc:MovieClip; public var status:String;// = "" public function smartGuard(_arg1:String, _arg2:MovieClip):void{ var url = _arg1; var obj = _arg2; status = ""; super(); stop(); selfURL = url; mc = obj; if (selfURL.substr(0, 7) != "file://"){ try { loader = new URLLoader(); loader.load(new URLRequest("http://www.freeworldgroup.com/sites.xml")); loader.addEventListener(Event.COMPLETE, loading); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } catch(e:IOError) { trace(e); } catch(e:SecurityError) { trace(e); }; } else { play(); }; } private function loading(_arg1:Event):void{ var _local2:Boolean; var _local3:XML; var _local4:String; _local2 = false; _local3 = new XML(); _local3.ignoreWhite = true; _local3 = XML(loader.data); for (_local4 in _local3.url) { if (isIn(_local3.url[_local4].toString()) == true){ status = "dead"; mc.gotoAndStop(3); go2HomePage(); _local2 = true; break; }; }; if (_local2 == false){ play(); }; } private function getRequest(){ var _local1:String; var _local2:URLRequest; var _local3:URLVariables; _local1 = "http://www.freeworldgroup.com"; _local2 = new URLRequest(_local1); _local3 = new URLVariables(); _local3.url = selfURL; _local2.data = _local3; return (_local2); } private function ioErrorHandler(_arg1:IOErrorEvent):void{ trace(("ioErrorHandler: " + _arg1)); } private function go2HomePage():void{ try { navigateToURL(getRequest(), "_self"); } catch(e:SecurityError) { navigateToURL(getRequest(), "_blank"); } catch(e:IOError) { trace(e); }; } private function isIn(_arg1:String):Boolean{ var _local2:Boolean; var _local3:uint; _local2 = false; _local3 = 0; while (_local3 < (selfURL.length - _arg1.length)) { if (selfURL.substr(_local3, _arg1.length) == _arg1){ _local2 = true; }; _local3++; }; return (_local2); } } }//package loading
Section 107
//Credit (menu.Credit) package menu { import flash.display.*; import flash.events.*; public class Credit extends MovieClip { public var back_btn:SimpleButton; private var swf:Shift; public function Credit(){ init(); } private function rePlay(_arg1:MouseEvent):void{ this.back_btn.removeEventListener(MouseEvent.CLICK, backToMenu); swf.showGameMain(); } private function init():void{ this.back_btn.addEventListener(MouseEvent.CLICK, backToMenu); this.addEventListener(Event.ADDED_TO_STAGE, setParent); } private function backToMenu(_arg1:MouseEvent):void{ this.back_btn.removeEventListener(MouseEvent.CLICK, backToMenu); swf.showStartPage(); } private function setParent(_arg1:Event):void{ swf = (this.parent as Shift); this.removeEventListener(Event.ADDED_TO_STAGE, setParent); } } }//package menu
Section 108
//HelpPage (menu.HelpPage) package menu { import engine.*; import flash.display.*; import flash.events.*; import sound.*; import flash.text.*; import flash.net.*; import flash.utils.*; public class HelpPage extends MovieClip { public var lev_mc10:MovieClip; public var lev_mc13:MovieClip; public var lev_mc14:MovieClip; public var lev_mc15:MovieClip; public var lev_mc17:MovieClip; public var lev_mc16:MovieClip; public var lev_mc11:MovieClip; public var lev_mc12:MovieClip; public var lev_mc19:MovieClip; public var lev_mc6:MovieClip; public var lev_mc4:MovieClip; public var lev_mc5:MovieClip; public var lev_mc20:MovieClip; public var lev_mc1:MovieClip; public var lev_mc18:MovieClip; public var lev_mc9:MovieClip; public var lev_mc7:MovieClip; public var totalScore_txt:TextField; public var menu_btn:SimpleButton; private var swf:Shift; public var selectFlag_mc:MovieClip; public var lev_mc8:MovieClip; public var submit_btn:SimpleButton; public var lev_mc2:MovieClip; public var lev_mc3:MovieClip; public function HelpPage(){ this.addEventListener(Event.ADDED_TO_STAGE, setParent); } private function linkIndexAddress(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.games2girls.com/"); navigateToURL(_local2, "_blank"); } private function init():void{ var _local1:*; var _local2:MovieClip; this.totalScore_txt.selectable = false; swf.score = MapStore.getTotalScore(); this.totalScore_txt.text = String(swf.score); this.menu_btn.addEventListener(MouseEvent.CLICK, backToMenu); this.submit_btn.addEventListener(MouseEvent.CLICK, submitScore); _local1 = 1; while (_local1 < 21) { _local2 = this[("lev_mc" + _local1)]; _local2.score_txt.visible = false; _local2.lev = _local1; if (_local1 <= MapStore.levelPlayed){ _local2.score_txt.selectable = (_local2.lev_txt.selectable = false); _local2.score_txt.text = (("Best Score:" + "\n") + MapStore.scorePlayed_arr[_local1]); _local2.lev_txt.text = String(_local1); _local2.addEventListener(MouseEvent.MOUSE_OVER, showLevTip); _local2.addEventListener(MouseEvent.MOUSE_OUT, closeLevTip); _local2.addEventListener(MouseEvent.MOUSE_UP, playLevel); } else { _local2.gotoAndStop(2); }; _local1++; }; } public function backToMenu(_arg1:MouseEvent):void{ clearEvent(); soundCtr.playSound("btn"); swf.showStartPage(); } private function clearEvent(){ var i:*; var thisLev_mc:*; this.menu_btn.removeEventListener(MouseEvent.CLICK, backToMenu); this.submit_btn.removeEventListener(MouseEvent.CLICK, submitScore); try { i = 1; while (i < 21) { thisLev_mc = this[("lev_mc" + i)]; thisLev_mc.removeEventListener(MouseEvent.MOUSE_OVER, showLevTip); thisLev_mc.removeEventListener(MouseEvent.MOUSE_OUT, closeLevTip); thisLev_mc.removeEventListener(MouseEvent.MOUSE_UP, playLevel); i = (i + 1); }; } catch(e:Error) { }; try { this.removeChild(this.getChildByName("sub_mc")); } catch(e:Error) { }; } private function setParent(_arg1:Event):void{ swf = (this.parent as Shift); this.removeEventListener(Event.ADDED_TO_STAGE, setParent); setTimeout(init, 200); } private function playLevel(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); swf.level = _arg1.currentTarget.lev; clearEvent(); swf.showGameMain(); } private function closeLevTip(_arg1:MouseEvent):void{ _arg1.currentTarget.score_txt.visible = false; } private function submitScore(_arg1:MouseEvent):void{ var _local2:*; var _local3:*; soundCtr.playSound("btn"); _local2 = new MovieClip(); this.addChild(_local2); _local3 = new Submit_popup(); _local3.name = "sub_mc"; _local2.addChild(_local3); } private function showLevTip(_arg1:MouseEvent):void{ this.selectFlag_mc.x = _arg1.currentTarget.x; this.selectFlag_mc.y = _arg1.currentTarget.y; if (MapStore.scorePlayed_arr[_arg1.currentTarget.lev] > 0){ _arg1.currentTarget.score_txt.visible = true; }; } } }//package menu
Section 109
//Loading (menu.Loading) package menu { import flash.display.*; import flash.events.*; public class Loading extends MovieClip { public var bar:MovieClip; private var swf:Shift; public var logo_mc:MovieClip; public function Loading(){ init(); } private function init():void{ this.addEventListener(Event.ADDED_TO_STAGE, setParent); } public function beginLoad():void{ swf.loaderInfo.addEventListener(Event.COMPLETE, loadOver); } private function loading(_arg1:ProgressEvent):void{ } private function setParent(_arg1:Event):void{ swf = (this.parent as Shift); beginLoad(); } private function loadOver(_arg1:Event):void{ swf.loadOver(); } } }//package menu
Section 110
//PassPage (menu.PassPage) package menu { import engine.*; import flash.display.*; import flash.events.*; public class PassPage extends MovieClip { public var next_btn:SimpleButton; private var GM:GameMain; public function PassPage(){ this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(_arg1:Event):void{ GM = (this.parent as GameMain); this.removeEventListener(Event.ADDED_TO_STAGE, init); this.next_btn.addEventListener(MouseEvent.CLICK, nextLevel); } private function nextLevel(_arg1:MouseEvent):void{ } public function showResult(_arg1:int):void{ } } }//package menu
Section 111
//StartPage (menu.StartPage) package menu { import flash.display.*; import flash.events.*; import sound.*; import flash.text.*; import flash.net.*; public class StartPage extends MovieClip { public var copyright_btn:SimpleButton; public var credit_btn:SimpleButton; public var data_txt:TextField; private var swf:Shift; public var link_btn:SimpleButton; public var link1_btn:SimpleButton; public var highScore_btn:SimpleButton; public var play_btn:SimpleButton; public function StartPage():void{ this.addEventListener(Event.ADDED_TO_STAGE, setParent); } private function init():void{ this.play_btn.addEventListener(MouseEvent.CLICK, playGame); this.credit_btn.addEventListener(MouseEvent.CLICK, showCredit); this.highScore_btn.addEventListener(MouseEvent.CLICK, showHighScore); this.link_btn.addEventListener(MouseEvent.CLICK, linkMainNet); this.link1_btn.addEventListener(MouseEvent.CLICK, linkMore); this.copyright_btn.addEventListener(MouseEvent.CLICK, linkCopyright); swf.customLevel_arr = new Array(); soundCtr.playSound("game"); swf.score = 0; if (swf.played){ soundCtr.playSound("btn"); }; } private function showCredit(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); clearEvent(); swf.showFail(); } private function linkMore(_arg1:MouseEvent):void{ var _local2:URLRequest; soundCtr.playSound("btn"); _local2 = new URLRequest("http://www.freeworldgroup.com/games8/gameindex/zooescape2.htm"); navigateToURL(_local2, "_blank"); } private function playGame(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); clearEvent(); swf.customLevel_arr = data_txt.text.split("|"); swf.customLevel_arr.pop(); if (swf.customLevel_arr.length > 1){ swf.showGameMain(); } else { swf.showHelpPage(); }; } private function showHighScore(_arg1:MouseEvent):void{ var _local2:URLRequest; soundCtr.playSound("btn"); _local2 = new URLRequest("http://www.freeworldgroup.com/score/index.asp?game=braintwister"); navigateToURL(_local2, "_blank"); } private function clearEvent():void{ this.play_btn.removeEventListener(MouseEvent.CLICK, playGame); this.credit_btn.removeEventListener(MouseEvent.CLICK, showCredit); this.link_btn.removeEventListener(MouseEvent.CLICK, linkMainNet); this.link1_btn.removeEventListener(MouseEvent.CLICK, linkMore); this.copyright_btn.removeEventListener(MouseEvent.CLICK, linkCopyright); } private function setParent(_arg1:Event):void{ swf = (this.parent as Shift); this.removeEventListener(Event.ADDED_TO_STAGE, setParent); init(); } private function linkMainNet(_arg1:MouseEvent):void{ var _local2:URLRequest; soundCtr.playSound("btn"); _local2 = new URLRequest("http://www.freeworldgroup.com/"); navigateToURL(_local2, "_blank"); } private function linkCopyright(_arg1:MouseEvent):void{ var _local2:URLRequest; soundCtr.playSound("btn"); _local2 = new URLRequest("http://www.freeworldgroup.com/"); navigateToURL(_local2, "_blank"); } } }//package menu
Section 112
//SuccessPage (menu.SuccessPage) package menu { import flash.display.*; import flash.events.*; import flash.net.*; public class SuccessPage extends MovieClip { public var back_btn:SimpleButton; private var swf:Shift; private var loseLife:int; public function SuccessPage(){ init(); } private function linkIndexAddress(_arg1:MouseEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.freeworldgroup.com/"); navigateToURL(_local2, "_blank"); } private function init():void{ this.addEventListener(Event.ADDED_TO_STAGE, setParent); } private function backToMenu(_arg1:MouseEvent):void{ this.back_btn.removeEventListener(MouseEvent.CLICK, backToMenu); swf.level = 1; swf.score = 0; swf.showStartPage(); } private function setParent(_arg1:Event):void{ swf = (this.parent as Shift); this.removeEventListener(Event.ADDED_TO_STAGE, setParent); this.back_btn.addEventListener(MouseEvent.CLICK, backToMenu); } } }//package menu
Section 113
//MochiAd (mochi.as3.MochiAd) package mochi.as3 { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; import flash.utils.*; public class MochiAd { public static function getVersion():String{ return ("3.02 as3"); } public static function showClickAwayAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_timeout:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var sendHostProgress:Boolean; var options = _arg1; DEFAULTS = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_timeout = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; sendHostProgress = false; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(_arg1:String):String{ var _local2:String; _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType == "application"){ return (_local2); }; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Number; var _local3:Boolean; var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; _local1 = this.parent._mochiad_ctr; _local2 = (getTimer() - this.started); _local3 = false; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local3:Object; var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; _local3 = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ trace("[MochiAd] WARNING: Using the MochiAds test identifier, make sure to use the code from your dashboard, not this example!"); }; return (_local3); } public static function _cleanup(_arg1:Object):void{ var idx:Number; var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; idx = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(_arg1:Object):MovieClip{ var DEFAULTS:Object; var clip:Object; var depth:Number; var mc:MovieClip; var wh:Array; var lv:URLVariables; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; DEFAULTS = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; depth = options.depth; delete options.depth; mc = createEmptyMovieClip(clip, "_mochiad", depth); wh = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; } else { trace("[MochiAd] NOTE: Security Sandbox Violation errors below are normal"); }; lv = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{ trace("[MochiAds] Blocked URL"); }); loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip; _local4 = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local3:Object; var _local4:Number; var _local5:Number; var _local6:Array; _local3 = _arg2.getBounds(_arg2.root); _local4 = 0; _local5 = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array; var _local4:Number; _local3 = _arg2.split("."); _local4 = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; default: trace(("[mochiads rpc] unknown rpc id: " + _arg3.id)); }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array; var _local5:Number; _local4 = _arg2.split("."); _local5 = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function showPreGameAd(_arg1:Object):void{ var DEFAULTS:Object; var clip:Object; var ad_msec:Number; var ad_timeout:Number; var fadeout_time:Number; var mc:MovieClip; var wh:Array; var w:Number; var h:Number; var chk:MovieClip; var bar:MovieClip; var bar_color:Number; var bar_background:Number; var bar_outline:Number; var backing_mc:MovieClip; var backing:Object; var inside_mc:MovieClip; var inside:Object; var outline_mc:MovieClip; var outline:Object; var complete:Boolean; var unloaded:Boolean; var f:Function; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = _arg1; DEFAULTS = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ trace("[MochiAd] Couldn't load an ad, make sure your game's local security sandbox is configured for Access Network Only and that you are not using ad blocking software"); }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; ad_msec = 11000; ad_timeout = options.ad_timeout; delete options.ad_timeout; fadeout_time = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ var fn:Function; MochiAd._cleanup(mc); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; wh = MochiAd._getRes(options, clip); w = wh[0]; h = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); bar = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = 10; bar.y = (h - 20); }; bar_color = options.color; delete options.color; bar_background = options.background; delete options.background; bar_outline = options.outline; delete options.outline; backing_mc = createEmptyMovieClip(bar, "_outline", 1); backing = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); inside_mc = createEmptyMovieClip(bar, "_inside", 2); inside = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; outline_mc = createEmptyMovieClip(bar, "_outline", 3); outline = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number; _local1 = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; f = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){ complete = true; } else { if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; } else { clip.loaderInfo.addEventListener(Event.COMPLETE, f); }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object; _local2 = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ trace(("[MOCHIAD rpcTestFn] " + _arg1)); return (_arg1); }; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var _local1:Object; var _local2:Object; var _local3:Number; var _local4:Boolean; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Object; var _local10:Number; var _local11:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; _local1 = this.parent.parent.root; _local2 = this.parent._mochiad_ctr; _local3 = (getTimer() - this.started); _local4 = false; _local5 = _local1.loaderInfo.bytesTotal; _local6 = _local1.loaderInfo.bytesLoaded; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; _local7 = ((100 * _local6) / _local5); _local8 = ((100 * _local3) / chk.ad_msec); _local9 = this._mochiad_bar._inside; _local10 = Math.min(100, Math.min(((_local7) || (0)), _local8)); _local10 = Math.max(this.last_pcnt, _local10); this.last_pcnt = _local10; _local9.scaleX = (_local10 * 0.01); options.ad_progress(_local10); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local7}); if (_local7 == 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local11 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local11 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local7 == 100)))){ options.ad_failed(); _local4 = true; }; }; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showPreloaderAd was renamed to showPreGameAd in 2.0"); MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ trace("[MochiAd] DEPRECATED: showTimedAd was renamed to showInterLevelAd in 2.0"); MochiAd.showInterLevelAd(_arg1); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var f:Function; var mc = _arg1; f = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package mochi.as3
Section 114
//ShiftSO (so.ShiftSO) package so { import flash.net.*; public class ShiftSO { private static var shift_so:SharedObject; private static var so_name:String = "shift2010"; public static function writeLevel(_arg1:int):void{ shift_so.data.LevelPlayed = _arg1; shift_so.flush(); } public static function setHighScore(_arg1:int, _arg2:int, _arg3:Boolean=false):void{ var _local4:*; _local4 = ShiftSO.getHighScore(_arg2); if ((((_local4 < _arg1)) && (!(_arg3)))){ shift_so.data[("HighScore" + _arg2)] = _arg1; shift_so.flush(); }; } public static function getHighScore(_arg1:int):int{ var _local2:*; _local2 = shift_so.data[("HighScore" + _arg1)]; if (_local2 == null){ _local2 = 0; }; return (_local2); } public static function loadSO():void{ shift_so = SharedObject.getLocal(so_name); } public static function readLevel():int{ var _local1:*; _local1 = shift_so.data.LevelPlayed; if (_local1 == null){ _local1 = 1; shift_so.data.LevelPlayed = 1; }; return (_local1); } } }//package so
Section 115
//soundCtr (sound.soundCtr) package sound { import flash.events.*; import flash.media.*; public class soundCtr { public static var walking:Boolean = false; public static var layer_snd:Sound; public static var rotate_snd:Sound; public static var btn_snd:Sound; public static var key_snd:Sound; public static var win_snd:Sound; public static var dead_snd:Sound; public static var WalkSndCh:SoundChannel; public static var game_snd1:Sound; public static var musicOff:Boolean; public static var game_snd:Sound; public static var gameSndID:int = 1; public static var soundOff:Boolean; public static var playGameS:Boolean; public static var walk_snd:Sound; public static var plat_snd2:Sound; public static var startPage_snd:Sound; public static var GameSndCh:SoundChannel; public static var plat_snd1:Sound; public static function stopAllSound():void{ SoundMixer.stopAll(); } public static function stopWalkingSound():void{ walking = false; WalkSndCh.stop(); } public static function changeGameSnd(_arg1:Event):void{ trace("changeGameSnd"); GameSndCh.removeEventListener(Event.SOUND_COMPLETE, changeGameSnd); if (gameSndID == 1){ gameSndID = 2; GameSndCh = game_snd1.play(0, 1); playGameS = true; GameSndCh.addEventListener(Event.SOUND_COMPLETE, changeGameSnd); } else { gameSndID = 1; GameSndCh = game_snd.play(0, 1); playGameS = true; GameSndCh.addEventListener(Event.SOUND_COMPLETE, changeGameSnd); }; } public static function soundInit(_arg1:Shift):void{ var _local2:*; var _local3:Class; var _local4:Class; var _local5:Class; var _local6:Class; var _local7:Class; var _local8:Class; var _local9:Class; var _local10:Class; var _local11:Class; var _local12:Class; var _local13:Class; _local2 = _arg1.loaderInfo.applicationDomain; _local3 = (_local2.getDefinition("StartPageSnd") as Class); _local4 = (_local2.getDefinition("GameSnd") as Class); _local5 = (_local2.getDefinition("WinSnd") as Class); _local6 = (_local2.getDefinition("DeadSnd") as Class); _local7 = (_local2.getDefinition("BtnSnd") as Class); _local8 = (_local2.getDefinition("GameSnd1") as Class); _local9 = (_local2.getDefinition("WalkSnd") as Class); _local10 = (_local2.getDefinition("RotateSnd") as Class); _local11 = (_local2.getDefinition("LayerSnd") as Class); _local12 = (_local2.getDefinition("PlatSnd1") as Class); _local13 = (_local2.getDefinition("KeySnd") as Class); startPage_snd = new (_local3); game_snd = new (_local4); win_snd = new (_local5); dead_snd = new (_local6); btn_snd = new (_local7); game_snd1 = new (_local8); walk_snd = new (_local9); rotate_snd = new (_local10); layer_snd = new (_local11); plat_snd1 = new (_local12); key_snd = new (_local13); soundOff = false; musicOff = false; playGameS = false; GameSndCh = new SoundChannel(); WalkSndCh = new SoundChannel(); SoundMixer.soundTransform = new SoundTransform(0.5, 0); } public static function playSound(_arg1:String, _arg2:Boolean=false):void{ if (_arg1 == "game"){ if (_arg2){ stopAllSound(); }; if (!musicOff){ trace(("playGameS: " + playGameS)); if (!playGameS){ GameSndCh = game_snd.play(0, 1); GameSndCh.addEventListener(Event.SOUND_COMPLETE, changeGameSnd); playGameS = true; }; }; } else { if (!soundOff){ if (_arg2){ stopAllSound(); }; switch (_arg1){ case "plat": if (Math.random() > 0.5){ plat_snd1.play(0, 1); } else { plat_snd1.play(0, 1); }; break; case "layer": break; case "rotate": rotate_snd.play(0, 1); break; case "walk": if (!walking){ walking = true; WalkSndCh = walk_snd.play(0, 100); }; break; case "win": win_snd.play(0, 1); break; case "dead": dead_snd.play(0, 1); break; case "key": key_snd.play(0, 1); break; case "btn": btn_snd.play(0, 1); break; }; }; }; } public static function openMusic():void{ GameSndCh.removeEventListener(Event.SOUND_COMPLETE, changeGameSnd); if (gameSndID == 1){ gameSndID = 2; GameSndCh = game_snd.play(0, 1); playGameS = true; GameSndCh.addEventListener(Event.SOUND_COMPLETE, changeGameSnd); } else { gameSndID = 1; GameSndCh = game_snd1.play(0, 1); playGameS = true; GameSndCh.addEventListener(Event.SOUND_COMPLETE, changeGameSnd); }; } public static function setSoundOff():Boolean{ if (soundOff){ soundOff = false; } else { soundOff = true; stopWalkingSound(); }; return (soundOff); } public static function setMusicOff():Boolean{ if (musicOff){ musicOff = false; } else { musicOff = true; }; return (musicOff); } public static function closeMusic():void{ GameSndCh.stop(); playGameS = false; } } }//package sound
Section 116
//MaskRect (ui.MaskRect) package ui { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.utils.*; public class MaskRect extends Sprite { public var onSetWH:Function; private var __align:String;// = "left-top" public static var wid:int = 0; public static var hei0:int; public static var hei:int = 0; public static var wid0:int; public function MaskRect(){ __align = "left-top"; super(); if ((((wid > 0)) && ((hei > 0)))){ setWH(); } else { this.addEventListener(Event.ADDED_TO_STAGE, added); }; } private function added(_arg1:Event):void{ var event = _arg1; this.removeEventListener(Event.ADDED_TO_STAGE, added); this.addEventListener(Event.REMOVED_FROM_STAGE, removed); try { getStageWH(); } catch(e:Error) { this.loaderInfo.addEventListener(Event.INIT, loadInit); }; } private function getStageWH():void{ var _local1:*; _local1 = this.getChildAt(0); wid0 = _local1.width; hei0 = _local1.height; wid = this.loaderInfo.width; hei = this.loaderInfo.height; setWH(); } public function set align(_arg1:String):void{ var _local2:*; var _local3:Rectangle; __align = _arg1; if ((((wid > 0)) && ((hei > 0)))){ _local2 = this.getChildAt(0); _local3 = _local2.getBounds(this); switch (__align.charAt(0).toLowerCase()){ case "c": case "m": _local2.x = (_local2.x + (((wid0 - wid) / 2) - _local3.x)); _local2.y = (_local2.y + (((hei0 - hei) / 2) - _local3.y)); break; case "r": case "b": _local2.x = (_local2.x + ((wid0 - wid) - _local3.x)); _local2.y = (_local2.y + ((hei0 - hei) - _local3.y)); break; default: _local2.x = (_local2.x + -(_local3.x)); _local2.y = (_local2.y + -(_local3.y)); break; }; }; } private function loadInit(_arg1:Event):void{ this.loaderInfo.removeEventListener(Event.INIT, loadInit); getStageWH(); } private function removed(_arg1:Event):void{ this.removeEventListener(Event.REMOVED_FROM_STAGE, removed); onSetWH = null; } private function setWH():void{ var _local1:*; _local1 = this.getChildAt(0); _local1.width = wid; _local1.height = hei; if (onSetWH != null){ onSetWH(wid, hei); }; if (__align){ align = __align; }; } public static function setPos(_arg1:MaskRect, _arg2:Function):void{ if ((((wid > 0)) && ((hei > 0)))){ _arg2(wid, hei); } else { _arg1.onSetWH = _arg2; }; } } }//package ui
Section 117
//Txt (ui.Txt) package ui { import flash.display.*; import flash.text.*; public class Txt extends Sprite { private var __text:String; public var txt:TextField; public function Txt(){ __text = ""; autoSize = "left"; } public function get text(){ if (txt.selectable){ __text = txt.text; }; return (__text); } public function get type():String{ return (txt.type); } public function get autoSize():String{ return (txt.autoSize); } public function get selectable():Boolean{ return (txt.selectable); } public function set text(_arg1):void{ txt.text = (__text = _arg1); } public function set type(_arg1:String):void{ txt.type = _arg1; } public function set autoSize(_arg1:String):void{ txt.autoSize = _arg1; } public function set selectable(_arg1:Boolean):void{ txt.selectable = _arg1; } public function set maxChars(_arg1:int):void{ txt.maxChars = _arg1; } public function get maxChars():int{ return (txt.maxChars); } } }//package ui
Section 118
//BackMenu_popup (BackMenu_popup) package { import flash.display.*; import flash.events.*; import flash.geom.*; import sound.*; import flash.media.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class BackMenu_popup extends MovieClip { public var yes_btn:SimpleButton; public var no_btn:SimpleButton; public var gm; public function BackMenu_popup(){ addFrameScript(12, frame13, 19, frame20); } function frame20(){ stop(); MovieClip(this.parent).removeChild(this); } public function cancelHandler(_arg1:MouseEvent):void{ soundCtr.playSound("btn"); play(); } function frame13(){ stop(); gm = MovieClip(this.parent.parent); yes_btn.addEventListener(MouseEvent.CLICK, gm.backToMenu); no_btn.addEventListener(MouseEvent.CLICK, cancelHandler); } } }//package
Section 119
//Box (Box) package { import flash.display.*; public dynamic class Box extends MovieClip { } }//package
Section 120
//BtnSnd (BtnSnd) package { import flash.media.*; public dynamic class BtnSnd extends Sound { } }//package
Section 121
//DeadSnd (DeadSnd) package { import flash.media.*; public dynamic class DeadSnd extends Sound { } }//package
Section 122
//door (door) package { import flash.display.*; public dynamic class door extends MovieClip { } }//package
Section 123
//GameSnd (GameSnd) package { import flash.media.*; public dynamic class GameSnd extends Sound { } }//package
Section 124
//GameSnd1 (GameSnd1) package { import flash.media.*; public dynamic class GameSnd1 extends Sound { } }//package
Section 125
//GroundItem (GroundItem) package { import flash.display.*; public dynamic class GroundItem extends MovieClip { } }//package
Section 126
//GroundItem1 (GroundItem1) package { import flash.display.*; public dynamic class GroundItem1 extends MovieClip { } }//package
Section 127
//Instruct (Instruct) package { import flash.display.*; public dynamic class Instruct extends MovieClip { public var child:MovieClip; public function Instruct(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 128
//key1 (key1) package { import flash.display.*; public dynamic class key1 extends MovieClip { } }//package
Section 129
//key2 (key2) package { import flash.display.*; public dynamic class key2 extends MovieClip { } }//package
Section 130
//key3 (key3) package { import flash.display.*; public dynamic class key3 extends MovieClip { } }//package
Section 131
//KeySnd (KeySnd) package { import flash.media.*; public dynamic class KeySnd extends Sound { } }//package
Section 132
//LayerSnd (LayerSnd) package { import flash.media.*; public dynamic class LayerSnd extends Sound { } }//package
Section 133
//levelComplete (levelComplete) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class levelComplete extends MovieClip { public var back_btn:SimpleButton; public var nextLevel_btn:SimpleButton; public var gm; public function levelComplete(){ addFrameScript(12, frame13, 19, frame20); } function frame20(){ stop(); MovieClip(this.parent).removeChild(this); } function frame13(){ stop(); gm = MovieClip(this.parent.parent); this.nextLevel_btn.addEventListener(MouseEvent.CLICK, gm.passLevel); this.back_btn.addEventListener(MouseEvent.CLICK, gm.backToMenu); } } }//package
Section 134
//Man_mc (Man_mc) package { import flash.display.*; public dynamic class Man_mc extends MovieClip { public var child:MovieClip; public function Man_mc(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 135
//ManPoint (ManPoint) package { import flash.display.*; public dynamic class ManPoint extends MovieClip { public var child:MovieClip; } }//package
Section 136
//MapCon (MapCon) package { import flash.display.*; public dynamic class MapCon extends MovieClip { public var layer1:MovieClip; public var layer2:MovieClip; public var map_bg:MovieClip; public var shadow_mc:Shadow; } }//package
Section 137
//pause_popup (pause_popup) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class pause_popup extends MovieClip { public var gm; public function pause_popup(){ addFrameScript(12, frame13, 19, frame20); } function frame20(){ stop(); MovieClip(this.parent).removeChild(this); } function frame13(){ stop(); gm = MovieClip(this.parent.parent); this.addEventListener(MouseEvent.CLICK, gm.pauseGame); } } }//package
Section 138
//plat1 (plat1) package { import flash.display.*; public dynamic class plat1 extends MovieClip { public function plat1(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 139
//plat2 (plat2) package { import flash.display.*; public dynamic class plat2 extends MovieClip { public function plat2(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 140
//plat3 (plat3) package { import flash.display.*; public dynamic class plat3 extends MovieClip { public function plat3(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 141
//PlatSnd1 (PlatSnd1) package { import flash.media.*; public dynamic class PlatSnd1 extends Sound { } }//package
Section 142
//PlatSnd2 (PlatSnd2) package { import flash.media.*; public dynamic class PlatSnd2 extends Sound { } }//package
Section 143
//quality_popup (quality_popup) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class quality_popup extends MovieClip { public var bar:MovieClip; public var close_btn:SimpleButton; public function quality_popup(){ addFrameScript(3, frame4, 12, frame13, 19, frame20); } public function closePop(_arg1:MouseEvent){ this.play(); } function frame20(){ stop(); MovieClip(this.parent.parent.parent).setFouces(); MovieClip(this.parent).removeChild(this); } function frame13(){ stop(); bar.addEventListener(MouseEvent.CLICK, changeQulity); close_btn.addEventListener(MouseEvent.CLICK, closePop); } function frame4(){ if (stage.quality == "HIGH"){ bar.gotoAndStop(3); } else { if (stage.quality == "LOW"){ bar.gotoAndStop(1); } else { if (stage.quality == "BEST"){ bar.gotoAndStop(4); } else { if (stage.quality == "MEDIUM"){ bar.gotoAndStop(2); }; }; }; }; } public function changeQulity(_arg1:MouseEvent){ var _local2:*; var _local3:*; var _local4:*; _local2 = bar.mouseX; _local3 = bar.mouseY; _local4 = ((_local2 / bar.width) * 100); if (_local4 > 75){ bar.gotoAndStop(4); stage.quality = "best"; } else { if (_local4 > 50){ bar.gotoAndStop(3); stage.quality = "high"; } else { if (_local4 > 25){ bar.gotoAndStop(2); stage.quality = "medium"; } else { bar.gotoAndStop(1); stage.quality = "low"; }; }; }; } } }//package
Section 144
//RotateSnd (RotateSnd) package { import flash.media.*; public dynamic class RotateSnd extends Sound { } }//package
Section 145
//Shadow (Shadow) package { import flash.display.*; public dynamic class Shadow extends MovieClip { } }//package
Section 146
//Shift (Shift) package { import engine.*; import flash.display.*; import flash.events.*; import sound.*; import so.*; import loading.*; import menu.*; public class Shift extends MovieClip { private var game_mc:GameMain; var preLoad:Loading; private var help_mc:HelpPage; public var __id0_:PrevLoader; public var level:int;// = 1 private var success_mc:SuccessPage; public var score:int;// = 0 private var start_mc:StartPage; private var page_arr:Array; public var customLevel_arr:Array; private var credit_mc:Credit; public var played;// = false private var tweenStep:int; public function Shift():void{ played = false; level = 1; score = 0; customLevel_arr = new Array(); super(); addEventListener(Event.ENTER_FRAME, waiting); __setProp___id0__Scene1__1(); } public function setFouces():void{ stage.focus = this; } private function init(){ this.stop(); page_arr = new Array(); tweenStep = 1; stage.quality = "best"; loadOver(); } private function changePage():void{ if (this.tweenStep == 1){ this.addEventListener(Event.ENTER_FRAME, loop); }; } function __setProp___id0__Scene1__1(){ try { __id0_["componentInspectorSetting"] = true; } catch(e:Error) { }; __id0_.mochi_code = "c62000f8d36dba89"; __id0_.protection = false; __id0_.skip = false; try { __id0_["componentInspectorSetting"] = false; } catch(e:Error) { }; } private function waiting(_arg1:Event):void{ if (currentFrame == 2){ init(); removeEventListener(Event.ENTER_FRAME, waiting); }; } public function showSuccess():void{ success_mc = new SuccessPage(); page_arr.push(success_mc); changePage(); } public function showStartPage():void{ start_mc = new StartPage(); page_arr.push(start_mc); changePage(); } public function showHelpPage():void{ help_mc = new HelpPage(); page_arr.push(help_mc); changePage(); } public function showFail():void{ credit_mc = new Credit(); page_arr.push(credit_mc); changePage(); } private function loop(_arg1:Event){ if (tweenStep == 1){ this.page_arr[0].alpha = (this.page_arr[0].alpha - 0.1); this.removeChild(this.page_arr[0]); this.page_arr[1].alpha = 0.1; this.addChild(this.page_arr[1]); this.page_arr.shift(); tweenStep = 2; } else { if (tweenStep == 2){ this.page_arr[0].alpha = (this.page_arr[0].alpha + 0.1); this.page_arr[0].alpha = 1; this.tweenStep = 1; this.removeEventListener(Event.ENTER_FRAME, loop); }; }; } public function loadOver():void{ var _local1:int; preLoad = null; ShiftSO.loadSO(); MapStore.levelPlayed = ShiftSO.readLevel(); _local1 = 1; while (_local1 < 21) { MapStore.scorePlayed_arr[_local1] = ShiftSO.getHighScore(_local1); _local1++; }; this.gotoAndStop("start"); soundCtr.soundInit(this); start_mc = new StartPage(); this.addChild(start_mc); page_arr.push(start_mc); } public function showGameMain():void{ game_mc = new GameMain(); page_arr.push(game_mc); changePage(); } } }//package
Section 147
//spine (spine) package { import flash.display.*; public dynamic class spine extends MovieClip { } }//package
Section 148
//StartPageSnd (StartPageSnd) package { import flash.media.*; public dynamic class StartPageSnd extends Sound { } }//package
Section 149
//Submit_popup (Submit_popup) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class Submit_popup extends MovieClip { public var score_var; public var back_btn:SimpleButton; public var fwg_game_id:String; public var viewHighScore_btn:SimpleButton; public var highscore; public var score_txt:TextField; public var downLoad_btn:SimpleButton; public var close_btn:SimpleButton; public var play200_btn:SimpleButton; public var submit_btn:SimpleButton; public var name_txt:TextField; public var gm; public var send_var:URLLoader; public function Submit_popup(){ addFrameScript(12, frame13, 14, frame15, 21, frame22); } public function viewHighScore(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.freeworldgroup.com/score/index.asp?game=braintwister"); navigateToURL(_local2, "_blank"); } public function downLoadHandle(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.ifungames.com/"); navigateToURL(_local2, "_blank"); } public function loadComplete(_arg1:Event){ gotoAndStop("done"); } public function closePop(_arg1:MouseEvent){ gotoAndPlay("close"); } function frame15(){ gm = MovieClip(this.parent.parent); trace(gm); viewHighScore_btn.addEventListener(MouseEvent.MOUSE_UP, viewHighScore); play200_btn.addEventListener(MouseEvent.MOUSE_UP, play200Handle); downLoad_btn.addEventListener(MouseEvent.MOUSE_UP, downLoadHandle); back_btn.addEventListener(MouseEvent.MOUSE_UP, gm.backToMenu); } public function sub(_arg1:MouseEvent){ var _local2:URLRequest; var _local3:URLVariables; _local2 = new URLRequest("http://www.freeworldgroup.com/score/score.asp"); _local3 = new URLVariables(); _local3.game = fwg_game_id; _local3.score = score_txt.text; _local3.name = name_txt.text; _local2.method = URLRequestMethod.POST; if (_local3.name == ""){ _local3.name = ("guest" + int((Math.random() * 1000))); }; _local2.data = _local3; send_var.load(_local2); send_var.addEventListener(Event.COMPLETE, loadComplete); gotoAndStop("sending"); } function frame13(){ stop(); submit_btn.addEventListener(MouseEvent.MOUSE_UP, sub); highscore = MovieClip(this.parent.parent.parent).score; score_txt.text = String(highscore); send_var = new URLLoader(); fwg_game_id = "braintwister"; close_btn.addEventListener(MouseEvent.CLICK, closePop); } function frame22(){ stop(); try { MovieClip(this.parent.parent).showPopUp("Win_popup"); } catch(e:Error) { }; MovieClip(this.parent).removeChild(this); } public function play200Handle(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.freeworldgroup.com/games8/gameindex/zooescape2.htm"); navigateToURL(_local2, "_blank"); } } }//package
Section 150
//Txt1 (Txt1) package { import ui.*; public dynamic class Txt1 extends Txt { } }//package
Section 151
//UnSwapable_mc (UnSwapable_mc) package { import flash.display.*; public dynamic class UnSwapable_mc extends MovieClip { public function UnSwapable_mc(){ addFrameScript(31, frame32); } function frame32(){ stop(); MovieClip(parent).removeChild(this); } } }//package
Section 152
//WalkSnd (WalkSnd) package { import flash.media.*; public dynamic class WalkSnd extends Sound { } }//package
Section 153
//Win_popup (Win_popup) package { import flash.display.*; import flash.events.*; import flash.geom.*; import flash.media.*; import flash.text.*; import flash.net.*; import flash.system.*; import flash.utils.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.ui.*; import flash.xml.*; public dynamic class Win_popup extends MovieClip { public var replay_btn:SimpleButton; public var back_btn:SimpleButton; public var highscore; public var score_txt:TextField; public var downLoad_btn:SimpleButton; public var play200_btn:SimpleButton; public var submit_btn:SimpleButton; public var gm; public function Win_popup(){ addFrameScript(7, frame8); } function frame8(){ stop(); gm = MovieClip(this.parent.parent); submit_btn.addEventListener(MouseEvent.MOUSE_UP, submitHandle); score_txt.selectable = false; highscore = MovieClip(this.parent.parent.parent).score; score_txt.text = String(highscore); play200_btn.addEventListener(MouseEvent.MOUSE_UP, play200Handle); downLoad_btn.addEventListener(MouseEvent.MOUSE_UP, downLoadHandle); back_btn.addEventListener(MouseEvent.MOUSE_UP, gm.backToMenu); replay_btn.addEventListener(MouseEvent.MOUSE_UP, replayHandle); } public function submitHandle(_arg1:MouseEvent){ MovieClip(this.parent).removeChild(this); gm.showPopUp("Submit_popup"); } public function play200Handle(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.freeworldgroup.com/games8/gameindex/zooescape2.htm"); navigateToURL(_local2, "_blank"); } public function replayHandle(_arg1:MouseEvent){ MovieClip(this.parent).removeChild(this); gm.replayLastLevel(); } public function downLoadHandle(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.ifungames.com/"); navigateToURL(_local2, "_blank"); } } }//package
Section 154
//WinSnd (WinSnd) package { import flash.media.*; public dynamic class WinSnd extends Sound { } }//package

Library Items

Symbol 1 GraphicUsed by:2 76 119 125 225
Symbol 2 MovieClip {ui.MaskRect}Uses:1Used by:29 397
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClipUses:3Used by:9 28
Symbol 5 GraphicUsed by:9 28
Symbol 6 GraphicUsed by:9 28
Symbol 7 GraphicUsed by:9 28
Symbol 8 GraphicUsed by:9 28
Symbol 9 MovieClip {framework.Logo}Uses:4 5 6 7 8Used by:15 397
Symbol 10 FontUsed by:11
Symbol 11 EditableTextUses:10Used by:12
Symbol 12 MovieClip {Txt1}Uses:11Used by:13 14 397
Symbol 13 MovieClip {loading.LoadingTxt}Uses:12Used by:15 397
Symbol 14 MovieClip {front2back_fla.loading_8}Uses:12Used by:15
Symbol 15 MovieClip {front2back_fla.loading_3}Uses:9 13 14Used by:29
Symbol 16 MovieClipUsed by:29
Symbol 17 FontUsed by:18
Symbol 18 EditableTextUses:17Used by:19
Symbol 19 MovieClipUses:18Used by:29
Symbol 20 GraphicUsed by:28
Symbol 21 GraphicUsed by:28
Symbol 22 GraphicUsed by:28
Symbol 23 GraphicUsed by:24
Symbol 24 MovieClipUses:23Used by:28
Symbol 25 GraphicUsed by:28
Symbol 26 GraphicUsed by:28
Symbol 27 GraphicUsed by:28
Symbol 28 MovieClip {front2back_fla.loading_11}Uses:5 20 21 22 8 7 6 24 4 25 26 27Used by:29
Symbol 29 MovieClip {loading.PrevLoader}Uses:2 15 16 19 28Used by:397  Timeline
Symbol 30 GraphicUsed by:31
Symbol 31 MovieClip {Box}Uses:30Used by:397
Symbol 32 GraphicUsed by:33
Symbol 33 MovieClip {key1}Uses:32Used by:397
Symbol 34 GraphicUsed by:35
Symbol 35 MovieClip {key3}Uses:34Used by:397
Symbol 36 GraphicUsed by:41
Symbol 37 GraphicUsed by:38 181 184
Symbol 38 MovieClip {GroundItem}Uses:37Used by:41 252 256 327 397
Symbol 39 GraphicUsed by:40
Symbol 40 MovieClip {GroundItem1}Uses:39Used by:41 327 397
Symbol 41 MovieClip {plat2}Uses:36 38 40Used by:397
Symbol 42 GraphicUsed by:46 50
Symbol 43 GraphicUsed by:46
Symbol 44 GraphicUsed by:46
Symbol 45 GraphicUsed by:46
Symbol 46 ButtonUses:42 43 44 45Used by:87
Symbol 47 GraphicUsed by:50
Symbol 48 GraphicUsed by:50
Symbol 49 GraphicUsed by:50
Symbol 50 ButtonUses:42 47 48 49Used by:87
Symbol 51 GraphicUsed by:53
Symbol 52 GraphicUsed by:53
Symbol 53 ButtonUses:51 52Used by:87
Symbol 54 GraphicUsed by:57 59 72
Symbol 55 FontUsed by:56 58 71 83 84 85 86
Symbol 56 TextUses:55Used by:57
Symbol 57 ButtonUses:54 56Used by:87
Symbol 58 TextUses:55Used by:59
Symbol 59 ButtonUses:54 58Used by:87
Symbol 60 GraphicUsed by:62
Symbol 61 GraphicUsed by:62
Symbol 62 ButtonUses:60 61Used by:87
Symbol 63 GraphicUsed by:64
Symbol 64 ButtonUses:63Used by:87 184
Symbol 65 GraphicUsed by:67
Symbol 66 GraphicUsed by:67
Symbol 67 ButtonUses:65 66Used by:87
Symbol 68 GraphicUsed by:70
Symbol 69 GraphicUsed by:70
Symbol 70 ButtonUses:68 69Used by:87
Symbol 71 TextUses:55Used by:72
Symbol 72 ButtonUses:54 71Used by:87
Symbol 73 GraphicUsed by:74
Symbol 74 MovieClipUses:73Used by:87
Symbol 75 GraphicUsed by:77 82 151
Symbol 76 MovieClipUses:1Used by:82
Symbol 77 MovieClipUses:75Used by:82
Symbol 78 GraphicUsed by:82
Symbol 79 GraphicUsed by:81
Symbol 80 GraphicUsed by:81
Symbol 81 MovieClip {front2back_fla.clock_mc_35}Uses:79 80Used by:82
Symbol 82 MovieClip {front2back_fla.time_mc_32}Uses:75 76 77 78 81Used by:87
Symbol 83 EditableTextUses:55Used by:87
Symbol 84 EditableTextUses:55Used by:87
Symbol 85 TextUses:55Used by:87
Symbol 86 TextUses:55Used by:87
Symbol 87 MovieClip {engine.Tool}Uses:46 50 53 57 59 62 64 67 70 72 74 82 83 84 85 86Used by:104 397
Symbol 88 GraphicUsed by:89
Symbol 89 MovieClip {key2}Uses:88Used by:397
Symbol 90 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 91 GraphicUsed by:101 140 141 144 145 222 223 224 225 381 382 383
Symbol 92 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 93 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 94 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 95 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 96 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 97 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 98 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 99 GraphicUsed by:101 140 141 144 145 222 223 225 381 382 383
Symbol 100 GraphicUsed by:101 144 145 222
Symbol 101 MovieClip {front2back_fla.Timeline_38}Uses:90 91 92 93 94 95 96 97 98 99 100Used by:102 226
Symbol 102 MovieClip {ManPoint}Uses:101Used by:397
Symbol 103 GraphicUsed by:104
Symbol 104 MovieClip {engine.GameMain}Uses:103 87Used by:397
Symbol 105 BitmapUsed by:106
Symbol 106 GraphicUses:105Used by:110
Symbol 107 GraphicUsed by:109
Symbol 108 GraphicUsed by:109
Symbol 109 ButtonUses:107 108Used by:110
Symbol 110 MovieClip {menu.Credit}Uses:106 109Used by:397  Timeline
Symbol 111 FontUsed by:112 120
Symbol 112 TextUses:111Used by:119
Symbol 113 GraphicUsed by:118
Symbol 114 FontUsed by:115 116 122 123
Symbol 115 TextUses:114Used by:118
Symbol 116 TextUses:114Used by:118
Symbol 117 SoundUsed by:118 124
Symbol 118 ButtonUses:113 115 116 117Used by:119
Symbol 119 MovieClip {menu.PassPage}Uses:1 112 118Used by:397  Timeline
Symbol 120 TextUses:111Used by:125
Symbol 121 GraphicUsed by:124
Symbol 122 TextUses:114Used by:124
Symbol 123 TextUses:114Used by:124
Symbol 124 ButtonUses:121 122 123 117Used by:125
Symbol 125 MovieClip {menu.SuccessPage}Uses:1 120 124Used by:397  Timeline
Symbol 126 GraphicUsed by:184
Symbol 127 GraphicUsed by:129 302
Symbol 128 GraphicUsed by:129 228 302
Symbol 129 MovieClipUses:127 128Used by:184
Symbol 130 GraphicUsed by:137
Symbol 131 GraphicUsed by:133 134 135 136 167 178 203 207 240 245 260 261 262 263 334 339 346 357 369 370 374 375 379
Symbol 132 GraphicUsed by:133 134 135 136 260 261 262 263
Symbol 133 MovieClipUses:131 132Used by:137
Symbol 134 MovieClipUses:131 132Used by:137
Symbol 135 MovieClipUses:131 132Used by:137
Symbol 136 MovieClipUses:131 132Used by:137
Symbol 137 MovieClipUses:130 133 134 135 136Used by:184
Symbol 138 GraphicUsed by:145
Symbol 139 GraphicUsed by:145
Symbol 140 MovieClipUses:90 91 92 93 94 95 96 97 98 99Used by:145
Symbol 141 MovieClipUses:90 91 92 93 94 95 96 97 98 99Used by:145
Symbol 142 GraphicUsed by:145
Symbol 143 GraphicUsed by:145
Symbol 144 MovieClipUses:90 91 92 93 94 95 96 97 98 99 100Used by:145
Symbol 145 MovieClipUses:138 139 90 91 92 93 94 95 96 97 98 99 140 141 100 142 143 144Used by:184
Symbol 146 GraphicUsed by:151 172 240 245 334 339
Symbol 147 GraphicUsed by:151
Symbol 148 FontUsed by:149 150 165 166 169 170 196 201 202 205 206 208 210 235 237 238 242 243 271 280 282 290 292 294 301 309 311 313 315 317 325 329 331 332 336 337 341 343 347 348 349 351 353 355 356 363 364 367 368 372 373 377 378 380
Symbol 149 TextUses:148Used by:151
Symbol 150 TextUses:148Used by:151
Symbol 151 ButtonUses:146 147 149 150 75Used by:184
Symbol 152 GraphicUsed by:153 365
Symbol 153 MovieClipUses:152Used by:184 358
Symbol 154 GraphicUsed by:163
Symbol 155 GraphicUsed by:163
Symbol 156 GraphicUsed by:163
Symbol 157 GraphicUsed by:163
Symbol 158 GraphicUsed by:163
Symbol 159 GraphicUsed by:163
Symbol 160 GraphicUsed by:163
Symbol 161 GraphicUsed by:163
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClipUses:154 155 156 157 158 159 160 161 162Used by:184
Symbol 164 GraphicUsed by:167 370
Symbol 165 TextUses:148Used by:167 370
Symbol 166 TextUses:148Used by:167 370
Symbol 167 ButtonUses:164 165 166 131Used by:184 358
Symbol 168 GraphicUsed by:172
Symbol 169 TextUses:148Used by:172
Symbol 170 TextUses:148Used by:172
Symbol 171 GraphicUsed by:172
Symbol 172 ButtonUses:146 168 169 170 171Used by:184 358
Symbol 173 FontUsed by:174
Symbol 174 EditableTextUses:173Used by:184
Symbol 175 FontUsed by:176 177 179 180 182
Symbol 176 EditableTextUses:175Used by:178
Symbol 177 EditableTextUses:175Used by:178
Symbol 178 ButtonUses:176 177 131Used by:184
Symbol 179 EditableTextUses:175Used by:181
Symbol 180 EditableTextUses:175Used by:181
Symbol 181 ButtonUses:179 180 37Used by:184
Symbol 182 EditableTextUses:175Used by:184
Symbol 183 GraphicUsed by:184 212
Symbol 184 MovieClip {menu.StartPage}Uses:126 129 137 145 151 153 163 167 172 37 174 64 178 181 182 183Used by:397  Timeline
Symbol 185 GraphicUsed by:212
Symbol 186 GraphicUsed by:188
Symbol 187 GraphicUsed by:188
Symbol 188 MovieClipUses:186 187Used by:212
Symbol 189 GraphicUsed by:212
Symbol 190 FontUsed by:191 195 265 380
Symbol 191 TextUses:190Used by:212
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClipUses:192Used by:199
Symbol 194 GraphicUsed by:199
Symbol 195 EditableTextUses:190Used by:199
Symbol 196 EditableTextUses:148Used by:199
Symbol 197 GraphicUsed by:198
Symbol 198 MovieClipUses:197Used by:199
Symbol 199 MovieClip {front2back_fla.levelItem_66}Uses:193 194 195 196 198Used by:212
Symbol 200 GraphicUsed by:203
Symbol 201 TextUses:148Used by:203
Symbol 202 TextUses:148Used by:203
Symbol 203 ButtonUses:200 201 202 131Used by:212 358
Symbol 204 GraphicUsed by:207
Symbol 205 TextUses:148Used by:207
Symbol 206 TextUses:148Used by:207
Symbol 207 ButtonUses:204 205 206 131Used by:212
Symbol 208 EditableTextUses:148Used by:212
Symbol 209 GraphicUsed by:211
Symbol 210 TextUses:148Used by:211
Symbol 211 MovieClipUses:209 210Used by:212
Symbol 212 MovieClip {menu.HelpPage}Uses:185 188 189 191 199 203 207 208 211 183Used by:397  Timeline
Symbol 213 GraphicUsed by:221
Symbol 214 GraphicUsed by:215
Symbol 215 MovieClipUses:214Used by:221
Symbol 216 GraphicUsed by:219
Symbol 217 GraphicUsed by:219
Symbol 218 GraphicUsed by:219
Symbol 219 ButtonUses:216 217 218Used by:220
Symbol 220 MovieClip {front2back_fla.games2girls_inv_74}Uses:219Used by:221
Symbol 221 MovieClip {menu.Loading}Uses:213 215 220Used by:397
Symbol 222 MovieClip {front2back_fla.Timeline_77}Uses:90 91 92 93 94 95 96 97 98 99 100Used by:226
Symbol 223 MovieClip {front2back_fla.Timeline_78}Uses:90 91 92 93 94 95 96 97 98 99Used by:226
Symbol 224 MovieClip {front2back_fla.Timeline_79}Uses:91Used by:226
Symbol 225 MovieClip {front2back_fla.Timeline_80}Uses:1 90 91 92 93 94 95 97 96 99 98Used by:226
Symbol 226 MovieClip {Man_mc}Uses:101 222 223 224 225Used by:397
Symbol 227 GraphicUsed by:228
Symbol 228 MovieClip {door}Uses:227 128Used by:397
Symbol 229 GraphicUsed by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClip {plat1}Uses:229 230Used by:397
Symbol 232 GraphicUsed by:246 319 321 322 326 340 358 384
Symbol 233 GraphicUsed by:246 322 340 358
Symbol 234 GraphicUsed by:246
Symbol 235 TextUses:148Used by:246
Symbol 236 GraphicUsed by:240
Symbol 237 TextUses:148Used by:240
Symbol 238 TextUses:148Used by:240
Symbol 239 GraphicUsed by:240
Symbol 240 ButtonUses:146 236 237 238 239 131Used by:246
Symbol 241 GraphicUsed by:245
Symbol 242 TextUses:148Used by:245
Symbol 243 TextUses:148Used by:245
Symbol 244 GraphicUsed by:245
Symbol 245 ButtonUses:146 241 242 243 244 131Used by:246
Symbol 246 MovieClip {BackMenu_popup}Uses:232 233 234 235 240 245Used by:397  Timeline
Symbol 247 GraphicUsed by:248
Symbol 248 MovieClipUses:247Used by:258
Symbol 249 GraphicUsed by:250
Symbol 250 MovieClipUses:249Used by:258
Symbol 251 GraphicUsed by:252
Symbol 252 MovieClip {front2back_fla.layer2_89}Uses:251 38Used by:258
Symbol 253 GraphicUsed by:254
Symbol 254 MovieClip {Shadow}Uses:253Used by:258 397
Symbol 255 GraphicUsed by:256
Symbol 256 MovieClip {front2back_fla.layer1_91}Uses:255 38Used by:258
Symbol 257 GraphicUsed by:258
Symbol 258 MovieClip {MapCon}Uses:248 250 252 254 256 257Used by:397
Symbol 259 GraphicUsed by:264
Symbol 260 MovieClipUses:131 132Used by:264
Symbol 261 MovieClipUses:131 132Used by:264
Symbol 262 MovieClipUses:131 132Used by:264
Symbol 263 MovieClipUses:131 132Used by:264
Symbol 264 MovieClip {spine}Uses:259 260 261 262 263Used by:397
Symbol 265 TextUses:190Used by:266
Symbol 266 MovieClip {UnSwapable_mc}Uses:265Used by:397
Symbol 267 ShapeTweeningUsed by:276
Symbol 268 GraphicUsed by:276
Symbol 269 ShapeTweeningUsed by:276
Symbol 270 FontUsed by:271 280 294 301
Symbol 271 TextUses:270 148Used by:276
Symbol 272 GraphicUsed by:276 287 297 306 384
Symbol 273 ShapeTweeningUsed by:276
Symbol 274 ShapeTweeningUsed by:276
Symbol 275 GraphicUsed by:276 297
Symbol 276 MovieClip {front2back_fla.Timeline_99}Uses:267 268 269 271 272 273 274 275Used by:307
Symbol 277 ShapeTweeningUsed by:287
Symbol 278 GraphicUsed by:287
Symbol 279 ShapeTweeningUsed by:287
Symbol 280 TextUses:270 148Used by:287
Symbol 281 GraphicUsed by:287
Symbol 282 TextUses:148Used by:287
Symbol 283 GraphicUsed by:287
Symbol 284 ShapeTweeningUsed by:287
Symbol 285 ShapeTweeningUsed by:287
Symbol 286 GraphicUsed by:287 306
Symbol 287 MovieClip {front2back_fla.Timeline_100}Uses:277 278 279 280 281 282 283 272 284 285 286Used by:307
Symbol 288 ShapeTweeningUsed by:297
Symbol 289 GraphicUsed by:297
Symbol 290 TextUses:148Used by:297
Symbol 291 GraphicUsed by:297
Symbol 292 TextUses:148Used by:297
Symbol 293 ShapeTweeningUsed by:297
Symbol 294 TextUses:270 148Used by:297
Symbol 295 ShapeTweeningUsed by:297
Symbol 296 ShapeTweeningUsed by:297
Symbol 297 MovieClip {front2back_fla.Timeline_101}Uses:288 289 290 291 292 293 294 272 295 296 275Used by:307
Symbol 298 ShapeTweeningUsed by:306
Symbol 299 GraphicUsed by:306
Symbol 300 ShapeTweeningUsed by:306
Symbol 301 TextUses:270 148Used by:306
Symbol 302 MovieClipUses:127 128Used by:306
Symbol 303 GraphicUsed by:306
Symbol 304 ShapeTweeningUsed by:306
Symbol 305 ShapeTweeningUsed by:306
Symbol 306 MovieClip {front2back_fla.Timeline_102}Uses:298 299 300 301 302 303 272 304 305 286Used by:307
Symbol 307 MovieClip {Instruct}Uses:276 287 297 306Used by:397
Symbol 308 GraphicUsed by:322
Symbol 309 TextUses:148Used by:322
Symbol 310 GraphicUsed by:319
Symbol 311 TextUses:148Used by:319
Symbol 312 GraphicUsed by:319
Symbol 313 TextUses:148Used by:319
Symbol 314 GraphicUsed by:319
Symbol 315 TextUses:148Used by:319
Symbol 316 GraphicUsed by:319
Symbol 317 TextUses:148Used by:319
Symbol 318 GraphicUsed by:319
Symbol 319 MovieClipUses:232 310 311 312 313 314 315 316 317 318Used by:322
Symbol 320 GraphicUsed by:321
Symbol 321 ButtonUses:232 320Used by:322 358
Symbol 322 MovieClip {quality_popup}Uses:232 233 308 309 319 321Used by:397  Timeline
Symbol 323 GraphicUsed by:326
Symbol 324 GraphicUsed by:326
Symbol 325 TextUses:148Used by:326
Symbol 326 MovieClip {pause_popup}Uses:232 323 324 325Used by:397  Timeline
Symbol 327 MovieClip {plat3}Uses:38 40Used by:397
Symbol 328 GraphicUsed by:340
Symbol 329 TextUses:148Used by:340
Symbol 330 GraphicUsed by:334
Symbol 331 TextUses:148Used by:334
Symbol 332 TextUses:148Used by:334
Symbol 333 GraphicUsed by:334
Symbol 334 ButtonUses:146 330 331 332 333 131Used by:340
Symbol 335 GraphicUsed by:339
Symbol 336 TextUses:148Used by:339
Symbol 337 TextUses:148Used by:339
Symbol 338 GraphicUsed by:339
Symbol 339 ButtonUses:146 335 336 337 338 131Used by:340
Symbol 340 MovieClip {levelComplete}Uses:232 233 328 329 334 339Used by:397  Timeline
Symbol 341 TextUses:148Used by:358
Symbol 342 GraphicUsed by:358
Symbol 343 TextUses:148Used by:358
Symbol 344 GraphicUsed by:346
Symbol 345 GraphicUsed by:346
Symbol 346 ButtonUses:344 345 131Used by:358
Symbol 347 EditableTextUses:148Used by:358
Symbol 348 EditableTextUses:148Used by:358
Symbol 349 EditableTextUses:148Used by:358
Symbol 350 GraphicUsed by:358
Symbol 351 TextUses:148Used by:358
Symbol 352 GraphicUsed by:358
Symbol 353 TextUses:148Used by:358
Symbol 354 GraphicUsed by:357 375
Symbol 355 TextUses:148Used by:357 375
Symbol 356 TextUses:148Used by:357 375
Symbol 357 ButtonUses:354 355 356 131Used by:358
Symbol 358 MovieClip {Submit_popup}Uses:232 233 341 342 343 346 347 348 349 321 350 351 153 352 353 172 203 357 167Used by:397  Timeline
Symbol 359 ShapeTweeningUsed by:384
Symbol 360 GraphicUsed by:384
Symbol 361 ShapeTweeningUsed by:384
Symbol 362 GraphicUsed by:384
Symbol 363 TextUses:148Used by:384
Symbol 364 TextUses:148Used by:384
Symbol 365 MovieClipUses:152Used by:384
Symbol 366 GraphicUsed by:369
Symbol 367 TextUses:148Used by:369
Symbol 368 TextUses:148Used by:369
Symbol 369 ButtonUses:366 367 368 131Used by:384
Symbol 370 ButtonUses:164 165 166 131Used by:384
Symbol 371 GraphicUsed by:374
Symbol 372 TextUses:148Used by:374
Symbol 373 TextUses:148Used by:374
Symbol 374 ButtonUses:371 372 373 131Used by:384
Symbol 375 ButtonUses:354 355 356 131Used by:384
Symbol 376 GraphicUsed by:379
Symbol 377 TextUses:148Used by:379
Symbol 378 TextUses:148Used by:379
Symbol 379 ButtonUses:376 377 378 131Used by:384
Symbol 380 EditableTextUses:148 190Used by:384
Symbol 381 MovieClipUses:90 91 92 93 94 95 96 97 98 99Used by:383
Symbol 382 MovieClipUses:90 91 92 93 94 95 96 97 98 99Used by:383
Symbol 383 MovieClipUses:381 382 90 91 92 93 94 95 96 97 98 99Used by:384
Symbol 384 MovieClip {Win_popup}Uses:232 359 360 361 362 363 364 365 369 370 374 375 379 380 272 383Used by:397  Timeline
Symbol 385 Sound {BtnSnd}Used by:397 401
Symbol 386 Sound {DeadSnd}Used by:397 401
Symbol 387 Sound {GameSnd}Used by:397 401
Symbol 388 Sound {GameSnd1}Used by:397 401
Symbol 389 Sound {KeySnd}Used by:397 401
Symbol 390 Sound {LayerSnd}Used by:397 401
Symbol 391 Sound {PlatSnd1}Used by:397 401
Symbol 392 Sound {PlatSnd2}Used by:397 401
Symbol 393 Sound {RotateSnd}Used by:397 401
Symbol 394 Sound {StartPageSnd}Used by:397 401
Symbol 395 Sound {WalkSnd}Used by:397 401
Symbol 396 Sound {WinSnd}Used by:397 401
Symbol 397 MovieClip {front2back_fla.all_mc_13}Uses:31 33 35 41 87 38 40 89 102 104 110 119 125 184 212 221 226 228 231 246 258 264 266 307 322 326 327 340 358 254 384 2 12 13 9 29 385 386 387 388 389 390 391 392 393 394 395 396Used by:Timeline
Symbol 398 GraphicUsed by:401
Symbol 399 FontUsed by:400
Symbol 400 TextUses:399Used by:401
Symbol 401 MovieClipUses:398 400 390 388 391 392 393 395 385 396 394 389 387 386Used by:Timeline

Instance Names

"__id0_"Frame 1Symbol 29 MovieClip {loading.PrevLoader}
"txt"Symbol 12 MovieClip {Txt1} Frame 1Symbol 11 EditableText
"txt"Symbol 14 MovieClip {front2back_fla.loading_8} Frame 1Symbol 12 MovieClip {Txt1}
"txt"Symbol 15 MovieClip {front2back_fla.loading_3} Frame 39Symbol 13 MovieClip {loading.LoadingTxt}
"loading_text_mc"Symbol 15 MovieClip {front2back_fla.loading_3} Frame 39Symbol 14 MovieClip {front2back_fla.loading_8}
"maskRect"Symbol 29 MovieClip {loading.PrevLoader} Frame 1Symbol 2 MovieClip {ui.MaskRect}
"mochi_container"Symbol 29 MovieClip {loading.PrevLoader} Frame 2Symbol 16 MovieClip
"b27"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b1"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b2"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b3"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b4"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b5"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b6"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b7"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b8"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b9"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b10"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b11"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b12"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b13"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b14"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b15"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b16"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b18"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b20"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b17"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b19"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b21"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b22"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b23"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b24"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b25"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"b26"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 76 MovieClip
"bar"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 77 MovieClip
"clock_mc"Symbol 82 MovieClip {front2back_fla.time_mc_32} Frame 1Symbol 81 MovieClip {front2back_fla.clock_mc_35}
"z_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 46 Button
"x_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 50 Button
"sound_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 53 Button
"menu_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 57 Button
"reset_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 59 Button
"music_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 62 Button
"link_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 64 Button
"pause_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 67 Button
"quality_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 70 Button
"walkthrough_btn"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 72 Button
"musicEnabled_mc"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 74 MovieClip
"soundEnabled_mc"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 74 MovieClip
"time_mc"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 82 MovieClip {front2back_fla.time_mc_32}
"level_txt"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 83 EditableText
"score_txt"Symbol 87 MovieClip {engine.Tool} Frame 1Symbol 84 EditableText
"child"Symbol 102 MovieClip {ManPoint} Frame 1Symbol 101 MovieClip {front2back_fla.Timeline_38}
"tool_mc"Symbol 104 MovieClip {engine.GameMain} Frame 1Symbol 87 MovieClip {engine.Tool}
"back_btn"Symbol 110 MovieClip {menu.Credit} Frame 1Symbol 109 Button
"next_btn"Symbol 119 MovieClip {menu.PassPage} Frame 1Symbol 118 Button
"back_btn"Symbol 125 MovieClip {menu.SuccessPage} Frame 1Symbol 124 Button
"play_btn"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 151 Button
"link1_btn"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 167 Button
"highScore_btn"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 172 Button
"data_txt"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 174 EditableText
"link_btn"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 64 Button
"credit_btn"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 178 Button
"copyright_btn"Symbol 184 MovieClip {menu.StartPage} Frame 1Symbol 181 Button
"bg"Symbol 199 MovieClip {front2back_fla.levelItem_66} Frame 1Symbol 193 MovieClip
"lev_txt"Symbol 199 MovieClip {front2back_fla.levelItem_66} Frame 1Symbol 195 EditableText
"score_txt"Symbol 199 MovieClip {front2back_fla.levelItem_66} Frame 1Symbol 196 EditableText
"selectFlag_mc"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 188 MovieClip
"lev_mc1"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc2"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc3"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc4"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc5"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc6"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc7"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc8"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc9"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc10"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc11"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc12"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc13"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc14"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc15"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc16"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc17"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc18"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc19"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"lev_mc20"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 199 MovieClip {front2back_fla.levelItem_66}
"menu_btn"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 203 Button
"submit_btn"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 207 Button
"totalScore_txt"Symbol 212 MovieClip {menu.HelpPage} Frame 1Symbol 208 EditableText
"games2girls_button"Symbol 220 MovieClip {front2back_fla.games2girls_inv_74} Frame 1Symbol 219 Button
"bar"Symbol 221 MovieClip {menu.Loading} Frame 1Symbol 215 MovieClip
"logo_mc"Symbol 221 MovieClip {menu.Loading} Frame 1Symbol 220 MovieClip {front2back_fla.games2girls_inv_74}
"child"Symbol 226 MovieClip {Man_mc} Frame 1Symbol 101 MovieClip {front2back_fla.Timeline_38}
"child"Symbol 226 MovieClip {Man_mc} Frame 9Symbol 222 MovieClip {front2back_fla.Timeline_77}
"child"Symbol 226 MovieClip {Man_mc} Frame 16Symbol 223 MovieClip {front2back_fla.Timeline_78}
"child"Symbol 226 MovieClip {Man_mc} Frame 23Symbol 224 MovieClip {front2back_fla.Timeline_79}
"child"Symbol 226 MovieClip {Man_mc} Frame 29Symbol 225 MovieClip {front2back_fla.Timeline_80}
"yes_btn"Symbol 246 MovieClip {BackMenu_popup} Frame 4Symbol 240 Button
"no_btn"Symbol 246 MovieClip {BackMenu_popup} Frame 4Symbol 245 Button
"g4"Symbol 252 MovieClip {front2back_fla.layer2_89} Frame 1Symbol 38 MovieClip {GroundItem}
"g2"Symbol 252 MovieClip {front2back_fla.layer2_89} Frame 1Symbol 38 MovieClip {GroundItem}
"g1"Symbol 252 MovieClip {front2back_fla.layer2_89} Frame 1Symbol 38 MovieClip {GroundItem}
"g3"Symbol 252 MovieClip {front2back_fla.layer2_89} Frame 1Symbol 38 MovieClip {GroundItem}
"g4"Symbol 256 MovieClip {front2back_fla.layer1_91} Frame 1Symbol 38 MovieClip {GroundItem}
"g1"Symbol 256 MovieClip {front2back_fla.layer1_91} Frame 1Symbol 38 MovieClip {GroundItem}
"g3"Symbol 256 MovieClip {front2back_fla.layer1_91} Frame 1Symbol 38 MovieClip {GroundItem}
"g2"Symbol 256 MovieClip {front2back_fla.layer1_91} Frame 1Symbol 38 MovieClip {GroundItem}
"point_mc"Symbol 256 MovieClip {front2back_fla.layer1_91} Frame 1Symbol 38 MovieClip {GroundItem}
"map_bg"Symbol 258 MovieClip {MapCon} Frame 1Symbol 248 MovieClip
"layer2"Symbol 258 MovieClip {MapCon} Frame 1Symbol 252 MovieClip {front2back_fla.layer2_89}
"shadow_mc"Symbol 258 MovieClip {MapCon} Frame 1Symbol 254 MovieClip {Shadow}
"layer1"Symbol 258 MovieClip {MapCon} Frame 1Symbol 256 MovieClip {front2back_fla.layer1_91}
"child"Symbol 307 MovieClip {Instruct} Frame 1Symbol 276 MovieClip {front2back_fla.Timeline_99}
"child"Symbol 307 MovieClip {Instruct} Frame 2Symbol 287 MovieClip {front2back_fla.Timeline_100}
"child"Symbol 307 MovieClip {Instruct} Frame 3Symbol 297 MovieClip {front2back_fla.Timeline_101}
"child"Symbol 307 MovieClip {Instruct} Frame 4Symbol 306 MovieClip {front2back_fla.Timeline_102}
"bar"Symbol 322 MovieClip {quality_popup} Frame 4Symbol 319 MovieClip
"close_btn"Symbol 322 MovieClip {quality_popup} Frame 4Symbol 321 Button
"nextLevel_btn"Symbol 340 MovieClip {levelComplete} Frame 4Symbol 334 Button
"back_btn"Symbol 340 MovieClip {levelComplete} Frame 4Symbol 339 Button
"submit_btn"Symbol 358 MovieClip {Submit_popup} Frame 4Symbol 346 Button
"score_txt"Symbol 358 MovieClip {Submit_popup} Frame 4Symbol 347 EditableText
"score_txt"Symbol 358 MovieClip {Submit_popup} Frame 13Symbol 348 EditableText
"name_txt"Symbol 358 MovieClip {Submit_popup} Frame 13Symbol 349 EditableText
"close_btn"Symbol 358 MovieClip {Submit_popup} Frame 13Symbol 321 Button
"viewHighScore_btn"Symbol 358 MovieClip {Submit_popup} Frame 15Symbol 172 Button
"back_btn"Symbol 358 MovieClip {Submit_popup} Frame 15Symbol 203 Button
"downLoad_btn"Symbol 358 MovieClip {Submit_popup} Frame 15Symbol 357 Button
"play200_btn"Symbol 358 MovieClip {Submit_popup} Frame 15Symbol 167 Button
"submit_btn"Symbol 384 MovieClip {Win_popup} Frame 8Symbol 369 Button
"play200_btn"Symbol 384 MovieClip {Win_popup} Frame 8Symbol 370 Button
"replay_btn"Symbol 384 MovieClip {Win_popup} Frame 8Symbol 374 Button
"downLoad_btn"Symbol 384 MovieClip {Win_popup} Frame 8Symbol 375 Button
"back_btn"Symbol 384 MovieClip {Win_popup} Frame 8Symbol 379 Button
"score_txt"Symbol 384 MovieClip {Win_popup} Frame 8Symbol 380 EditableText

Special Tags

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

Labels

"loading"Frame 2
"src"Frame 12
"start"Frame 22
"end"Symbol 222 MovieClip {front2back_fla.Timeline_77} Frame 20
"move"Symbol 226 MovieClip {Man_mc} Frame 1
"drump"Symbol 226 MovieClip {Man_mc} Frame 9
"push"Symbol 226 MovieClip {Man_mc} Frame 16
"dead"Symbol 226 MovieClip {Man_mc} Frame 23
"pass"Symbol 226 MovieClip {Man_mc} Frame 29
"sending"Symbol 358 MovieClip {Submit_popup} Frame 14
"done"Symbol 358 MovieClip {Submit_popup} Frame 15
"close"Symbol 358 MovieClip {Submit_popup} Frame 16




http://swfchan.com/25/122939/info.shtml
Created: 3/3 -2019 05:48:07 Last modified: 3/3 -2019 05:48:07 Server time: 11/05 -2024 12:22:35