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

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

ragdoll-tennis.swf

This is the info page for
Flash #180282

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


Text
GAMESFREE.COM

PRESENTS

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { b2internal var m_localPosition:b2Vec2; b2internal var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef){ m_localPosition = new b2Vec2(); super(_arg1); var _local2:b2CircleDef = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):int{ var _local10:Number; var _local6:b2Mat22 = _arg1.R; var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); var _local8:Number = (_arg1.position.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ _arg2[0] = 0; return (e_startsInsideCollide); }; var _local12:Number = (_arg4.p2.x - _arg4.p1.x); var _local13:Number = (_arg4.p2.y - _arg4.p1.y); var _local14:Number = ((_local9 * _local12) + (_local10 * _local13)); var _local15:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local16:Number = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (e_missCollide); }; var _local17:Number = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (e_hitCollide); }; return (e_missCollide); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{ var _local5:b2Vec2 = b2Math.b2MulX(_arg3, m_localPosition); var _local6:Number = -((b2Math.b2Dot(_arg1, _local5) - _arg2)); if (_local6 < (-(m_radius) + Number.MIN_VALUE)){ return (0); }; if (_local6 > m_radius){ _arg4.SetV(_local5); return (((Math.PI * m_radius) * m_radius)); }; var _local7:Number = (m_radius * m_radius); var _local8:Number = (_local6 * _local6); var _local9:Number = ((_local7 * (Math.asin((_local6 / m_radius)) + (Math.PI / 2))) + (_local6 * Math.sqrt((_local7 - _local8)))); var _local10:Number = (((-2 / 3) * Math.pow((_local7 - _local8), 1.5)) / _local9); _arg4.x = (_local5.x + (_arg1.x * _local10)); _arg4.y = (_local5.y + (_arg1.y * _local10)); return (_local9); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } override b2internal function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_localPosition.x - _arg1.x); var _local3:Number = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 3
//b2EdgeChainDef (Box2D.Collision.Shapes.b2EdgeChainDef) package Box2D.Collision.Shapes { public class b2EdgeChainDef extends b2ShapeDef { public var vertices:Array; public var vertexCount:int; public var isALoop:Boolean; public function b2EdgeChainDef(){ type = b2Shape.e_edgeShape; vertexCount = 0; isALoop = true; vertices = []; } } }//package Box2D.Collision.Shapes
Section 4
//b2EdgeShape (Box2D.Collision.Shapes.b2EdgeShape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2EdgeShape extends b2Shape { b2internal var m_v1:b2Vec2; b2internal var m_v2:b2Vec2; private var s_supportVec:b2Vec2; b2internal var m_coreV1:b2Vec2; b2internal var m_coreV2:b2Vec2; b2internal var m_prevEdge:b2EdgeShape; b2internal var m_direction:b2Vec2; b2internal var m_cornerConvex1:Boolean; b2internal var m_cornerConvex2:Boolean; b2internal var m_cornerDir1:b2Vec2; b2internal var m_cornerDir2:b2Vec2; b2internal var m_nextEdge:b2EdgeShape; b2internal var m_normal:b2Vec2; b2internal var m_length:Number; public function b2EdgeShape(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2ShapeDef){ s_supportVec = new b2Vec2(); m_v1 = new b2Vec2(); m_v2 = new b2Vec2(); m_coreV1 = new b2Vec2(); m_coreV2 = new b2Vec2(); m_normal = new b2Vec2(); m_direction = new b2Vec2(); m_cornerDir1 = new b2Vec2(); m_cornerDir2 = new b2Vec2(); super(_arg3); m_type = e_edgeShape; m_prevEdge = null; m_nextEdge = null; m_v1 = _arg1; m_v2 = _arg2; m_direction.Set((m_v2.x - m_v1.x), (m_v2.y - m_v1.y)); m_length = m_direction.Normalize(); m_normal.Set(m_direction.y, -(m_direction.x)); m_coreV1.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x - m_direction.x)) + m_v1.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y - m_direction.y)) + m_v1.y)); m_coreV2.Set(((-(b2Settings.b2_toiSlop) * (m_normal.x + m_direction.x)) + m_v2.x), ((-(b2Settings.b2_toiSlop) * (m_normal.y + m_direction.y)) + m_v2.y)); m_cornerDir1 = m_normal; m_cornerDir2.Set(-(m_normal.x), -(m_normal.y)); } b2internal function SetPrevEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_prevEdge = _arg1; m_coreV1 = _arg2; m_cornerDir1 = _arg3; m_cornerConvex1 = _arg4; } public function GetCorner2Vector():b2Vec2{ return (m_cornerDir2); } public function GetDirectionVector():b2Vec2{ return (m_direction); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_v1.x) + (_local3.col2.x * m_v1.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_v1.x) + (_local3.col2.y * m_v1.y))); var _local6:Number = (_arg2.position.x + ((_local3.col1.x * m_v2.x) + (_local3.col2.x * m_v2.y))); var _local7:Number = (_arg2.position.y + ((_local3.col1.y * m_v2.x) + (_local3.col2.y * m_v2.y))); if (_local4 < _local6){ _arg1.lowerBound.x = _local4; _arg1.upperBound.x = _local6; } else { _arg1.lowerBound.x = _local6; _arg1.upperBound.x = _local4; }; if (_local5 < _local7){ _arg1.lowerBound.y = _local5; _arg1.upperBound.y = _local7; } else { _arg1.lowerBound.y = _local7; _arg1.upperBound.y = _local5; }; } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):int{ var _local6:b2Mat22; var _local12:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local7:Number = (_arg4.p2.x - _arg4.p1.x); var _local8:Number = (_arg4.p2.y - _arg4.p1.y); _local6 = _arg1.R; var _local9:Number = (_arg1.position.x + ((_local6.col1.x * m_v1.x) + (_local6.col2.x * m_v1.y))); var _local10:Number = (_arg1.position.y + ((_local6.col1.y * m_v1.x) + (_local6.col2.y * m_v1.y))); var _local11:Number = ((_arg1.position.y + ((_local6.col1.y * m_v2.x) + (_local6.col2.y * m_v2.y))) - _local10); _local12 = -(((_arg1.position.x + ((_local6.col1.x * m_v2.x) + (_local6.col2.x * m_v2.y))) - _local9)); var _local13:Number = (100 * Number.MIN_VALUE); var _local14:Number = -(((_local7 * _local11) + (_local8 * _local12))); if (_local14 > _local13){ _local15 = (_arg4.p1.x - _local9); _local16 = (_arg4.p1.y - _local10); _local17 = ((_local15 * _local11) + (_local16 * _local12)); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local14))))){ _local18 = ((-(_local7) * _local16) + (_local8 * _local15)); if (((((-(_local13) * _local14) <= _local18)) && ((_local18 <= (_local14 * (1 + _local13)))))){ _local17 = (_local17 / _local14); _arg2[0] = _local17; _local19 = Math.sqrt(((_local11 * _local11) + (_local12 * _local12))); _arg3.x = (_local11 / _local19); _arg3.y = (_local12 / _local19); return (e_hitCollide); }; }; }; return (e_missCollide); } public function GetNextEdge():b2EdgeShape{ return (m_nextEdge); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = 0; _arg1.center.SetV(m_v1); _arg1.I = 0; } public function Corner1IsConvex():Boolean{ return (m_cornerConvex1); } public function Corner2IsConvex():Boolean{ return (m_cornerConvex2); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV1.x) + (_local4.col2.x * m_coreV1.y))); var _local6:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV1.x) + (_local4.col2.y * m_coreV1.y))); var _local7:Number = (_arg1.position.x + ((_local4.col1.x * m_coreV2.x) + (_local4.col2.x * m_coreV2.y))); var _local8:Number = (_arg1.position.y + ((_local4.col1.y * m_coreV2.x) + (_local4.col2.y * m_coreV2.y))); if (((_local5 * _arg2) + (_local6 * _arg3)) > ((_local7 * _arg2) + (_local8 * _arg3))){ s_supportVec.x = _local5; s_supportVec.y = _local6; } else { s_supportVec.x = _local7; s_supportVec.y = _local8; }; return (s_supportVec); } b2internal function SetNextEdge(_arg1:b2EdgeShape, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean):void{ m_nextEdge = _arg1; m_coreV2 = _arg2; m_cornerDir2 = _arg3; m_cornerConvex2 = _arg4; } public function GetLength():Number{ return (m_length); } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{ var _local5:b2Vec2 = new b2Vec2((_arg1.x * _arg2), (_arg1.y * _arg2)); var _local6:b2Vec2 = b2Math.b2MulX(_arg3, m_v1); var _local7:b2Vec2 = b2Math.b2MulX(_arg3, m_v2); var _local8:Number = (b2Math.b2Dot(_arg1, _local6) - _arg2); var _local9:Number = (b2Math.b2Dot(_arg1, _local7) - _arg2); if (_local8 > 0){ if (_local9 > 0){ return (0); }; _local6.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local6.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); } else { if (_local9 > 0){ _local7.x = (((-(_local9) / (_local8 - _local9)) * _local6.x) + ((_local8 / (_local8 - _local9)) * _local7.x)); _local7.y = (((-(_local9) / (_local8 - _local9)) * _local6.y) + ((_local8 / (_local8 - _local9)) * _local7.y)); }; }; _arg4.x = (((_local5.x + _local6.x) + _local7.x) / 3); _arg4.y = (((_local5.y + _local6.y) + _local7.y) / 3); return ((0.5 * (((_local6.x - _local5.x) * (_local7.y - _local5.y)) - ((_local6.y - _local5.y) * (_local7.x - _local5.x))))); } public function GetCorner1Vector():b2Vec2{ return (m_cornerDir1); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_v1.x) + (_local4.col2.x * m_v1.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_v1.x) + (_local4.col2.y * m_v1.y))); var _local7:Number = (_arg2.position.x + ((_local4.col1.x * m_v2.x) + (_local4.col2.x * m_v2.y))); var _local8:Number = (_arg2.position.y + ((_local4.col1.y * m_v2.x) + (_local4.col2.y * m_v2.y))); _local4 = _arg3.R; var _local9:Number = (_arg3.position.x + ((_local4.col1.x * m_v1.x) + (_local4.col2.x * m_v1.y))); var _local10:Number = (_arg3.position.y + ((_local4.col1.y * m_v1.x) + (_local4.col2.y * m_v1.y))); var _local11:Number = (_arg3.position.x + ((_local4.col1.x * m_v2.x) + (_local4.col2.x * m_v2.y))); var _local12:Number = (_arg3.position.y + ((_local4.col1.y * m_v2.x) + (_local4.col2.y * m_v2.y))); _arg1.lowerBound.x = ((((((_local5 < _local7)) ? _local5 : _local7 < _local9)) ? ((_local5 < _local7)) ? _local5 : _local7 : _local9 < _local11)) ? ((((_local5 < _local7)) ? _local5 : _local7 < _local9)) ? ((_local5 < _local7)) ? _local5 : _local7 : _local9 : _local11; _arg1.lowerBound.y = ((((((_local6 < _local8)) ? _local6 : _local8 < _local10)) ? ((_local6 < _local8)) ? _local6 : _local8 : _local10 < _local12)) ? ((((_local6 < _local8)) ? _local6 : _local8 < _local10)) ? ((_local6 < _local8)) ? _local6 : _local8 : _local10 : _local12; _arg1.upperBound.x = ((((((_local5 > _local7)) ? _local5 : _local7 > _local9)) ? ((_local5 > _local7)) ? _local5 : _local7 : _local9 > _local11)) ? ((((_local5 > _local7)) ? _local5 : _local7 > _local9)) ? ((_local5 > _local7)) ? _local5 : _local7 : _local9 : _local11; _arg1.upperBound.y = ((((((_local6 > _local8)) ? _local6 : _local8 > _local10)) ? ((_local6 > _local8)) ? _local6 : _local8 : _local10 > _local12)) ? ((((_local6 > _local8)) ? _local6 : _local8 > _local10)) ? ((_local6 > _local8)) ? _local6 : _local8 : _local10 : _local12; } public function GetCoreVertex1():b2Vec2{ return (m_coreV1); } public function GetCoreVertex2():b2Vec2{ return (m_coreV2); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ var _local2:b2Mat22 = _arg1.R; return (new b2Vec2((_arg1.position.x + ((_local2.col1.x * m_coreV1.x) + (_local2.col2.x * m_coreV1.y))), (_arg1.position.y + ((_local2.col1.y * m_coreV1.x) + (_local2.col2.y * m_coreV1.y))))); } public function GetNormalVector():b2Vec2{ return (m_normal); } public function GetPrevEdge():b2EdgeShape{ return (m_prevEdge); } override b2internal function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_coreV1.x - _arg1.x); var _local3:Number = (m_coreV1.y - _arg1.y); var _local4:Number = ((_local2 * _local2) + (_local3 * _local3)); _local2 = (m_coreV2.x - _arg1.x); _local3 = (m_coreV2.y - _arg1.y); var _local5:Number = ((_local2 * _local2) + (_local3 * _local3)); m_sweepRadius = Math.sqrt(((_local4 > _local5)) ? _local4 : _local5); } public function GetVertex1():b2Vec2{ return (m_v1); } public function GetVertex2():b2Vec2{ return (m_v2); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } } }//package Box2D.Collision.Shapes
Section 5
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 6
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ center = new b2Vec2(0, 0); super(); } } }//package Box2D.Collision.Shapes
Section 7
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var _local1:int; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 8
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { private var m_coreVertices:Array; b2internal var m_vertices:Array; private var s_supportVec:b2Vec2; b2internal var m_centroid:b2Vec2; b2internal var m_normals:Array; private var m_obb:b2OBB; b2internal var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local3:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; var _local2:b2PolygonDef = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; var _local4:int = _local3; var _local5:int = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{ var _local12:int; var _local22:b2Vec2; var _local23:Boolean; var _local24:b2MassData; var _local25:Number; var _local5:b2Vec2 = b2Math.b2MulTMV(_arg3.R, _arg1); var _local6:Number = (_arg2 - b2Math.b2Dot(_arg1, _arg3.position)); var _local7:Array = new Array(); var _local8:int; var _local9 = -1; var _local10 = -1; var _local11:Boolean; _local12 = 0; while (_local12 < m_vertexCount) { _local7[_local12] = (b2Math.b2Dot(_local5, m_vertices[_local12]) - _local6); _local23 = (_local7[_local12] < -(Number.MIN_VALUE)); if (_local12 > 0){ if (_local23){ if (!_local11){ _local9 = (_local12 - 1); _local8++; }; } else { if (_local11){ _local10 = (_local12 - 1); _local8++; }; }; }; _local11 = _local23; _local12++; }; switch (_local8){ case 0: if (_local11){ _local24 = new b2MassData(); ComputeMass(_local24); _arg4.SetV(b2Math.b2MulX(_arg3, _local24.center)); return ((_local24.mass / m_density)); }; return (0); case 1: if (_local9 == -1){ _local9 = (m_vertexCount - 1); } else { _local10 = (m_vertexCount - 1); }; break; }; var _local13:int = ((_local9 + 1) % m_vertexCount); var _local14:int = ((_local10 + 1) % m_vertexCount); var _local15:Number = ((0 - _local7[_local9]) / (_local7[_local13] - _local7[_local9])); var _local16:Number = ((0 - _local7[_local10]) / (_local7[_local14] - _local7[_local10])); var _local17:b2Vec2 = new b2Vec2(((m_vertices[_local9].x * (1 - _local15)) + (m_vertices[_local13].x * _local15)), ((m_vertices[_local9].y * (1 - _local15)) + (m_vertices[_local13].y * _local15))); var _local18:b2Vec2 = new b2Vec2(((m_vertices[_local10].x * (1 - _local16)) + (m_vertices[_local14].x * _local16)), ((m_vertices[_local10].y * (1 - _local16)) + (m_vertices[_local14].y * _local16))); var _local19:Number = 0; var _local20:b2Vec2 = new b2Vec2(); var _local21:b2Vec2 = m_vertices[_local13]; _local12 = _local13; while (_local12 != _local14) { _local12 = ((_local12 + 1) % m_vertexCount); if (_local12 == _local14){ _local22 = _local18; } else { _local22 = m_vertices[_local12]; }; _local25 = (0.5 * (((_local21.x - _local17.x) * (_local22.y - _local17.y)) - ((_local21.y - _local17.y) * (_local22.x - _local17.x)))); _local19 = (_local19 + _local25); _local20.x = (_local20.x + ((_local25 * ((_local17.x + _local21.x) + _local22.x)) / 3)); _local20.y = (_local20.y + ((_local25 * ((_local17.y + _local21.y) + _local22.y)) / 3)); _local21 = _local22; }; _local20.Multiply((1 / _local19)); _arg4.SetV(b2Math.b2MulX(_arg3, _local20)); return (_local19); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):int{ var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local20:Number; var _local21:Number; var _local6:Number = 0; var _local7:Number = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); var _local18 = -1; var _local19:int; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if (_local21 == 0){ if (_local20 < 0){ return (e_missCollide); }; } else { 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 (e_missCollide); }; _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 (e_hitCollide); }; _arg2[0] = 0; return (e_startsInsideCollide); } override public function ComputeMass(_arg1:b2MassData):void{ var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function GetNormals():Array{ return (m_normals); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } override b2internal function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local4:Number; var _local5:Number; m_sweepRadius = 0; var _local3:int; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } b2internal static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 9
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Shape { b2internal var m_next:b2Shape; b2internal var m_type:int; b2internal var m_sweepRadius:Number; b2internal var m_density:Number; private var m_filter:b2FilterData; b2internal var m_friction:Number; private var m_isSensor:Boolean; b2internal var m_restitution:Number; private var m_proxy:b2Proxy; private var m_userData; b2internal var m_body:b2Body; b2internal static const e_polygonShape:int = 1; public static const e_hitCollide:int = 1; public static const e_missCollide:int = 0; b2internal static const e_edgeShape:int = 2; b2internal static const e_unknownShape:int = -1; b2internal static const e_circleShape:int = 0; b2internal static const e_shapeTypeCount:int = 3; public static const e_startsInsideCollide:int = -1; 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_proxy = null; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{ return (0); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function SetRestitution(_arg1:Number):void{ m_restitution = _arg1; } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function SetSensor(_arg1:Boolean):void{ m_isSensor = _arg1; } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function SetFriction(_arg1:Number):void{ m_friction = _arg1; } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):int{ return (e_missCollide); } b2internal function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ if (m_proxy == null){ return; }; _arg1.DestroyProxy(m_proxy); var _local3:b2AABB = s_resetAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxy = _arg1.CreateProxy(_local3, this); } else { m_proxy = null; }; } public function IsSensor():Boolean{ return (m_isSensor); } public function GetUserData(){ return (m_userData); } b2internal function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ if (m_proxy == null){ return (false); }; var _local4:b2AABB = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxy, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } b2internal function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxy){ _arg1.DestroyProxy(m_proxy); m_proxy = null; }; } b2internal function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } b2internal function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB = s_proxyAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxy = _arg1.CreateProxy(_local3, this); } else { m_proxy = null; }; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } b2internal static function Destroy(_arg1:b2Shape, _arg2):void{ var _local3:b2EdgeShape; switch (_arg1.m_type){ case e_edgeShape: _local3 = (_arg1 as b2EdgeShape); if (_local3.m_nextEdge != null){ _local3.m_nextEdge.m_prevEdge = null; }; if (_local3.m_prevEdge != null){ _local3.m_prevEdge.m_nextEdge = null; }; break; }; } b2internal 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 10
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 11
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 12
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var stabbingCount:uint; public var proxy:b2Proxy; public function Swap(_arg1:b2Bound):void{ var _local2:uint = value; var _local3:b2Proxy = proxy; var _local4:uint = stabbingCount; value = _arg1.value; proxy = _arg1.proxy; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxy = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 13
//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 14
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { b2internal var m_bounds:Array; b2internal var m_quantizationFactor:b2Vec2; b2internal var m_worldAABB:b2AABB; private var m_querySortKeys:Array; private var m_freeProxy:b2Proxy; b2internal var m_proxyCount:int; b2internal var m_proxyPool:Array; private var m_queryResultCount:int; b2internal var m_pairManager:b2PairManager; private var m_timeStamp:uint; private var m_queryResults:Array; public static const b2_nullEdge:uint = 0xFFFF; public static const b2_invalid:uint = 0xFFFF; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(); m_bounds = new Array(); m_querySortKeys = new Array(); m_queryResults = new Array(); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array(); _local3++; }; var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x); var _local5:Number = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local6:uint; var _local7:uint; var _local12:b2Proxy; var _local4:Array = new Array(); var _local5:Array = new Array(); ComputeBounds(_local4, _local5, _arg1); var _local8:Array = [_local6]; var _local9:Array = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); var _local10:int; var _local11:int; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_queryResults[_local11]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < m_proxyPool.length) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local10:b2Bound; var _local12:int; var _local13:int; var _local14:b2Proxy; var _local8:uint = BinarySearch(_arg5, _arg6, _arg3); var _local9:uint = BinarySearch(_arg5, _arg6, _arg4); var _local11:uint = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxy); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = _local10.proxy; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxy); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function AddProxyResult(_arg1:b2Proxy, _arg2:Number, _arg3:Function):void{ var _local8:Number; var _local9:b2Proxy; var _local4:Number = _arg3(_arg1.userData); if (_local4 < 0){ return; }; var _local5:Number = 0; while ((((_local5 < m_queryResultCount)) && ((m_querySortKeys[_local5] < _local4)))) { _local5++; }; var _local6:Number = _local4; var _local7:b2Proxy = _arg1; m_queryResultCount = (m_queryResultCount + 1); if (m_queryResultCount > _arg2){ m_queryResultCount = _arg2; }; while (_local5 < m_queryResultCount) { _local8 = m_querySortKeys[_local5]; _local9 = m_queryResults[_local5]; m_querySortKeys[_local5] = _local6; m_queryResults[_local5] = _local7; _local6 = _local8; _local7 = _local9; _local5++; }; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number = _arg3.lowerBound.x; var _local5:Number = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):b2Proxy{ var _local3:uint; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:b2Bound; var _local17:b2Bound; var _local18:b2Bound; var _local19:b2Proxy; if (!m_freeProxy){ m_freeProxy = (m_proxyPool[m_proxyCount] = new b2Proxy()); m_freeProxy.next = null; m_freeProxy.timeStamp = 0; m_freeProxy.overlapCount = b2_invalid; m_freeProxy.userData = null; _local5 = 0; while (_local5 < 2) { _local6 = (m_proxyCount * 2); var _temp1 = _local6; _local6 = (_local6 + 1); var _local20 = _temp1; m_bounds[_local5][_local20] = new b2Bound(); m_bounds[_local5][_local6] = new b2Bound(); _local5++; }; }; _local4 = m_freeProxy; m_freeProxy = _local4.next; _local4.overlapCount = 0; _local4.userData = _arg2; var _local7:uint = (2 * m_proxyCount); var _local8:Array = new Array(); var _local9:Array = new Array(); ComputeBounds(_local8, _local9, _arg1); var _local10:int; while (_local10 < 2) { _local11 = m_bounds[_local10]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local8[_local10], _local9[_local10], _local11, _local7, _local10); _local12 = _local14[0]; _local13 = _local15[0]; _local11.splice(_local13, 0, _local11[(_local11.length - 1)]); _local11.length--; _local11.splice(_local12, 0, _local11[(_local11.length - 1)]); _local11.length--; _local13++; _local16 = _local11[_local12]; _local17 = _local11[_local13]; _local16.value = _local8[_local10]; _local16.proxy = _local4; _local17.value = _local9[_local10]; _local17.proxy = _local4; _local18 = _local11[int((_local12 - 1))]; _local16.stabbingCount = ((_local12 == 0)) ? 0 : _local18.stabbingCount; _local18 = _local11[int((_local13 - 1))]; _local17.stabbingCount = _local18.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local18 = _local11[_local3]; _local18.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local7 + 2)) { _local16 = _local11[_local3]; _local19 = _local16.proxy; if (_local16.IsLower()){ _local19.lowerBounds[_local10] = _local3; } else { _local19.upperBounds[_local10] = _local3; }; _local3++; }; _local10++; }; m_proxyCount++; _local5 = 0; while (_local5 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local4, m_queryResults[_local5]); _local5++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local4); } public function DestroyProxy(_arg1:b2Proxy):void{ var _local2:b2Bound; var _local3:b2Bound; var _local7:Array; var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:int; var _local13:uint; var _local14:int; var _local15:b2Proxy; var _local4:int = (2 * m_proxyCount); var _local5:int; while (_local5 < 2) { _local7 = m_bounds[_local5]; _local8 = _arg1.lowerBounds[_local5]; _local9 = _arg1.upperBounds[_local5]; _local2 = _local7[_local8]; _local10 = _local2.value; _local3 = _local7[_local9]; _local11 = _local3.value; _local7.splice(_local9, 1); _local7.splice(_local8, 1); _local7.push(_local2); _local7.push(_local3); _local12 = (_local4 - 2); _local13 = _local8; while (_local13 < _local12) { _local2 = _local7[_local13]; _local15 = _local2.proxy; if (_local2.IsLower()){ _local15.lowerBounds[_local5] = _local13; } else { _local15.upperBounds[_local5] = _local13; }; _local13++; }; _local12 = (_local9 - 1); _local14 = _local8; while (_local14 < _local12) { _local2 = _local7[_local14]; _local2.stabbingCount--; _local14++; }; Query([0], [0], _local10, _local11, _local7, (_local4 - 2), _local5); _local5++; }; var _local6:int; while (_local6 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local6]); _local6++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _arg1.userData = null; _arg1.overlapCount = b2_invalid; _arg1.lowerBounds[0] = b2_invalid; _arg1.lowerBounds[1] = b2_invalid; _arg1.upperBounds[0] = b2_invalid; _arg1.upperBounds[1] = b2_invalid; _arg1.next = m_freeProxy; m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:b2Proxy):void{ if (_arg1.timeStamp < m_timeStamp){ _arg1.timeStamp = m_timeStamp; _arg1.overlapCount = 1; } else { _arg1.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 QuerySegment(_arg1:b2Segment, _arg2, _arg3:int, _arg4:Function):int{ var _local15:int; var _local16:int; var _local17:b2Proxy; var _local18:uint; var _local19:uint; var _local22:int; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2Proxy; var _local27:Number; var _local28:Number; var _local5:Number = 1; var _local6:Number = ((_arg1.p2.x - _arg1.p1.x) * m_quantizationFactor.x); var _local7:Number = ((_arg1.p2.y - _arg1.p1.y) * m_quantizationFactor.y); var _local8:int = ((_local6 < -(Number.MIN_VALUE))) ? -1 : ((_local6 > Number.MIN_VALUE)) ? 1 : 0; var _local9:int = ((_local7 < -(Number.MIN_VALUE))) ? -1 : ((_local7 > Number.MIN_VALUE)) ? 1 : 0; var _local10:Number = (m_quantizationFactor.x * (_arg1.p1.x - m_worldAABB.lowerBound.x)); var _local11:Number = (m_quantizationFactor.y * (_arg1.p1.y - m_worldAABB.lowerBound.y)); var _local12:Array = new Array(); var _local13:Array = new Array(); _local12[0] = (uint(_local10) & (b2Settings.USHRT_MAX - 1)); _local12[1] = (uint(_local11) & (b2Settings.USHRT_MAX - 1)); _local13[0] = (_local12[0] + 1); _local13[1] = (_local12[1] + 1); var _local14:Array = new Array(); var _local20:Array = [_local18]; var _local21:Array = [_local19]; Query(_local20, _local21, _local12[0], _local13[0], m_bounds[0], (2 * m_proxyCount), 0); if (_local8 >= 0){ _local15 = (_local21[0] - 1); } else { _local15 = _local20[0]; }; Query(_local20, _local21, _local12[1], _local13[1], m_bounds[1], (2 * m_proxyCount), 1); if (_local9 >= 0){ _local16 = (_local21[0] - 1); } else { _local16 = _local20[0]; }; if (_arg4 != null){ _local23 = 0; while (_local23 < m_queryResultCount) { m_querySortKeys[_local23] = _arg4(m_queryResults[_local23].userData); _local23++; }; _local23 = 0; while (_local23 < (m_queryResultCount - 1)) { _local24 = m_querySortKeys[_local23]; _local25 = m_querySortKeys[(_local23 + 1)]; if (((_local24)<0) ? (_local25 >= 0) : (((_local24 > _local25)) && ((_local25 >= 0)))){ m_querySortKeys[(_local23 + 1)] = _local24; m_querySortKeys[_local23] = _local25; _local26 = m_queryResults[(_local23 + 1)]; m_queryResults[(_local23 + 1)] = m_queryResults[_local23]; m_queryResults[_local23] = _local26; --_local23; if (_local23 == -1){ _local23 = 1; }; } else { _local23++; }; }; while ((((m_queryResultCount > 0)) && ((m_querySortKeys[(m_queryResultCount - 1)] < 0)))) { m_queryResultCount--; }; }; while (true) { _local27 = 0; _local28 = 0; _local15 = (_local15 + ((_local8 >= 0)) ? 1 : -1); if ((((_local15 < 0)) || ((_local15 >= (m_proxyCount * 2))))){ break; }; if (_local8 != 0){ _local27 = ((m_bounds[0][_local15].value - _local10) / _local6); }; _local16 = (_local16 + ((_local9 >= 0)) ? 1 : -1); if ((((_local16 < 0)) || ((_local16 >= (m_proxyCount * 2))))){ break; }; if (_local9 != 0){ _local28 = ((m_bounds[1][_local16].value - _local11) / _local7); }; while (true) { if ((((_local9 == 0)) || (((!((_local8 == 0))) && ((_local27 < _local28)))))){ if (_local27 > _local5){ break; }; if (((_local8 > 0)) ? m_bounds[0][_local15].IsLower() : m_bounds[0][_local15].IsUpper()){ _local17 = m_bounds[0][_local15].proxy; if (_local9 >= 0){ if ((((_local17.lowerBounds[1] <= (_local16 - 1))) && ((_local17.upperBounds[1] >= _local16)))){ if (_arg4 != null){ AddProxyResult(_local17, _arg3, _arg4); } else { m_queryResults[m_queryResultCount] = _local17; m_queryResultCount++; }; }; } else { if ((((_local17.lowerBounds[1] <= _local16)) && ((_local17.upperBounds[1] >= (_local16 + 1))))){ if (_arg4 != null){ AddProxyResult(_local17, _arg3, _arg4); } else { m_queryResults[m_queryResultCount] = _local17; m_queryResultCount++; }; }; }; }; if (((((((!((_arg4 == null))) && ((m_queryResultCount == _arg3)))) && ((m_queryResultCount > 0)))) && ((_local27 > m_querySortKeys[(m_queryResultCount - 1)])))){ break; }; if (_local8 > 0){ _local15++; if (_local15 == (m_proxyCount * 2)){ break; }; } else { --_local15; if (_local15 < 0){ break; }; }; _local27 = ((m_bounds[0][_local15].value - _local10) / _local6); } else { if (_local28 > _local5){ break; }; if (((_local9 > 0)) ? m_bounds[1][_local16].IsLower() : m_bounds[1][_local16].IsUpper()){ _local17 = m_bounds[1][_local16].proxy; if (_local8 >= 0){ if ((((_local17.lowerBounds[0] <= (_local15 - 1))) && ((_local17.upperBounds[0] >= _local15)))){ if (_arg4 != null){ AddProxyResult(_local17, _arg3, _arg4); } else { m_queryResults[m_queryResultCount] = _local17; m_queryResultCount++; }; }; } else { if ((((_local17.lowerBounds[0] <= _local15)) && ((_local17.upperBounds[0] >= (_local15 + 1))))){ if (_arg4 != null){ AddProxyResult(_local17, _arg3, _arg4); } else { m_queryResults[m_queryResultCount] = _local17; m_queryResultCount++; }; }; }; }; if (((((((!((_arg4 == null))) && ((m_queryResultCount == _arg3)))) && ((m_queryResultCount > 0)))) && ((_local28 > m_querySortKeys[(m_queryResultCount - 1)])))){ break; }; if (_local9 > 0){ _local16++; if (_local16 == (m_proxyCount * 2)){ break; }; } else { --_local16; if (_local16 < 0){ break; }; }; _local28 = ((m_bounds[1][_local16].value - _local11) / _local7); }; }; break; }; _local22 = 0; _local23 = 0; while ((((_local23 < m_queryResultCount)) && ((_local22 < _arg3)))) { _local17 = m_queryResults[_local23]; _arg2[_local23] = _local17.userData; _local23++; _local22++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local22); } public function MoveProxy(_arg1:b2Proxy, _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 _local15:Array; var _local16:uint; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:int; var _local21:int; var _local22:b2Proxy; if (_arg1 == null){ return; }; if (_arg2.IsValid() == false){ return; }; var _local12:uint = (2 * m_proxyCount); var _local13:b2BoundValues = new b2BoundValues(); ComputeBounds(_local13.lowerValues, _local13.upperValues, _arg2); var _local14:b2BoundValues = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_arg1.lowerBounds[_local5]]; _local14.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_arg1.upperBounds[_local5]]; _local14.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local15 = m_bounds[_local5]; _local16 = _arg1.lowerBounds[_local5]; _local17 = _arg1.upperBounds[_local5]; _local18 = _local13.lowerValues[_local5]; _local19 = _local13.upperValues[_local5]; _local7 = _local15[_local16]; _local20 = (_local18 - _local7.value); _local7.value = _local18; _local7 = _local15[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; if (_local20 < 0){ _local6 = _local16; while ((((_local6 > 0)) && ((_local18 < (_local15[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local15[_local6]; _local8 = _local15[int((_local6 - 1))]; _local22 = _local8.proxy; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local13, _local22)){ m_pairManager.AddBufferedPair(_arg1, _local22); }; _local3 = _local22.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local22.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _arg1.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local15[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local15[_local6]; _local9 = _local15[int((_local6 + 1))]; _local11 = _local9.proxy; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local13, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local11); }; _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 = _arg1.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local20 > 0){ _local6 = _local16; while ((((_local6 < (_local12 - 1))) && (((_local15[int((_local6 + 1))] as b2Bound).value <= _local18)))) { _local7 = _local15[_local6]; _local9 = _local15[int((_local6 + 1))]; _local11 = _local9.proxy; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local14, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local11); }; _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 = _arg1.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local15[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local15[_local6]; _local8 = _local15[int((_local6 - 1))]; _local22 = _local8.proxy; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local14, _local22)){ m_pairManager.RemoveBufferedPair(_arg1, _local22); }; _local3 = _local22.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local22.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _arg1.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local6:int; var _local7:b2Bound; var _local4:int; var _local5:int = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 15
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); var _local35:int; var _local36:int; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (((_local28.x * _local6.v.x) + (_local28.y * _local6.v.y)) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; var _local19:b2ManifoldPoint = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 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 16
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { import Box2D.Common.*; public class b2ContactID { b2internal var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 17
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 18
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local4:Number = (100 * Number.MIN_VALUE); var _local5:int; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = (((_arg1.x - _local6.x) < 0)) ? -((_arg1.x - _local6.x)) : (_arg1.x - _local6.x); _local8 = (((_arg1.y - _local6.y) < 0)) ? -((_arg1.y - _local6.y)) : (_arg1.y - _local6.y); _local9 = ((_arg1.x < 0)) ? -(_arg1.x) : (((_arg1.x > _local6.x) < 0)) ? -(_local6.x) : (_local6.x) ? ((_arg1.x < 0)) ? -(_arg1.x) : _arg1.x : ((_local6.x < 0)) ? -(_local6.x) : _local6.x; _local10 = ((_arg1.x < 0)) ? -(_arg1.y) : (((_arg1.y > _local6.y) < 0)) ? -(_local6.y) : (_local6.y) ? ((_arg1.y < 0)) ? -(_arg1.y) : _arg1.y : ((_local6.y < 0)) ? -(_local6.y) : _local6.y; if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; var _local8:Array = s_p1s; var _local9:Array = s_p2s; var _local10:Array = s_points; var _local11:int; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); var _local12:Number = 0; var _local13 = 20; var _local14:int; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - _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 (_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 DistanceEdgeCircle(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2EdgeShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local9:b2Mat22; var _local10:b2Vec2; var _local8:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); _local9 = _arg6.R; _local10 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local9.col1.x * _local10.x) + (_local9.col2.x * _local10.y))); var _local12:Number = (_arg6.position.y + ((_local9.col1.y * _local10.x) + (_local9.col2.y * _local10.y))); _local9 = _arg4.R; var _local13:Number = (_local11 - _arg4.position.x); var _local14:Number = (_local12 - _arg4.position.y); var _local15:Number = ((_local13 * _local9.col1.x) + (_local14 * _local9.col1.y)); var _local16:Number = ((_local13 * _local9.col2.x) + (_local14 * _local9.col2.y)); var _local17:Number = (((_local15 - _arg3.m_coreV1.x) * _arg3.m_direction.x) + ((_local16 - _arg3.m_coreV1.y) * _arg3.m_direction.y)); if (_local17 <= 0){ _local9 = _arg4.R; _local10 = _arg3.m_coreV1; _arg1.x = (_arg4.position.x + ((_local9.col1.x * _local10.x) + (_local9.col2.x * _local10.y))); _arg1.y = (_arg4.position.y + ((_local9.col1.y * _local10.x) + (_local9.col2.y * _local10.y))); } else { if (_local17 >= _arg3.m_length){ _local9 = _arg4.R; _local10 = _arg3.m_coreV2; _arg1.x = (_arg4.position.x + ((_local9.col1.x * _local10.x) + (_local9.col2.x * _local10.y))); _arg1.y = (_arg4.position.y + ((_local9.col1.y * _local10.x) + (_local9.col2.y * _local10.y))); } else { _local9 = _arg4.R; _local13 = (_arg3.m_coreV1.x + (_local17 * _arg3.m_direction.x)); _local14 = (_arg3.m_coreV1.y + (_local17 * _arg3.m_direction.y)); _arg1.x = (_arg4.position.x + ((_local9.col1.x * _local13) + (_local9.col2.x * _local14))); _arg1.y = (_arg4.position.y + ((_local9.col1.y * _local13) + (_local9.col2.y * _local14))); _local17 = (((_local15 - _arg3.m_coreV1.x) * _arg3.m_normal.x) + ((_local16 - _arg3.m_coreV1.y) * _arg3.m_normal.y)); if (_local17 < 0){ if (_local17 < -(_local8)){ _local9 = _arg4.R; _local13 = (_local15 + (_local8 * _arg3.m_normal.x)); _local14 = (_local16 + (_local8 * _arg3.m_normal.y)); _arg2.x = (_arg4.position.x + ((_local9.col1.x * _local13) + (_local9.col2.x * _local14))); _arg2.y = (_arg4.position.y + ((_local9.col1.y * _local13) + (_local9.col2.y * _local14))); return ((-(_local17) - _local8)); }; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } else { if (_local17 > _local8){ _local9 = _arg4.R; _local13 = (_local15 - (_local8 * _arg3.m_normal.x)); _local14 = (_local16 - (_local8 * _arg3.m_normal.y)); _arg2.x = (_arg4.position.x + ((_local9.col1.x * _local13) + (_local9.col2.x * _local14))); _arg2.y = (_arg4.position.y + ((_local9.col1.y * _local13) + (_local9.col2.y * _local14))); return ((_local17 - _local8)); }; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; }; }; _local13 = (_local11 - _arg1.x); _local14 = (_local12 - _arg1.y); _local17 = ((_local13 * _local13) + (_local14 * _local14)); if (_local17 > (_local8 * _local8)){ _local17 = Math.sqrt(_local17); _arg2.x = (_local11 - ((_local8 * _local13) / _local17)); _arg2.y = (_local12 - ((_local8 * _local14) / _local17)); return ((_local17 - _local8)); }; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(_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 _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6)); }; if ((((_local7 == b2Shape.e_edgeShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceEdgeCircle(_arg1, _arg2, (_arg3 as b2EdgeShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_edgeShape)))){ return (DistanceEdgeCircle(_arg2, _arg1, (_arg5 as b2EdgeShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_edgeShape)))){ return (DistanceGeneric(_arg2, _arg1, _arg5, _arg6, _arg3, _arg4)); }; if ((((_local7 == b2Shape.e_edgeShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 19
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 20
//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 21
//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 22
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { public class b2Pair { public var proxy1:b2Proxy; public var proxy2:b2Proxy; public var status:uint; public var userData;// = null public var next:b2Pair; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = 0xFFFF; public static var e_pairFinal:uint = 4; public static var e_pairRemoved:uint = 2; 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 23
//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 24
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { b2internal var m_pairCount:int; private var m_callback:b2PairCallback; b2internal var m_pairs:Array; private var m_pairBufferCount:int; private var m_broadPhase:b2BroadPhase; private var m_pairBuffer:Array; private var m_freePair:b2Pair; public function b2PairManager(){ m_pairs = new Array(); m_pairBuffer = new Array(); m_pairCount = 0; m_pairBufferCount = 0; m_freePair = null; } public function RemoveBufferedPair(_arg1:b2Proxy, _arg2:b2Proxy):void{ var _local3:b2Pair = Find(_arg1, _arg2); if (_local3 == null){ return; }; if (_local3.IsBuffered() == false){ _local3.SetBuffered(); m_pairBuffer[m_pairBufferCount] = _local3; m_pairBufferCount++; }; _local3.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function Commit():void{ var _local1:int; var _local3:b2Pair; var _local4:b2Proxy; var _local5:b2Proxy; var _local2:int; _local1 = 0; while (_local1 < m_pairBufferCount) { _local3 = m_pairBuffer[_local1]; _local3.ClearBuffered(); _local4 = _local3.proxy1; _local5 = _local3.proxy2; if (_local3.IsRemoved()){ if (_local3.IsFinal() == true){ m_callback.PairRemoved(_local4.userData, _local5.userData, _local3.userData); }; m_pairBuffer[_local2] = _local3; _local2++; } else { if (_local3.IsFinal() == false){ _local3.userData = m_callback.PairAdded(_local4.userData, _local5.userData); _local3.SetFinal(); }; }; _local1++; }; _local1 = 0; while (_local1 < _local2) { _local3 = m_pairBuffer[_local1]; RemovePair(_local3.proxy1, _local3.proxy2); _local1++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } private function ValidateTable():void{ } private function Find(_arg1:b2Proxy, _arg2:b2Proxy):b2Pair{ return (_arg1.pairs[_arg2]); } public function AddBufferedPair(_arg1:b2Proxy, _arg2:b2Proxy):void{ var _local3:b2Pair = AddPair(_arg1, _arg2); if (_local3.IsBuffered() == false){ _local3.SetBuffered(); m_pairBuffer[m_pairBufferCount] = _local3; m_pairBufferCount++; }; _local3.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:b2Proxy, _arg2:b2Proxy):b2Pair{ var _local3:b2Pair = _arg1.pairs[_arg2]; if (_local3 != null){ return (_local3); }; if (m_freePair == null){ m_freePair = new b2Pair(); m_pairs.push(m_freePair); }; _local3 = m_freePair; m_freePair = _local3.next; _local3.proxy1 = _arg1; _local3.proxy2 = _arg2; _local3.status = 0; _local3.userData = null; _local3.next = null; _arg1.pairs[_arg2] = _local3; _arg2.pairs[_arg1] = _local3; m_pairCount++; return (_local3); } private function ValidateBuffer():void{ } private function RemovePair(_arg1:b2Proxy, _arg2:b2Proxy){ var _local3:b2Pair = _arg1.pairs[_arg2]; if (_local3 == null){ return (null); }; var _local4:* = _local3.userData; delete _arg1.pairs[_arg2]; delete _arg2.pairs[_arg1]; _local3.next = m_freePair; _local3.proxy1 = null; _local3.proxy2 = null; _local3.userData = null; _local3.status = 0; m_freePair = _local3; m_pairCount--; return (_local4); } } }//package Box2D.Collision
Section 25
//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 26
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { import flash.utils.*; public class b2Proxy { public var pairs:Dictionary; public var overlapCount:uint; public var next:b2Proxy; public var userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; pairs = new Dictionary(); super(); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } } }//package Box2D.Collision
Section 27
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_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); } public function Extend(_arg1:b2AABB):void{ ExtendForward(_arg1); ExtendBackward(_arg1); } public function ExtendForward(_arg1:b2AABB):void{ var _local4:Number; var _local2:Number = (p2.x - p1.x); var _local3:Number = (p2.y - p1.y); _local4 = Math.min(((_local2 > 0)) ? ((_arg1.upperBound.x - p1.x) / _local2) : ((_local2 < 0)) ? ((_arg1.lowerBound.x - p1.x) / _local2) : Number.POSITIVE_INFINITY, ((_local3 > 0)) ? ((_arg1.upperBound.y - p1.y) / _local3) : ((_local3 < 0)) ? ((_arg1.lowerBound.y - p1.y) / _local3) : Number.POSITIVE_INFINITY); p2.x = (p1.x + (_local2 * _local4)); p2.y = (p1.y + (_local3 * _local4)); } public function ExtendBackward(_arg1:b2AABB):void{ var _local4:Number; var _local2:Number = (-(p2.x) + p1.x); var _local3:Number = (-(p2.y) + p1.y); _local4 = Math.min(((_local2 > 0)) ? ((_arg1.upperBound.x - p2.x) / _local2) : ((_local2 < 0)) ? ((_arg1.lowerBound.x - p2.x) / _local2) : Number.POSITIVE_INFINITY, ((_local3 > 0)) ? ((_arg1.upperBound.y - p2.y) / _local3) : ((_local3 < 0)) ? ((_arg1.lowerBound.y - p2.y) / _local3) : Number.POSITIVE_INFINITY); p1.x = (p2.x + (_local2 * _local4)); p1.y = (p2.y + (_local3 * _local4)); } } }//package Box2D.Collision
Section 28
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 29
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 30
//Features (Box2D.Collision.Features) package Box2D.Collision { import Box2D.Common.*; public class Features { b2internal var _referenceEdge:int; b2internal var _incidentEdge:int; b2internal var _flip:int; b2internal var _incidentVertex:int; b2internal var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 31
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function GetInverse(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local4:Number; var _local6:Number; _local2 = col1.x; var _local3:Number = col2.x; _local4 = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 32
//b2Mat33 (Box2D.Common.Math.b2Mat33) package Box2D.Common.Math { public class b2Mat33 { public var col1:b2Vec3; public var col2:b2Vec3; public var col3:b2Vec3; public function b2Mat33(_arg1:b2Vec3=null, _arg2:b2Vec3=null, _arg3:b2Vec3=null){ col1 = new b2Vec3(); col2 = new b2Vec3(); col3 = new b2Vec3(); super(); if (((((!(_arg1)) && (!(_arg2)))) && (!(_arg3)))){ col1.SetZero(); col2.SetZero(); col3.SetZero(); } else { col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 1; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 1; } public function Solve22(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; _local4 = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public function SetZero():void{ col1.x = 0; col2.x = 0; col3.x = 0; col1.y = 0; col2.y = 0; col3.y = 0; col1.z = 0; col2.z = 0; col3.z = 0; } public function SetM(_arg1:b2Mat33):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); col3.SetV(_arg1.col3); } public function AddM(_arg1:b2Mat33):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col1.z = (col1.z + _arg1.col1.z); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); col2.z = (col2.z + _arg1.col2.z); col3.x = (col3.x + _arg1.col3.x); col3.y = (col3.y + _arg1.col3.y); col3.z = (col3.z + _arg1.col3.z); } public function SetVVV(_arg1:b2Vec3, _arg2:b2Vec3, _arg3:b2Vec3):void{ col1.SetV(_arg1); col2.SetV(_arg2); col3.SetV(_arg3); } public function Copy():b2Mat33{ return (new b2Mat33(col1, col2, col3)); } public function Solve33(_arg1:b2Vec3, _arg2:Number, _arg3:Number, _arg4:Number):b2Vec3{ var _local5:Number = col1.x; var _local6:Number = col1.y; var _local7:Number = col1.z; var _local8:Number = col2.x; var _local9:Number = col2.y; var _local10:Number = col2.z; var _local11:Number = col3.x; var _local12:Number = col3.y; var _local13:Number = col3.z; var _local14:Number = (((_local5 * ((_local9 * _local13) - (_local10 * _local12))) + (_local6 * ((_local10 * _local11) - (_local8 * _local13)))) + (_local7 * ((_local8 * _local12) - (_local9 * _local11)))); _local14 = (1 / _local14); _arg1.x = (_local14 * (((_arg2 * ((_local9 * _local13) - (_local10 * _local12))) + (_arg3 * ((_local10 * _local11) - (_local8 * _local13)))) + (_arg4 * ((_local8 * _local12) - (_local9 * _local11))))); _arg1.y = (_local14 * (((_local5 * ((_arg3 * _local13) - (_arg4 * _local12))) + (_local6 * ((_arg4 * _local11) - (_arg2 * _local13)))) + (_local7 * ((_arg2 * _local12) - (_arg3 * _local11))))); _arg1.z = (_local14 * (((_local5 * ((_local9 * _arg4) - (_local10 * _arg3))) + (_local6 * ((_local10 * _arg2) - (_local8 * _arg4)))) + (_local7 * ((_local8 * _arg3) - (_local9 * _arg2))))); return (_arg1); } } }//package Box2D.Common.Math
Section 33
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 34
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var a0:Number; public var c0:b2Vec2; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; var _local3:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 35
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 36
//b2Vec3 (Box2D.Common.Math.b2Vec3) package Box2D.Common.Math { public class b2Vec3 { public var x:Number; public var y:Number; public var z:Number; public function b2Vec3(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function Add(_arg1:b2Vec3):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); z = (z * _arg1); } public function SetZero():void{ x = (y = (z = 0)); } public function SetV(_arg1:b2Vec3):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; } public function Negative():b2Vec3{ return (new b2Vec3(-(x), -(y), -(z))); } public function Subtract(_arg1:b2Vec3):void{ x = (x - _arg1.x); y = (y - _arg1.y); z = (z - _arg1.z); } public function Copy():b2Vec3{ return (new b2Vec3(x, y, z)); } } }//package Box2D.Common.Math
Section 37
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 38
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function get color():uint{ return ((((_r << 16) | (_g << 8)) | _b)); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 39
//b2internal (Box2D.Common.b2internal) package Box2D.Common { public namespace b2internal = "http://www.box2d.org/ns/b2internal"; }//package Box2D.Common
Section 40
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_maxLinearVelocity:Number = 200; public static const b2_pi:Number = 3.14159265358979; 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_maxLinearVelocitySquared:Number = 40000; public static const b2_maxTOIJointsPerIsland:int = 32; 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_maxTOIContactsPerIsland:int = 32; 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 b2_timeToSleep:Number = 0.5; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const VERSION:String = "2.0.2"; public static function b2MixFriction(_arg1:Number, _arg2:Number):Number{ return (Math.sqrt((_arg1 * _arg2))); } public static function b2MixRestitution(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 41
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override b2internal function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); var _local7:b2ContactPoint = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = b2Settings.b2MixFriction(m_shape1.GetFriction(), m_shape2.GetFriction()); _local7.restitution = b2Settings.b2MixRestitution(m_shape1.GetRestitution(), m_shape2.GetRestitution()); if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 42
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { b2internal var m_shape1:b2Shape; b2internal var m_shape2:b2Shape; b2internal var m_prev:b2Contact; b2internal var m_toi:Number; b2internal var m_next:b2Contact; b2internal var m_manifoldCount:int; b2internal var m_node1:b2ContactEdge; b2internal var m_node2:b2ContactEdge; b2internal var m_flags:uint; b2internal static var e_toiFlag:uint = 8; b2internal static var e_nonSolidFlag:uint = 1; b2internal static var e_slowFlag:uint = 2; b2internal static var e_islandFlag:uint = 4; b2internal static var s_registers:Array; b2internal 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_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } b2internal function Update(_arg1:b2ContactListener):void{ var _local2:int = m_manifoldCount; Evaluate(_arg1); var _local3:int = m_manifoldCount; var _local4:b2Body = m_shape1.m_body; var _local5:b2Body = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } b2internal function Evaluate(_arg1:b2ContactListener):void{ } b2internal static function InitializeRegisters():void{ var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); AddType(b2EdgeAndCircleContact.Create, b2EdgeAndCircleContact.Destroy, b2Shape.e_edgeShape, b2Shape.e_circleShape); AddType(b2PolyAndEdgeContact.Create, b2PolyAndEdgeContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_edgeShape); } b2internal static function Destroy(_arg1:b2Contact, _arg2):void{ if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; var _local3:int = _arg1.m_shape1.m_type; var _local4:int = _arg1.m_shape2.m_type; var _local5:b2ContactRegister = s_registers[_local3][_local4]; var _local6:Function = _local5.destroyFcn; _local6(_arg1, _arg2); } b2internal 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; }; } b2internal static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var K:b2Mat22; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction:Number; public var normalMass:b2Mat22; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); normalMass = new b2Mat22(); K = new b2Mat22(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 44
//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 normalImpulse:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var equalizedMass:Number; public var tangentMass:Number; 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 45
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 46
//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 47
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { private var m_constraintCount:int; b2internal var m_constraints:Array; private var m_allocator; private var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local10:b2Shape; var _local11:b2Shape; var _local12:b2Body; var _local13:b2Body; var _local14:int; var _local15:Array; 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:int; var _local25:b2Manifold; var _local26:Number; var _local27:Number; var _local28:b2ContactConstraint; var _local29:uint; var _local30:b2ManifoldPoint; var _local31:b2ContactConstraintPoint; 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; var _local48:b2ContactConstraintPoint; var _local49:b2ContactConstraintPoint; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local58:Number; var _local59:Number; var _local60:Number; var _local61:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.positionIterations = _arg1.positionIterations; m_step.velocityIterations = _arg1.velocityIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; var _local9:int; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1; _local11 = _local5.m_shape2; _local12 = _local10.m_body; _local13 = _local11.m_body; _local14 = _local5.m_manifoldCount; _local15 = _local5.GetManifolds(); _local16 = b2Settings.b2MixFriction(_local10.GetFriction(), _local11.GetFriction()); _local17 = b2Settings.b2MixRestitution(_local10.GetRestitution(), _local11.GetRestitution()); _local18 = _local12.m_linearVelocity.x; _local19 = _local12.m_linearVelocity.y; _local20 = _local13.m_linearVelocity.x; _local21 = _local13.m_linearVelocity.y; _local22 = _local12.m_angularVelocity; _local23 = _local13.m_angularVelocity; _local24 = 0; while (_local24 < _local14) { _local25 = _local15[_local24]; _local26 = _local25.normal.x; _local27 = _local25.normal.y; _local28 = m_constraints[_local9]; _local28.body1 = _local12; _local28.body2 = _local13; _local28.manifold = _local25; _local28.normal.x = _local26; _local28.normal.y = _local27; _local28.pointCount = _local25.pointCount; _local28.friction = _local16; _local28.restitution = _local17; _local29 = 0; while (_local29 < _local28.pointCount) { _local30 = _local25.points[_local29]; _local31 = _local28.points[_local29]; _local31.normalImpulse = _local30.normalImpulse; _local31.tangentImpulse = _local30.tangentImpulse; _local31.separation = _local30.separation; _local31.localAnchor1.SetV(_local30.localPoint1); _local31.localAnchor2.SetV(_local30.localPoint2); _local8 = _local12.m_xf.R; _local34 = (_local30.localPoint1.x - _local12.m_sweep.localCenter.x); _local35 = (_local30.localPoint1.y - _local12.m_sweep.localCenter.y); _local32 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local32; _local31.r1.Set(_local34, _local35); _local8 = _local13.m_xf.R; _local36 = (_local30.localPoint2.x - _local13.m_sweep.localCenter.x); _local37 = (_local30.localPoint2.y - _local13.m_sweep.localCenter.y); _local32 = ((_local8.col1.x * _local36) + (_local8.col2.x * _local37)); _local37 = ((_local8.col1.y * _local36) + (_local8.col2.y * _local37)); _local36 = _local32; _local31.r2.Set(_local36, _local37); _local38 = ((_local34 * _local27) - (_local35 * _local26)); _local39 = ((_local36 * _local27) - (_local37 * _local26)); _local38 = (_local38 * _local38); _local39 = (_local39 * _local39); _local40 = (((_local12.m_invMass + _local13.m_invMass) + (_local12.m_invI * _local38)) + (_local13.m_invI * _local39)); _local31.normalMass = (1 / _local40); _local41 = ((_local12.m_mass * _local12.m_invMass) + (_local13.m_mass * _local13.m_invMass)); _local41 = (_local41 + (((_local12.m_mass * _local12.m_invI) * _local38) + ((_local13.m_mass * _local13.m_invI) * _local39))); _local31.equalizedMass = (1 / _local41); _local42 = _local27; _local43 = -(_local26); _local44 = ((_local34 * _local43) - (_local35 * _local42)); _local45 = ((_local36 * _local43) - (_local37 * _local42)); _local44 = (_local44 * _local44); _local45 = (_local45 * _local45); _local46 = (((_local12.m_invMass + _local13.m_invMass) + (_local12.m_invI * _local44)) + (_local13.m_invI * _local45)); _local31.tangentMass = (1 / _local46); _local31.velocityBias = 0; if (_local31.separation > 0){ _local31.velocityBias = (-60 * _local31.separation); } else { _local32 = (((_local20 + (-(_local23) * _local37)) - _local18) - (-(_local22) * _local35)); _local33 = (((_local21 + (_local23 * _local36)) - _local19) - (_local22 * _local34)); _local47 = ((_local28.normal.x * _local32) + (_local28.normal.y * _local33)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local31.velocityBias = (_local31.velocityBias + (-(_local28.restitution) * _local47)); }; }; _local29++; }; if (_local28.pointCount == 2){ _local48 = _local28.points[0]; _local49 = _local28.points[1]; _local50 = _local12.m_invMass; _local51 = _local12.m_invI; _local52 = _local13.m_invMass; _local53 = _local13.m_invI; _local54 = ((_local48.r1.x * _local27) - (_local48.r1.y * _local26)); _local55 = ((_local48.r2.x * _local27) - (_local48.r2.y * _local26)); _local56 = ((_local49.r1.x * _local27) - (_local49.r1.y * _local26)); _local57 = ((_local49.r2.x * _local27) - (_local49.r2.y * _local26)); _local58 = (((_local50 + _local52) + ((_local51 * _local54) * _local54)) + ((_local53 * _local55) * _local55)); _local59 = (((_local50 + _local52) + ((_local51 * _local56) * _local56)) + ((_local53 * _local57) * _local57)); _local60 = (((_local50 + _local52) + ((_local51 * _local54) * _local56)) + ((_local53 * _local55) * _local57)); _local61 = 100; if ((_local58 * _local58) < (_local61 * ((_local58 * _local59) - (_local60 * _local60)))){ _local28.K.col1.Set(_local58, _local60); _local28.K.col2.Set(_local60, _local59); _local28.K.GetInverse(_local28.normalMass); } else { _local28.pointCount = 1; }; }; _local9++; _local24++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local3:b2Mat22; var _local4:b2Vec2; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local2:Number = 0; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = (_local35 * _local17); _local37 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local36)); _local9.y = (_local9.y - (_local13 * _local37)); _local10 = (_local10 - (_local14 * ((_local22 * _local37) - (_local23 * _local36)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local36)); _local11.y = (_local11.y + (_local15 * _local37)); _local12 = (_local12 + (_local16 * ((_local24 * _local37) - (_local25 * _local36)))); _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:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:b2Mat22; var _local24:b2Vec2; var _local26:b2ContactConstraint; var _local27:b2Body; var _local28:b2Body; var _local29:Number; var _local30:Number; var _local31:b2Vec2; var _local32:b2Vec2; 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:int; var _local44:Number; var _local45:b2ContactConstraintPoint; var _local46:b2ContactConstraintPoint; var _local47:Number; var _local48:Number; var _local49:Number; var _local50:Number; var _local51:Number; var _local52:Number; var _local53:Number; var _local54:Number; var _local55:Number; var _local56:Number; var _local57:Number; var _local58:Number; var _local59:Number; var _local25:int; while (_local25 < m_constraintCount) { _local26 = m_constraints[_local25]; _local27 = _local26.body1; _local28 = _local26.body2; _local29 = _local27.m_angularVelocity; _local30 = _local28.m_angularVelocity; _local31 = _local27.m_linearVelocity; _local32 = _local28.m_linearVelocity; _local33 = _local27.m_invMass; _local34 = _local27.m_invI; _local35 = _local28.m_invMass; _local36 = _local28.m_invI; _local37 = _local26.normal.x; _local38 = _local26.normal.y; _local39 = _local38; _local40 = -(_local37); _local41 = _local26.friction; _local43 = _local26.pointCount; if (_local26.pointCount == 1){ _local2 = _local26.points[0]; _local7 = (((_local32.x + (-(_local30) * _local2.r2.y)) - _local31.x) - (-(_local29) * _local2.r1.y)); _local8 = (((_local32.y + (_local30 * _local2.r2.x)) - _local31.y) - (_local29 * _local2.r1.x)); _local9 = ((_local7 * _local37) + (_local8 * _local38)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local39) + (_local8 * _local40)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local44 = (_local41 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local44), _local44); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local37) + (_local12 * _local39)); _local16 = ((_local11 * _local38) + (_local12 * _local40)); _local31.x = (_local31.x - (_local33 * _local15)); _local31.y = (_local31.y - (_local33 * _local16)); _local29 = (_local29 - (_local34 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local32.x = (_local32.x + (_local35 * _local15)); _local32.y = (_local32.y + (_local35 * _local16)); _local30 = (_local30 + (_local36 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; } else { _local45 = _local26.points[0]; _local46 = _local26.points[1]; _local47 = _local45.normalImpulse; _local48 = _local46.normalImpulse; _local49 = (((_local32.x - (_local30 * _local45.r2.y)) - _local31.x) + (_local29 * _local45.r1.y)); _local50 = (((_local32.y + (_local30 * _local45.r2.x)) - _local31.y) - (_local29 * _local45.r1.x)); _local51 = (((_local32.x - (_local30 * _local46.r2.y)) - _local31.x) + (_local29 * _local46.r1.y)); _local52 = (((_local32.y + (_local30 * _local46.r2.x)) - _local31.y) - (_local29 * _local46.r1.x)); _local53 = ((_local49 * _local37) + (_local50 * _local38)); _local54 = ((_local51 * _local37) + (_local52 * _local38)); _local55 = (_local53 - _local45.velocityBias); _local56 = (_local54 - _local46.velocityBias); _local23 = _local26.K; _local55 = (_local55 - ((_local23.col1.x * _local47) + (_local23.col2.x * _local48))); _local56 = (_local56 - ((_local23.col1.y * _local47) + (_local23.col2.y * _local48))); _local57 = 0.001; while (true) { _local23 = _local26.normalMass; _local58 = -(((_local23.col1.x * _local55) + (_local23.col2.x * _local56))); _local59 = -(((_local23.col1.y * _local55) + (_local23.col2.y * _local56))); if ((((_local58 >= 0)) && ((_local59 >= 0)))){ _local17 = (_local58 - _local47); _local18 = (_local59 - _local48); _local19 = (_local17 * _local37); _local20 = (_local17 * _local38); _local21 = (_local18 * _local37); _local22 = (_local18 * _local38); _local31.x = (_local31.x - (_local33 * (_local19 + _local21))); _local31.y = (_local31.y - (_local33 * (_local20 + _local22))); _local29 = (_local29 - (_local34 * ((((_local45.r1.x * _local20) - (_local45.r1.y * _local19)) + (_local46.r1.x * _local22)) - (_local46.r1.y * _local21)))); _local32.x = (_local32.x + (_local35 * (_local19 + _local21))); _local32.y = (_local32.y + (_local35 * (_local20 + _local22))); _local30 = (_local30 + (_local36 * ((((_local45.r2.x * _local20) - (_local45.r2.y * _local19)) + (_local46.r2.x * _local22)) - (_local46.r2.y * _local21)))); _local45.normalImpulse = _local58; _local46.normalImpulse = _local59; break; }; _local58 = (-(_local45.normalMass) * _local55); _local59 = 0; _local53 = 0; _local54 = ((_local26.K.col1.y * _local58) + _local56); if ((((_local58 >= 0)) && ((_local54 >= 0)))){ _local17 = (_local58 - _local47); _local18 = (_local59 - _local48); _local19 = (_local17 * _local37); _local20 = (_local17 * _local38); _local21 = (_local18 * _local37); _local22 = (_local18 * _local38); _local31.x = (_local31.x - (_local33 * (_local19 + _local21))); _local31.y = (_local31.y - (_local33 * (_local20 + _local22))); _local29 = (_local29 - (_local34 * ((((_local45.r1.x * _local20) - (_local45.r1.y * _local19)) + (_local46.r1.x * _local22)) - (_local46.r1.y * _local21)))); _local32.x = (_local32.x + (_local35 * (_local19 + _local21))); _local32.y = (_local32.y + (_local35 * (_local20 + _local22))); _local30 = (_local30 + (_local36 * ((((_local45.r2.x * _local20) - (_local45.r2.y * _local19)) + (_local46.r2.x * _local22)) - (_local46.r2.y * _local21)))); _local45.normalImpulse = _local58; _local46.normalImpulse = _local59; break; }; _local58 = 0; _local59 = (-(_local46.normalMass) * _local56); _local53 = ((_local26.K.col2.x * _local59) + _local55); _local54 = 0; if ((((_local59 >= 0)) && ((_local53 >= 0)))){ _local17 = (_local58 - _local47); _local18 = (_local59 - _local48); _local19 = (_local17 * _local37); _local20 = (_local17 * _local38); _local21 = (_local18 * _local37); _local22 = (_local18 * _local38); _local31.x = (_local31.x - (_local33 * (_local19 + _local21))); _local31.y = (_local31.y - (_local33 * (_local20 + _local22))); _local29 = (_local29 - (_local34 * ((((_local45.r1.x * _local20) - (_local45.r1.y * _local19)) + (_local46.r1.x * _local22)) - (_local46.r1.y * _local21)))); _local32.x = (_local32.x + (_local35 * (_local19 + _local21))); _local32.y = (_local32.y + (_local35 * (_local20 + _local22))); _local30 = (_local30 + (_local36 * ((((_local45.r2.x * _local20) - (_local45.r2.y * _local19)) + (_local46.r2.x * _local22)) - (_local46.r2.y * _local21)))); _local45.normalImpulse = _local58; _local46.normalImpulse = _local59; break; }; _local58 = 0; _local59 = 0; _local53 = _local55; _local54 = _local56; if ((((_local53 >= 0)) && ((_local54 >= 0)))){ _local17 = (_local58 - _local47); _local18 = (_local59 - _local48); _local19 = (_local17 * _local37); _local20 = (_local17 * _local38); _local21 = (_local18 * _local37); _local22 = (_local18 * _local38); _local31.x = (_local31.x - (_local33 * (_local19 + _local21))); _local31.y = (_local31.y - (_local33 * (_local20 + _local22))); _local29 = (_local29 - (_local34 * ((((_local45.r1.x * _local20) - (_local45.r1.y * _local19)) + (_local46.r1.x * _local22)) - (_local46.r1.y * _local21)))); _local32.x = (_local32.x + (_local35 * (_local19 + _local21))); _local32.y = (_local32.y + (_local35 * (_local20 + _local22))); _local30 = (_local30 + (_local36 * ((((_local45.r2.x * _local20) - (_local45.r2.y * _local19)) + (_local46.r2.x * _local22)) - (_local46.r2.y * _local21)))); _local45.normalImpulse = _local58; _local46.normalImpulse = _local59; break; }; break; }; _local1 = 0; while (_local1 < _local26.pointCount) { _local2 = _local26.points[_local1]; _local7 = (((_local32.x - (_local30 * _local2.r2.y)) - _local31.x) + (_local29 * _local2.r1.y)); _local8 = (((_local32.y + (_local30 * _local2.r2.x)) - _local31.y) - (_local29 * _local2.r1.x)); _local10 = ((_local7 * _local39) + (_local8 * _local40)); _local12 = (_local2.tangentMass * -(_local10)); _local44 = (_local41 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local44), _local44); _local12 = (_local14 - _local2.tangentImpulse); _local15 = (_local12 * _local39); _local16 = (_local12 * _local40); _local31.x = (_local31.x - (_local33 * _local15)); _local31.y = (_local31.y - (_local33 * _local16)); _local29 = (_local29 - (_local34 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local32.x = (_local32.x + (_local35 * _local15)); _local32.y = (_local32.y + (_local35 * _local16)); _local30 = (_local30 + (_local36 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.tangentImpulse = _local14; _local1++; }; }; _local27.m_angularVelocity = _local29; _local28.m_angularVelocity = _local30; _local25++; }; } public function FinalizeVelocityConstraints():void{ var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 49
//b2EdgeAndCircleContact (Box2D.Dynamics.Contacts.b2EdgeAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2EdgeAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2EdgeAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override b2internal function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2CollideEdgeAndCircle(m_manifold, (m_shape1 as b2EdgeShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); var _local7:b2ContactPoint = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = b2Settings.b2MixFriction(m_shape1.GetFriction(), m_shape2.GetFriction()); _local7.restitution = b2Settings.b2MixRestitution(m_shape1.GetRestitution(), m_shape2.GetRestitution()); 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); }; }; } private function b2CollideEdgeAndCircle(_arg1:b2Manifold, _arg2:b2EdgeShape, _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:b2ManifoldPoint; var _local21:Number; var _local24:Number; _arg1.pointCount = 0; _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local14:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg3.R; _local10 = (_local13 - _arg3.position.x); _local11 = (_local14 - _arg3.position.y); var _local15:Number = ((_local10 * _local6.col1.x) + (_local11 * _local6.col1.y)); var _local16:Number = ((_local10 * _local6.col2.x) + (_local11 * _local6.col2.y)); var _local17:b2Vec2 = _arg2.m_normal; var _local18:b2Vec2 = _arg2.m_v1; var _local19:b2Vec2 = _arg2.m_v2; var _local20:Number = _arg4.m_radius; var _local22:Number = (((_local15 - _local18.x) * _arg2.m_direction.x) + ((_local16 - _local18.y) * _arg2.m_direction.y)); var _local23:Boolean; if (_local22 <= 0){ _local8 = (_local15 - _local18.x); _local9 = (_local16 - _local18.y); if (((_local8 * _arg2.m_cornerDir1.x) + (_local9 * _arg2.m_cornerDir1.y)) < 0){ return; }; _local8 = (_local13 - (_arg3.position.x + ((_local6.col1.x * _local18.x) + (_local6.col2.x * _local18.y)))); _local9 = (_local14 - (_arg3.position.y + ((_local6.col1.y * _local18.x) + (_local6.col2.y * _local18.y)))); } else { if (_local22 >= _arg2.m_length){ _local8 = (_local15 - _local19.x); _local9 = (_local16 - _local19.y); if (((_local8 * _arg2.m_cornerDir2.x) + (_local9 * _arg2.m_cornerDir2.y)) > 0){ return; }; _local8 = (_local13 - (_arg3.position.x + ((_local6.col1.x * _local19.x) + (_local6.col2.x * _local19.y)))); _local9 = (_local14 - (_arg3.position.y + ((_local6.col1.y * _local19.x) + (_local6.col2.y * _local19.y)))); } else { _local21 = (((_local15 - _local18.x) * _local17.x) + ((_local16 - _local18.y) * _local17.y)); if ((((_local21 > _local20)) || ((_local21 < -(_local20))))){ return; }; _local21 = (_local21 - _local20); _local6 = _arg3.R; _arg1.normal.x = ((_local6.col1.x * _local17.x) + (_local6.col2.x * _local17.y)); _arg1.normal.y = ((_local6.col1.y * _local17.x) + (_local6.col2.y * _local17.y)); _local23 = true; }; }; if (!_local23){ _local24 = ((_local8 * _local8) + (_local9 * _local9)); if (_local24 > (_local20 * _local20)){ return; }; if (_local24 < Number.MIN_VALUE){ _local21 = -(_local20); _arg1.normal.x = ((_local6.col1.x * _local17.x) + (_local6.col2.x * _local17.y)); _arg1.normal.y = ((_local6.col1.y * _local17.x) + (_local6.col2.y * _local17.y)); } else { _local24 = Math.sqrt(_local24); _local8 = (_local8 / _local24); _local9 = (_local9 / _local24); _local21 = (_local24 - _local20); _arg1.normal.x = _local8; _arg1.normal.y = _local9; }; }; _local12 = _arg1.points[0]; _arg1.pointCount = 1; _local12.id.key = 0; _local12.separation = _local21; _local13 = (_local13 - (_local20 * _arg1.normal.x)); _local14 = (_local14 - (_local20 * _arg1.normal.y)); _local10 = (_local13 - _arg3.position.x); _local11 = (_local14 - _arg3.position.y); _local12.localPoint1.x = ((_local10 * _local6.col1.x) + (_local11 * _local6.col1.y)); _local12.localPoint1.y = ((_local10 * _local6.col2.x) + (_local11 * _local6.col2.y)); _local6 = _arg5.R; _local10 = (_local13 - _arg5.position.x); _local11 = (_local14 - _arg5.position.y); _local12.localPoint2.x = ((_local10 * _local6.col1.x) + (_local11 * _local6.col1.y)); _local12.localPoint2.y = ((_local10 * _local6.col2.x) + (_local11 * _local6.col2.y)); } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2EdgeAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 50
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Common.*; public class b2NullContact extends b2Contact { override b2internal function Evaluate(_arg1:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 51
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; } override b2internal function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = b2Settings.b2MixFriction(m_shape1.GetFriction(), m_shape2.GetFriction()); _local9.restitution = b2Settings.b2MixRestitution(m_shape1.GetRestitution(), m_shape2.GetRestitution()); if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 52
//b2PolyAndEdgeContact (Box2D.Dynamics.Contacts.b2PolyAndEdgeContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndEdgeContact extends b2Contact { private var m_manifolds:Array; private var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndEdgeContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_edgeShape)); m_manifold.pointCount = 0; } override b2internal function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2CollidePolyAndEdge(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2EdgeShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = b2Settings.b2MixFriction(m_shape1.GetFriction(), m_shape2.GetFriction()); _local9.restitution = b2Settings.b2MixRestitution(m_shape1.GetRestitution(), m_shape2.GetRestitution()); 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++; }; } private function b2CollidePolyAndEdge(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2EdgeShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:b2ManifoldPoint; var _local12:Number; var _local25:Number; var _local28:Number; var _local48:Number; _arg1.pointCount = 0; _local6 = _arg5.R; _local7 = _arg4.m_v1; var _local13:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local14:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local7 = _arg4.m_v2; var _local15:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local16:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local7 = _arg4.m_normal; var _local17:Number = ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)); var _local18:Number = ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)); _local6 = _arg3.R; _local9 = (_local13 - _arg3.position.x); _local10 = (_local14 - _arg3.position.y); var _local19:Number = ((_local9 * _local6.col1.x) + (_local10 * _local6.col1.y)); var _local20:Number = ((_local9 * _local6.col2.x) + (_local10 * _local6.col2.y)); _local9 = (_local15 - _arg3.position.x); _local10 = (_local16 - _arg3.position.y); var _local21:Number = ((_local9 * _local6.col1.x) + (_local10 * _local6.col1.y)); var _local22:Number = ((_local9 * _local6.col2.x) + (_local10 * _local6.col2.y)); var _local23:Number = ((_local17 * _local6.col1.x) + (_local18 * _local6.col1.y)); var _local24:Number = ((_local17 * _local6.col2.x) + (_local18 * _local6.col2.y)); var _local26 = -1; var _local27:Number = -(Number.MAX_VALUE); var _local29 = -1; var _local30:Number = -(Number.MAX_VALUE); var _local31:Number = -(Number.MAX_VALUE); var _local32:Boolean; var _local33 = -1; var _local34:int = _arg2.m_vertexCount; var _local35:Array = _arg2.m_vertices; var _local36:Array = _arg2.m_normals; var _local37 = -1; var _local38 = -1; var _local39 = -1; var _local40 = -1; var _local41:Number = 0; var _local42:Number = 0; var _local43:Number = 0; var _local44:Number = 0; var _local45:Number = Number.MAX_VALUE; _local7 = _local35[(_local34 - 1)]; _local41 = (((_local7.x - _local19) * _local23) + ((_local7.y - _local20) * _local24)); var _local46:int; while (_local46 < _local34) { _local7 = _local35[_local46]; _local8 = _local36[_local46]; _local25 = (((_local19 - _local7.x) * _local8.x) + ((_local20 - _local7.y) * _local8.y)); _local28 = (((_local21 - _local7.x) * _local8.x) + ((_local22 - _local7.y) * _local8.y)); if (_local28 < _local25){ if (_local28 > _local31){ _local31 = _local28; _local32 = false; _local33 = _local46; }; } else { if (_local25 > _local31){ _local31 = _local25; _local32 = true; _local33 = _local46; }; }; if (_local25 > _local27){ _local27 = _local25; _local26 = _local46; }; if (_local28 > _local30){ _local30 = _local28; _local29 = _local46; }; _local42 = (((_local7.x - _local19) * _local23) + ((_local7.y - _local20) * _local24)); if ((((_local42 >= 0)) && ((_local41 < 0)))){ _local39 = ((_local46)==0) ? (_local34 - 1) : (_local46 - 1); _local40 = _local46; _local44 = _local41; } else { if ((((_local42 < 0)) && ((_local41 >= 0)))){ _local37 = ((_local46)==0) ? (_local34 - 1) : (_local46 - 1); _local38 = _local46; _local43 = _local42; }; }; if (_local42 < _local45){ _local45 = _local42; }; _local41 = _local42; _local46++; }; if (_local37 == -1){ return; }; if (_local31 > 0){ return; }; if (((((_local32) && (_arg4.m_cornerConvex1))) || (((!(_local32)) && (_arg4.m_cornerConvex2))))){ if (_local31 > (_local45 + b2Settings.b2_linearSlop)){ if (_local32){ _local6 = _arg5.R; _local7 = _arg4.m_cornerDir1; _local9 = ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)); _local10 = ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)); _local6 = _arg3.R; _local13 = ((_local6.col1.x * _local9) + (_local6.col2.x * _local10)); _local14 = ((_local6.col1.y * _local9) + (_local6.col2.y * _local10)); _local8 = _local36[_local26]; if (((_local8.x * _local13) + (_local8.y * _local14)) >= 0){ return; }; } else { _local6 = _arg5.R; _local7 = _arg4.m_cornerDir2; _local9 = ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)); _local10 = ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)); _local6 = _arg3.R; _local13 = ((_local6.col1.x * _local9) + (_local6.col2.x * _local10)); _local14 = ((_local6.col1.y * _local9) + (_local6.col2.y * _local10)); _local8 = _local36[_local29]; if (((_local8.x * _local13) + (_local8.y * _local14)) <= 0){ return; }; }; _local11 = _arg1.points[0]; _arg1.pointCount = 1; _local6 = _arg3.R; _local8 = _local36[_local33]; _arg1.normal.x = ((_local6.col1.x * _local8.x) + (_local6.col2.x * _local8.y)); _arg1.normal.y = ((_local6.col1.y * _local8.x) + (_local6.col2.y * _local8.y)); _local11.separation = _local31; _local11.id.features.incidentEdge = _local33; _local11.id.features.incidentVertex = b2Collision.b2_nullFeature; _local11.id.features.referenceEdge = 0; _local11.id.features.flip = 0; if (_local32){ _local11.localPoint1.x = _local19; _local11.localPoint1.y = _local20; _local11.localPoint2.x = _arg4.m_v1.x; _local11.localPoint2.y = _arg4.m_v1.y; } else { _local11.localPoint1.x = _local21; _local11.localPoint1.y = _local22; _local11.localPoint2.x = _arg4.m_v2.x; _local11.localPoint2.y = _arg4.m_v2.y; }; return; }; }; _arg1.normal.x = -(_local17); _arg1.normal.y = -(_local18); if (_local38 == _local39){ _local11 = _arg1.points[0]; _arg1.pointCount = 1; _local11.id.features.incidentEdge = _local38; _local11.id.features.incidentVertex = b2Collision.b2_nullFeature; _local11.id.features.referenceEdge = 0; _local11.id.features.flip = 0; _local7 = _local35[_local38]; _local11.localPoint1.x = _local7.x; _local11.localPoint1.y = _local7.y; _local6 = _arg3.R; _local9 = ((_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))) - _arg5.position.x); _local10 = ((_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))) - _arg5.position.y); _local6 = _arg5.R; _local11.localPoint2.x = ((_local9 * _local6.col1.x) + (_local10 * _local6.col1.y)); _local11.localPoint2.y = ((_local9 * _local6.col2.x) + (_local10 * _local6.col2.y)); _local11.separation = _local43; return; }; _arg1.pointCount = 2; _local9 = -(_local24); _local10 = _local23; _local7 = _local35[_local38]; var _local47:Number = ((_local9 * (_local7.x - _local19)) + (_local10 * (_local7.y - _local20))); _local40 = ((_local38)==(_local34 - 1)) ? 0 : (_local38 + 1); _local7 = _local35[_local39]; if (_local40 != _local39){ _local39 = _local40; _local44 = ((_local23 * (_local7.x - _local19)) + (_local24 * (_local7.y - _local20))); }; _local48 = ((_local9 * (_local7.x - _local19)) + (_local10 * (_local7.y - _local20))); _local11 = _arg1.points[0]; _local11.id.features.incidentEdge = _local38; _local11.id.features.incidentVertex = b2Collision.b2_nullFeature; _local11.id.features.referenceEdge = 0; _local11.id.features.flip = 0; if (_local47 > _arg4.m_length){ _local11.localPoint1.x = _local21; _local11.localPoint1.y = _local22; _local11.localPoint2.x = _arg4.m_v2.x; _local11.localPoint2.y = _arg4.m_v2.y; _local12 = ((_arg4.m_length - _local48) / (_local47 - _local48)); if ((((_local12 > (100 * Number.MIN_VALUE))) && ((_local12 < 1)))){ _local11.separation = ((_local44 * (1 - _local12)) + (_local43 * _local12)); } else { _local11.separation = _local43; }; } else { _local7 = _local35[_local38]; _local11.localPoint1.x = _local7.x; _local11.localPoint1.y = _local7.y; _local6 = _arg3.R; _local9 = ((_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))) - _arg5.position.x); _local10 = ((_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))) - _arg5.position.y); _local6 = _arg5.R; _local11.localPoint2.x = ((_local9 * _local6.col1.x) + (_local10 * _local6.col1.y)); _local11.localPoint2.y = ((_local9 * _local6.col2.x) + (_local10 * _local6.col2.y)); _local11.separation = _local43; }; _local11 = _arg1.points[1]; _local11.id.features.incidentEdge = _local39; _local11.id.features.incidentVertex = b2Collision.b2_nullFeature; _local11.id.features.referenceEdge = 0; _local11.id.features.flip = 0; if (_local48 < 0){ _local11.localPoint1.x = _local19; _local11.localPoint1.y = _local20; _local11.localPoint2.x = _arg4.m_v1.x; _local11.localPoint2.y = _arg4.m_v1.y; _local12 = (-(_local47) / (_local48 - _local47)); if ((((_local12 > (100 * Number.MIN_VALUE))) && ((_local12 < 1)))){ _local11.separation = ((_local43 * (1 - _local12)) + (_local44 * _local12)); } else { _local11.separation = _local44; }; } else { _local7 = _local35[_local39]; _local11.localPoint1.x = _local7.x; _local11.localPoint1.y = _local7.y; _local6 = _arg3.R; _local9 = ((_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))) - _arg5.position.x); _local10 = ((_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))) - _arg5.position.y); _local6 = _arg5.R; _local11.localPoint2.x = ((_local9 * _local6.col1.x) + (_local10 * _local6.col1.y)); _local11.localPoint2.y = ((_local9 * _local6.col2.x) + (_local10 * _local6.col2.y)); _local11.separation = _local44; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndEdgeContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 53
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; private 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 b2internal function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local7:b2ContactPoint; var _local8:int; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); var _local9:Array = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = b2Settings.b2MixFriction(m_shape1.GetFriction(), m_shape2.GetFriction()); _local7.restitution = b2Settings.b2MixRestitution(m_shape1.GetRestitution(), m_shape2.GetRestitution()); if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 54
//b2Controller (Box2D.Dynamics.Controllers.b2Controller) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; import Box2D.Common.*; public class b2Controller { b2internal var m_world:b2World; b2internal var m_prev:b2Controller; b2internal var m_next:b2Controller; protected var m_bodyList:b2ControllerEdge; protected var m_bodyCount:int; public function AddBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge = new b2ControllerEdge(); _local2.controller = this; _local2.body = _arg1; _local2.nextBody = m_bodyList; _local2.prevBody = null; m_bodyList = _local2; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2; }; m_bodyCount++; _local2.nextController = _arg1.m_controllerList; _local2.prevController = null; _arg1.m_controllerList = _local2; if (_local2.nextController){ _local2.nextController.prevController = _local2; }; _arg1.m_controllerCount++; } public function Draw(_arg1:b2DebugDraw):void{ } public function RemoveBody(_arg1:b2Body):void{ var _local2:b2ControllerEdge; while (((_local2) && (!((_local2.controller == this))))) { _local2 = _local2.nextController; }; if (_local2.prevBody){ _local2.prevBody.nextBody = _local2.nextBody; }; if (_local2.nextBody){ _local2.nextBody.prevBody = _local2.prevBody; }; if (_local2.nextController){ _local2.nextController.prevController = _local2.prevController; }; if (_local2.prevController){ _local2.prevController.nextController = _local2.nextController; }; if (m_bodyList == _local2){ m_bodyList = _local2.nextBody; }; if (_arg1.m_controllerList == _local2){ _arg1.m_controllerList = _local2.nextController; }; _arg1.m_controllerCount--; m_bodyCount--; } public function GetNext():b2Controller{ return (m_next); } public function Clear():void{ while (m_bodyList) { RemoveBody(m_bodyList.body); }; } public function Step(_arg1:b2TimeStep):void{ } public function GetBodyList():b2ControllerEdge{ return (m_bodyList); } public function GetWorld():b2World{ return (m_world); } } }//package Box2D.Dynamics.Controllers
Section 55
//b2ControllerEdge (Box2D.Dynamics.Controllers.b2ControllerEdge) package Box2D.Dynamics.Controllers { import Box2D.Dynamics.*; public class b2ControllerEdge { public var body:b2Body; public var nextBody:b2ControllerEdge; public var nextController:b2ControllerEdge; public var prevBody:b2ControllerEdge; public var prevController:b2ControllerEdge; public var controller:b2Controller; } }//package Box2D.Dynamics.Controllers
Section 56
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_bias:Number; private var m_gamma:Number; private var m_u:b2Vec2; private var m_mass:Number; private var m_impulse:Number; private var m_dampingRatio:Number; private var m_frequencyHz:Number; private 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; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override b2internal 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 _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _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); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u.x), ((_arg1 * m_impulse) * m_u.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (((_local4.m_sweep.c.x + _local8) - _local3.m_sweep.c.x) - _local5); var _local11:Number = (((_local4.m_sweep.c.y + _local9) - _local3.m_sweep.c.y) - _local6); var _local12:Number = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local12); _local11 = (_local11 / _local12); var _local13:Number = (_local12 - m_length); _local13 = b2Math.b2Clamp(_local13, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local14:Number = (-(m_mass) * _local13); m_u.Set(_local10, _local11); var _local15:Number = (_local14 * m_u.x); var _local16:Number = (_local14 * m_u.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local5 * _local16) - (_local6 * _local15)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local15)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local16)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((b2Math.b2Abs(_local13) < b2Settings.b2_linearSlop)); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 57
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 58
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { private var m_ground2:b2Body; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_ratio:Number; private var m_revolute2:b2RevoluteJoint; private var m_mass:Number; private var m_impulse:Number; private var m_prismatic2:b2PrismaticJoint; private var m_ground1:b2Body; private var m_revolute1:b2RevoluteJoint; private var m_prismatic1:b2PrismaticJoint; private var m_constant:Number; private var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_impulse = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * m_impulse) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * m_impulse) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * m_impulse) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * m_impulse) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * m_impulse) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * m_impulse) * m_J.angular2)); } else { m_impulse = 0; }; } override public function GetReactionTorque(_arg1:Number):Number{ var _local2:b2Mat22 = m_body2.m_xf.R; var _local3:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var _local4:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var _local5:Number = ((_local2.col1.x * _local3) + (_local2.col2.x * _local4)); _local4 = ((_local2.col1.y * _local3) + (_local2.col2.y * _local4)); _local3 = _local5; var _local6:Number = (m_impulse * m_J.linear2.x); var _local7:Number = (m_impulse * m_J.linear2.y); return ((_arg1 * (((m_impulse * m_J.angular2) - (_local3 * _local7)) + (_local4 * _local6)))); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_J.linear2.x), ((_arg1 * m_impulse) * m_J.linear2.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local5:Number; var _local6:Number; var _local2:Number = 0; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; if (m_revolute1){ _local5 = m_revolute1.GetJointAngle(); } else { _local5 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local6 = m_revolute2.GetJointAngle(); } else { _local6 = m_prismatic2.GetJointTranslation(); }; var _local7:Number = (m_constant - (_local5 + (m_ratio * _local6))); var _local8:Number = (-(m_mass) * _local7); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local8) * m_J.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local8) * m_J.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local8) * m_J.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local4.m_invMass * _local8) * m_J.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local4.m_invMass * _local8) * m_J.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local4.m_invI * _local8) * m_J.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); return ((_local2 < b2Settings.b2_linearSlop)); } public function GetRatio():Number{ return (m_ratio); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = (-(m_mass) * _local4); m_impulse = (m_impulse + _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local5) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local5) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local5) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local5) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local5) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local5) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 59
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 60
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular1:Number; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 61
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Joint { b2internal var m_islandFlag:Boolean; b2internal var m_collideConnected:Boolean; b2internal var m_prev:b2Joint; b2internal var m_type:int; b2internal var m_next:b2Joint; b2internal var m_node1:b2JointEdge; b2internal var m_node2:b2JointEdge; b2internal var m_localCenter1:b2Vec2; b2internal var m_localCenter2:b2Vec2; b2internal var m_invMass1:Number; b2internal var m_invI2:Number; b2internal var m_invMass2:Number; private var m_userData; b2internal var m_body1:b2Body; b2internal var m_body2:b2Body; b2internal var m_invI1:Number; b2internal static const e_prismaticJoint:int = 2; b2internal static const e_equalLimits:int = 3; b2internal static const e_lineJoint:int = 7; b2internal static const e_gearJoint:int = 6; b2internal static const e_atUpperLimit:int = 2; b2internal static const e_atLowerLimit:int = 1; b2internal static const e_revoluteJoint:int = 1; b2internal static const e_inactiveLimit:int = 0; b2internal static const e_pulleyJoint:int = 4; b2internal static const e_unknownJoint:int = 0; b2internal static const e_distanceJoint:int = 3; b2internal static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); m_localCenter1 = new b2Vec2(); m_localCenter2 = new b2Vec2(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetBody2():b2Body{ return (m_body2); } b2internal function ComputeXForm(_arg1:b2XForm, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Number):void{ _arg1.R.Set(_arg4); _arg1.position.SetV(b2Math.SubtractVV(_arg2, b2Math.b2MulMV(_arg1.R, _arg3))); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce(_arg1:Number):b2Vec2{ return (null); } b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } b2internal static function Destroy(_arg1:b2Joint, _arg2):void{ } b2internal static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; case e_lineJoint: _local3 = new b2LineJoint((_arg1 as b2LineJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 62
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 63
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 64
//b2LineJoint (Box2D.Dynamics.Joints.b2LineJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2LineJoint extends b2Joint { private var m_a1:Number; private var m_a2:Number; private var m_perp:b2Vec2; private var m_lowerTranslation:Number; b2internal var m_localXAxis1:b2Vec2; private var m_impulse:b2Vec2; private var m_enableLimit:Boolean; private var m_maxMotorForce:Number; private var m_localYAxis1:b2Vec2; private var m_s2:Number; private var m_axis:b2Vec2; private var m_motorMass:Number; private var m_s1:Number; private var m_upperTranslation:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_limitState:int; private var m_motorImpulse:Number; private var m_motorSpeed:Number; private var m_enableMotor:Boolean; private var m_K:b2Mat22; public function b2LineJoint(_arg1:b2LineJointDef){ 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_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat22(); m_impulse = new b2Vec2(); 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_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 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; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:b2Vec2; var _local19:b2Vec2; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local13 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local14 = (m_motorMass * (m_motorSpeed - _local13)); _local15 = m_motorImpulse; _local16 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.b2Clamp((m_motorImpulse + _local14), -(_local16), _local16); _local14 = (m_motorImpulse - _local15); _local8 = (_local14 * m_axis.x); _local9 = (_local14 * m_axis.y); _local10 = (_local14 * m_a1); _local11 = (_local14 * m_a2); _local4.x = (_local4.x - (m_invMass1 * _local8)); _local4.y = (_local4.y - (m_invMass1 * _local9)); _local5 = (_local5 - (m_invI1 * _local10)); _local6.x = (_local6.x + (m_invMass2 * _local8)); _local6.y = (_local6.y + (m_invMass2 * _local9)); _local7 = (_local7 + (m_invI2 * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local17 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local18 = m_impulse.Copy(); _local19 = m_K.Solve(new b2Vec2(), -(_local12), -(_local17)); m_impulse.Add(_local19); if (m_limitState == e_atLowerLimit){ m_impulse.y = b2Math.b2Max(m_impulse.y, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.y = b2Math.b2Min(m_impulse.y, 0); }; }; _local20 = (-(_local12) - ((m_impulse.y - _local18.y) * m_K.col2.x)); _local21 = ((_local20 / m_K.col1.x) + _local18.x); m_impulse.x = _local21; _local19.x = (m_impulse.x - _local18.x); _local19.y = (m_impulse.y - _local18.y); _local8 = ((_local19.x * m_perp.x) + (_local19.y * m_axis.x)); _local9 = ((_local19.x * m_perp.y) + (_local19.y * m_axis.y)); _local10 = ((_local19.x * m_s1) + (_local19.y * m_a1)); _local11 = ((_local19.x * m_s2) + (_local19.y * m_a2)); _local4.x = (_local4.x - (m_invMass1 * _local8)); _local4.y = (_local4.y - (m_invMass1 * _local9)); _local5 = (_local5 - (m_invI1 * _local10)); _local6.x = (_local6.x + (m_invMass2 * _local8)); _local6.y = (_local6.y + (m_invMass2 * _local9)); _local7 = (_local7 + (m_invI2 * _local11)); } else { _local22 = (-(_local12) / m_K.col1.x); m_impulse.x = (m_impulse.x + _local22); _local8 = (_local22 * m_perp.x); _local9 = (_local22 * m_perp.y); _local10 = (_local22 * m_s1); _local11 = (_local22 * m_s2); _local4.x = (_local4.x - (m_invMass1 * _local8)); _local4.y = (_local4.y - (m_invMass1 * _local9)); _local5 = (_local5 - (m_invI1 * _local10)); _local6.x = (_local6.x + (m_invMass2 * _local8)); _local6.y = (_local6.y + (m_invMass2 * _local9)); _local7 = (_local7 + (m_invI2 * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y))))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = new b2Mat22(_local7); var _local21:b2Mat22 = new b2Mat22(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenter1.x); var _local23:Number = (m_localAnchor1.y - m_localCenter1.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenter2.x); var _local25:Number = (m_localAnchor2.y - m_localCenter2.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.b2MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local34 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.b2Clamp(_local34, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.b2Abs(_local34); _local18 = true; } else { if (_local34 <= m_lowerTranslation){ _local19 = b2Math.b2Clamp(((_local34 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local34); _local18 = true; } else { if (_local34 >= m_upperTranslation){ _local19 = b2Math.b2Clamp(((_local34 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local34 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.b2MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec2 = new b2Vec2(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); _local16 = b2Math.b2Max(_local16, b2Math.b2Abs(_local29)); _local17 = 0; if (_local18){ _local12 = m_invMass1; _local13 = m_invMass2; _local14 = m_invI1; _local15 = m_invI2; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve(_local28, -(_local29), -(_local19)); } else { _local12 = m_invMass1; _local13 = m_invMass2; _local14 = m_invI1; _local15 = m_invI2; _local35 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); _local36 = (-(_local29) / _local35); _local28.x = _local36; _local28.y = 0; }; var _local30:Number = ((_local28.x * m_perp.x) + (_local28.y * m_axis.x)); var _local31:Number = ((_local28.x * m_perp.y) + (_local28.y * m_axis.y)); var _local32:Number = ((_local28.x * m_s1) + (_local28.y * m_a1)); var _local33:Number = ((_local28.x * m_s2) + (_local28.y * m_a2)); _local6.x = (_local6.x - (m_invMass1 * _local30)); _local6.y = (_local6.y - (m_invMass1 * _local31)); _local7 = (_local7 - (m_invI1 * _local32)); _local8.x = (_local8.x + (m_invMass2 * _local30)); _local8.y = (_local8.y + (m_invMass2 * _local31)); _local9 = (_local9 + (m_invI2 * _local33)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; m_localCenter1.SetV(_local2.GetLocalCenter()); m_localCenter2.SetV(_local3.GetLocalCenter()); var _local6:b2XForm = _local2.GetXForm(); var _local7:b2XForm = _local3.GetXForm(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local11:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMass1 = _local2.m_invMass; m_invMass2 = _local3.m_invMass; m_invI1 = _local2.m_invI; m_invI2 = _local3.m_invI; m_axis.SetV(b2Math.b2MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMass1 + m_invMass2) + ((m_invI1 * m_a1) * m_a1)) + ((m_invI2 * m_a2) * m_a2)); m_motorMass = (1 / m_motorMass); m_perp.SetV(b2Math.b2MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMass1; var _local15:Number = m_invMass2; var _local16:Number = m_invI1; var _local17:Number = m_invI2; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.y = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.y = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.y = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.y) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.y) * m_axis.y)); _local21 = ((m_impulse.x * m_s1) + ((m_motorImpulse + m_impulse.y) * m_a1)); _local22 = ((m_impulse.x * m_s2) + ((m_motorImpulse + m_impulse.y) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMass1 * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMass1 * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invI1 * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMass2 * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMass2 * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invI2 * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function GetMotorForce():Number{ return (m_motorImpulse); } public function EnableLimit(_arg1:Boolean):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_maxMotorForce = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 65
//b2LineJointDef (Box2D.Dynamics.Joints.b2LineJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2LineJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2LineJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_lineJoint; localAxis1.Set(1, 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); } } }//package Box2D.Dynamics.Joints
Section 66
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K1:b2Mat22; private var K:b2Mat22; private var m_beta:Number; private var m_mass:b2Mat22; private var K2:b2Mat22; private var m_target:b2Vec2; private var m_gamma:Number; private var m_impulse:b2Vec2; private var m_C:b2Vec2; private var m_localAnchor:b2Vec2; private var m_maxForce:Number; private var m_dampingRatio:Number; private var m_frequencyHz:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local3:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); var _local2:Number = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); var _local4:b2Mat22 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_beta = 0; m_gamma = 0; } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local7:b2Mat22; var _local8:Number; var _local9:Number; _local2 = m_body2; var _local3:Number = _local2.GetMass(); var _local4:Number = ((2 * Math.PI) * m_frequencyHz); var _local5:Number = (((2 * _local3) * m_dampingRatio) * _local4); var _local6:Number = ((_local3 * _local4) * _local4); m_gamma = (1 / (_arg1.dt * (_local5 + (_arg1.dt * _local6)))); m_beta = ((_arg1.dt * _local6) * m_gamma); _local7 = _local2.m_xf.R; _local8 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local9 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); var _local10:Number = ((_local7.col1.x * _local8) + (_local7.col2.x * _local9)); _local9 = ((_local7.col1.y * _local8) + (_local7.col2.y * _local9)); _local8 = _local10; var _local11:Number = _local2.m_invMass; var _local12:Number = _local2.m_invI; K1.col1.x = _local11; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local11; K2.col1.x = ((_local12 * _local9) * _local9); K2.col2.x = ((-(_local12) * _local8) * _local9); K2.col1.y = ((-(_local12) * _local8) * _local9); K2.col2.y = ((_local12 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.GetInverse(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local8) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local9) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local11 * m_impulse.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local11 * m_impulse.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * ((_local8 * m_impulse.y) - (_local9 * m_impulse.x)))); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ return (true); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_body2; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + (m_beta * m_C.x)) + (m_gamma * m_impulse.x)); _local5 = ((_local9 + (m_beta * m_C.y)) + (m_gamma * m_impulse.y)); var _local10:Number = -(((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = -(((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = (_arg1.dt * m_maxForce); if (m_impulse.LengthSquared() > (_local14 * _local14)){ m_impulse.Multiply((_local14 / m_impulse.Length())); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local10)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local11)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local11) - (_local7 * _local10)))); } } }//package Box2D.Dynamics.Joints
Section 67
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; } } }//package Box2D.Dynamics.Joints
Section 68
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { private var m_a1:Number; private var m_a2:Number; private var m_perp:b2Vec2; private var m_lowerTranslation:Number; b2internal var m_localXAxis1:b2Vec2; private var m_refAngle:Number; private var m_impulse:b2Vec3; private var m_enableLimit:Boolean; private var m_maxMotorForce:Number; private var m_localYAxis1:b2Vec2; private var m_s2:Number; private var m_axis:b2Vec2; private var m_motorMass:Number; private var m_s1:Number; private var m_upperTranslation:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var m_limitState:int; private var m_motorImpulse:Number; private var m_motorSpeed:Number; private var m_enableMotor:Boolean; private var m_K:b2Mat33; 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_axis = new b2Vec2(); m_perp = new b2Vec2(); m_K = new b2Mat33(); m_impulse = new b2Vec3(); 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_impulse.SetZero(); m_motorMass = 0; m_motorImpulse = 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; m_limitState = e_inactiveLimit; m_axis.SetZero(); m_perp.SetZero(); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2Vec3; var _local20:b2Vec3; var _local21:Number; var _local22:Number; var _local23:b2Vec2; var _local24:b2Vec2; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:b2Vec2 = _local2.m_linearVelocity; var _local5:Number = _local2.m_angularVelocity; var _local6:b2Vec2 = _local3.m_linearVelocity; var _local7:Number = _local3.m_angularVelocity; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local14 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local15 = (m_motorMass * (m_motorSpeed - _local14)); _local16 = m_motorImpulse; _local17 = (_arg1.dt * m_maxMotorForce); m_motorImpulse = b2Math.b2Clamp((m_motorImpulse + _local15), -(_local17), _local17); _local15 = (m_motorImpulse - _local16); _local8 = (_local15 * m_axis.x); _local9 = (_local15 * m_axis.y); _local10 = (_local15 * m_a1); _local11 = (_local15 * m_a2); _local4.x = (_local4.x - (m_invMass1 * _local8)); _local4.y = (_local4.y - (m_invMass1 * _local9)); _local5 = (_local5 - (m_invI1 * _local10)); _local6.x = (_local6.x + (m_invMass2 * _local8)); _local6.y = (_local6.y + (m_invMass2 * _local9)); _local7 = (_local7 + (m_invI2 * _local11)); }; var _local12:Number = ((((m_perp.x * (_local6.x - _local4.x)) + (m_perp.y * (_local6.y - _local4.y))) + (m_s2 * _local7)) - (m_s1 * _local5)); var _local13:Number = (_local7 - _local5); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = ((((m_axis.x * (_local6.x - _local4.x)) + (m_axis.y * (_local6.y - _local4.y))) + (m_a2 * _local7)) - (m_a1 * _local5)); _local19 = m_impulse.Copy(); _local20 = m_K.Solve33(new b2Vec3(), -(_local12), -(_local13), -(_local18)); m_impulse.Add(_local20); if (m_limitState == e_atLowerLimit){ m_impulse.z = b2Math.b2Max(m_impulse.z, 0); } else { if (m_limitState == e_atUpperLimit){ m_impulse.z = b2Math.b2Min(m_impulse.z, 0); }; }; _local21 = (-(_local12) - ((m_impulse.z - _local19.z) * m_K.col3.x)); _local22 = (-(_local13) - ((m_impulse.z - _local19.z) * m_K.col3.y)); _local23 = m_K.Solve22(new b2Vec2(), _local21, _local22); m_K.Solve22(new b2Vec2(), _local21, _local22).x = (_local23.x + _local19.x); _local23.y = (_local23.y + _local19.y); m_impulse.x = _local23.x; m_impulse.y = _local23.y; _local20.x = (m_impulse.x - _local19.x); _local20.y = (m_impulse.y - _local19.y); _local20.z = (m_impulse.z - _local19.z); _local8 = ((_local20.x * m_perp.x) + (_local20.z * m_axis.x)); _local9 = ((_local20.x * m_perp.y) + (_local20.z * m_axis.y)); _local10 = (((_local20.x * m_s1) + _local20.y) + (_local20.z * m_a1)); _local11 = (((_local20.x * m_s2) + _local20.y) + (_local20.z * m_a2)); _local4.x = (_local4.x - (m_invMass1 * _local8)); _local4.y = (_local4.y - (m_invMass1 * _local9)); _local5 = (_local5 - (m_invI1 * _local10)); _local6.x = (_local6.x + (m_invMass2 * _local8)); _local6.y = (_local6.y + (m_invMass2 * _local9)); _local7 = (_local7 + (m_invI2 * _local11)); } else { _local24 = m_K.Solve22(new b2Vec2(), -(_local12), -(_local13)); m_impulse.x = (m_impulse.x + _local24.x); m_impulse.y = (m_impulse.y + _local24.y); _local8 = (_local24.x * m_perp.x); _local9 = (_local24.x * m_perp.y); _local10 = ((_local24.x * m_s1) + _local24.y); _local11 = ((_local24.x * m_s2) + _local24.y); _local4.x = (_local4.x - (m_invMass1 * _local8)); _local4.y = (_local4.y - (m_invMass1 * _local9)); _local5 = (_local5 - (m_invI1 * _local10)); _local6.x = (_local6.x + (m_invMass2 * _local8)); _local6.y = (_local6.y + (m_invMass2 * _local9)); _local7 = (_local7 + (m_invI2 * _local11)); }; _local2.m_linearVelocity.SetV(_local4); _local2.m_angularVelocity = _local5; _local3.m_linearVelocity.SetV(_local6); _local3.m_angularVelocity = _local7; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x))), (_arg1 * ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y))))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local10:b2Mat22; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:b2Vec2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local6:b2Vec2 = _local4.m_sweep.c; var _local7:Number = _local4.m_sweep.a; var _local8:b2Vec2 = _local5.m_sweep.c; var _local9:Number = _local5.m_sweep.a; var _local16:Number = 0; var _local17:Number = 0; var _local18:Boolean; var _local19:Number = 0; var _local20:b2Mat22 = new b2Mat22(_local7); var _local21:b2Mat22 = new b2Mat22(_local9); _local10 = _local20; var _local22:Number = (m_localAnchor1.x - m_localCenter1.x); var _local23:Number = (m_localAnchor1.y - m_localCenter1.y); _local11 = ((_local10.col1.x * _local22) + (_local10.col2.x * _local23)); _local23 = ((_local10.col1.y * _local22) + (_local10.col2.y * _local23)); _local22 = _local11; _local10 = _local21; var _local24:Number = (m_localAnchor2.x - m_localCenter2.x); var _local25:Number = (m_localAnchor2.y - m_localCenter2.y); _local11 = ((_local10.col1.x * _local24) + (_local10.col2.x * _local25)); _local25 = ((_local10.col1.y * _local24) + (_local10.col2.y * _local25)); _local24 = _local11; var _local26:Number = (((_local8.x + _local24) - _local6.x) - _local22); var _local27:Number = (((_local8.y + _local25) - _local6.y) - _local23); if (m_enableLimit){ m_axis = b2Math.b2MulMV(_local20, m_localXAxis1); m_a1 = (((_local26 + _local22) * m_axis.y) - ((_local27 + _local23) * m_axis.x)); m_a2 = ((_local24 * m_axis.y) - (_local25 * m_axis.x)); _local35 = ((m_axis.x * _local26) + (m_axis.y * _local27)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ _local19 = b2Math.b2Clamp(_local35, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local16 = b2Math.b2Abs(_local35); _local18 = true; } else { if (_local35 <= m_lowerTranslation){ _local19 = b2Math.b2Clamp(((_local35 - m_lowerTranslation) + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local16 = (m_lowerTranslation - _local35); _local18 = true; } else { if (_local35 >= m_upperTranslation){ _local19 = b2Math.b2Clamp(((_local35 - m_upperTranslation) + b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local16 = (_local35 - m_upperTranslation); _local18 = true; }; }; }; }; m_perp = b2Math.b2MulMV(_local20, m_localYAxis1); m_s1 = (((_local26 + _local22) * m_perp.y) - ((_local27 + _local23) * m_perp.x)); m_s2 = ((_local24 * m_perp.y) - (_local25 * m_perp.x)); var _local28:b2Vec3 = new b2Vec3(); var _local29:Number = ((m_perp.x * _local26) + (m_perp.y * _local27)); var _local30:Number = ((_local9 - _local7) - m_refAngle); _local16 = b2Math.b2Max(_local16, b2Math.b2Abs(_local29)); _local17 = b2Math.b2Abs(_local30); if (_local18){ _local12 = m_invMass1; _local13 = m_invMass2; _local14 = m_invI1; _local15 = m_invI2; m_K.col1.x = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); m_K.col1.y = ((_local14 * m_s1) + (_local15 * m_s2)); m_K.col1.z = (((_local14 * m_s1) * m_a1) + ((_local15 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local14 + _local15); m_K.col2.z = ((_local14 * m_a1) + (_local15 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local12 + _local13) + ((_local14 * m_a1) * m_a1)) + ((_local15 * m_a2) * m_a2)); m_K.Solve33(_local28, -(_local29), -(_local30), -(_local19)); } else { _local12 = m_invMass1; _local13 = m_invMass2; _local14 = m_invI1; _local15 = m_invI2; _local36 = (((_local12 + _local13) + ((_local14 * m_s1) * m_s1)) + ((_local15 * m_s2) * m_s2)); _local37 = ((_local14 * m_s1) + (_local15 * m_s2)); _local38 = (_local14 + _local15); m_K.col1.Set(_local36, _local37, 0); m_K.col2.Set(_local37, _local38, 0); _local39 = m_K.Solve22(new b2Vec2(), -(_local29), -(_local30)); _local28.x = _local39.x; _local28.y = _local39.y; _local28.z = 0; }; var _local31:Number = ((_local28.x * m_perp.x) + (_local28.z * m_axis.x)); var _local32:Number = ((_local28.x * m_perp.y) + (_local28.z * m_axis.y)); var _local33:Number = (((_local28.x * m_s1) + _local28.y) + (_local28.z * m_a1)); var _local34:Number = (((_local28.x * m_s2) + _local28.y) + (_local28.z * m_a2)); _local6.x = (_local6.x - (m_invMass1 * _local31)); _local6.y = (_local6.y - (m_invMass1 * _local32)); _local7 = (_local7 - (m_invI1 * _local33)); _local8.x = (_local8.x + (m_invMass2 * _local31)); _local8.y = (_local8.y + (m_invMass2 * _local32)); _local9 = (_local9 + (m_invI2 * _local34)); _local4.m_sweep.a = _local7; _local5.m_sweep.a = _local9; _local4.SynchronizeTransform(); _local5.SynchronizeTransform(); return ((((_local16 <= b2Settings.b2_linearSlop)) && ((_local17 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; m_localCenter1.SetV(_local2.GetLocalCenter()); m_localCenter2.SetV(_local3.GetLocalCenter()); var _local6:b2XForm = _local2.GetXForm(); var _local7:b2XForm = _local3.GetXForm(); _local4 = _local2.m_xf.R; var _local8:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local11:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; var _local12:Number = (((_local3.m_sweep.c.x + _local10) - _local2.m_sweep.c.x) - _local8); var _local13:Number = (((_local3.m_sweep.c.y + _local11) - _local2.m_sweep.c.y) - _local9); m_invMass1 = _local2.m_invMass; m_invMass2 = _local3.m_invMass; m_invI1 = _local2.m_invI; m_invI2 = _local3.m_invI; m_axis.SetV(b2Math.b2MulMV(_local6.R, m_localXAxis1)); m_a1 = (((_local12 + _local8) * m_axis.y) - ((_local13 + _local9) * m_axis.x)); m_a2 = ((_local10 * m_axis.y) - (_local11 * m_axis.x)); m_motorMass = (((m_invMass1 + m_invMass2) + ((m_invI1 * m_a1) * m_a1)) + ((m_invI2 * m_a2) * m_a2)); m_motorMass = (1 / m_motorMass); m_perp.SetV(b2Math.b2MulMV(_local6.R, m_localYAxis1)); m_s1 = (((_local12 + _local8) * m_perp.y) - ((_local13 + _local9) * m_perp.x)); m_s2 = ((_local10 * m_perp.y) - (_local11 * m_perp.x)); var _local14:Number = m_invMass1; var _local15:Number = m_invMass2; var _local16:Number = m_invI1; var _local17:Number = m_invI2; m_K.col1.x = (((_local14 + _local15) + ((_local16 * m_s1) * m_s1)) + ((_local17 * m_s2) * m_s2)); m_K.col1.y = ((_local16 * m_s1) + (_local17 * m_s2)); m_K.col1.z = (((_local16 * m_s1) * m_a1) + ((_local17 * m_s2) * m_a2)); m_K.col2.x = m_K.col1.y; m_K.col2.y = (_local16 + _local17); m_K.col2.z = ((_local16 * m_a1) + (_local17 * m_a2)); m_K.col3.x = m_K.col1.z; m_K.col3.y = m_K.col2.z; m_K.col3.z = (((_local14 + _local15) + ((_local16 * m_a1) * m_a1)) + ((_local17 * m_a2) * m_a2)); if (m_enableLimit){ _local18 = ((m_axis.x * _local12) + (m_axis.y * _local13)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local18 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitState = e_atLowerLimit; m_impulse.z = 0; }; } else { if (_local18 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitState = e_atUpperLimit; m_impulse.z = 0; }; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (m_enableMotor == false){ m_motorImpulse = 0; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local19 = ((m_impulse.x * m_perp.x) + ((m_motorImpulse + m_impulse.z) * m_axis.x)); _local20 = ((m_impulse.x * m_perp.y) + ((m_motorImpulse + m_impulse.z) * m_axis.y)); _local21 = (((m_impulse.x * m_s1) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a1)); _local22 = (((m_impulse.x * m_s2) + m_impulse.y) + ((m_motorImpulse + m_impulse.z) * m_a2)); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (m_invMass1 * _local19)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (m_invMass1 * _local20)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (m_invI1 * _local21)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (m_invMass2 * _local19)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (m_invMass2 * _local20)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (m_invI2 * _local22)); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function GetMotorForce():Number{ return (m_motorImpulse); } public function EnableLimit(_arg1:Boolean):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_maxMotorForce = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.y)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//package Box2D.Dynamics.Joints
Section 69
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 70
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { private var m_limitState1:int; private var m_limitState2:int; private var m_ground:b2Body; private var m_maxLength2:Number; private var m_maxLength1:Number; private var m_impulse:Number; private var m_constant:Number; private var m_state:int; private var m_ratio:Number; private var m_groundAnchor1:b2Vec2; private var m_groundAnchor2:b2Vec2; private var m_localAnchor1:b2Vec2; private var m_localAnchor2:b2Vec2; private var m_limitMass1:Number; private var m_limitMass2:Number; private var m_pulleyMass:Number; private var m_limitImpulse1:Number; private var m_limitImpulse2:Number; private var m_u1:b2Vec2; private var m_u2:b2Vec2; b2internal 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_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2(((_arg1 * m_impulse) * m_u2.x), ((_arg1 * m_impulse) * m_u2.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local4:b2Mat22; 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 _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local5:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local6:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local7:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local8:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local24:Number = 0; if (m_state == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u1.Set((_local13 - _local5), (_local14 - _local6)); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local17 = m_u1.Length(); _local18 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local17)); } else { m_u1.SetZero(); }; if (_local18 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local18)); } else { m_u2.SetZero(); }; _local19 = ((m_constant - _local17) - (m_ratio * _local18)); _local24 = b2Math.b2Max(_local24, -(_local19)); _local19 = b2Math.b2Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_pulleyMass) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local15 = ((-(m_ratio) * _local20) * m_u2.x); _local16 = ((-(m_ratio) * _local20) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local4 = _local2.m_xf.R; _local9 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local10 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local9) + (_local4.col2.x * _local10)); _local10 = ((_local4.col1.y * _local9) + (_local4.col2.y * _local10)); _local9 = _local23; _local13 = (_local2.m_sweep.c.x + _local9); _local14 = (_local2.m_sweep.c.y + _local10); m_u1.Set((_local13 - _local5), (_local14 - _local6)); _local17 = m_u1.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local17)); m_u1.y = (m_u1.y * (1 / _local17)); } else { m_u1.SetZero(); }; _local19 = (m_maxLength1 - _local17); _local24 = b2Math.b2Max(_local24, -(_local19)); _local19 = b2Math.b2Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass1) * _local19); _local13 = (-(_local20) * m_u1.x); _local14 = (-(_local20) * m_u1.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local13)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local14)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local9 * _local14) - (_local10 * _local13)))); _local2.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local4 = _local3.m_xf.R; _local11 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local23 = ((_local4.col1.x * _local11) + (_local4.col2.x * _local12)); _local12 = ((_local4.col1.y * _local11) + (_local4.col2.y * _local12)); _local11 = _local23; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); m_u2.Set((_local15 - _local7), (_local16 - _local8)); _local18 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local18)); m_u2.y = (m_u2.y * (1 / _local18)); } else { m_u2.SetZero(); }; _local19 = (m_maxLength2 - _local18); _local24 = b2Math.b2Max(_local24, -(_local19)); _local19 = b2Math.b2Clamp((_local19 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local20 = (-(m_limitMass2) * _local19); _local15 = (-(_local20) * m_u2.x); _local16 = (-(_local20) * m_u2.y); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local15)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local16)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local11 * _local16) - (_local12 * _local15)))); _local3.SynchronizeTransform(); }; return ((_local24 < b2Settings.b2_linearSlop)); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local4:b2Mat22; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_impulse = 0; } else { m_state = e_atUpperLimit; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitImpulse1 = 0; } else { m_limitState1 = e_atUpperLimit; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitImpulse2 = 0; } else { m_limitState2 = e_atUpperLimit; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); m_limitImpulse1 = (m_limitImpulse1 * _arg1.dtRatio); m_limitImpulse2 = (m_limitImpulse2 * _arg1.dtRatio); _local23 = ((-(m_impulse) - m_limitImpulse1) * m_u1.x); _local24 = ((-(m_impulse) - m_limitImpulse1) * m_u1.y); _local25 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * m_u2.x); _local26 = (((-(m_ratio) * m_impulse) - m_limitImpulse2) * 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_impulse = 0; m_limitImpulse1 = 0; m_limitImpulse2 = 0; }; } override public function GetReactionTorque(_arg1:Number):Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = (m_pulleyMass * -(_local18)); _local20 = m_impulse; m_impulse = b2Math.b2Max(0, (m_impulse + _local19)); _local19 = (m_impulse - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_local19) * m_u1.y); _local16 = ((-(m_ratio) * _local19) * m_u2.x); _local17 = ((-(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 = (-(m_limitMass1) * _local18); _local20 = m_limitImpulse1; m_limitImpulse1 = b2Math.b2Max(0, (m_limitImpulse1 + _local19)); _local19 = (m_limitImpulse1 - _local20); _local14 = (-(_local19) * m_u1.x); _local15 = (-(_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 = (-(m_limitMass2) * _local18); _local20 = m_limitImpulse2; m_limitImpulse2 = b2Math.b2Max(0, (m_limitImpulse2 + _local19)); _local19 = (m_limitImpulse2 - _local20); _local16 = (-(_local19) * m_u2.x); _local17 = (-(_local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 71
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 72
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { private var m_mass:b2Mat33; private var m_impulse:b2Vec3; private var m_enableLimit:Boolean; private var m_limitState:int; private var m_motorMass:Number; b2internal var m_localAnchor1:b2Vec2; b2internal var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; private var m_motorImpulse:Number; private var m_enableMotor:Boolean; private var m_referenceAngle:Number; private var m_upperAngle:Number; private var m_motorSpeed:Number; private var m_lowerAngle:Number; private var m_maxMotorTorque:Number; private 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_impulse = new b2Vec3(); m_mass = new b2Mat33(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_impulse.SetZero(); m_motorImpulse = 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; m_limitState = e_inactiveLimit; } override b2internal function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:b2Vec3; var _local28:Number; var _local29:Number; var _local30:b2Vec2; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local12:b2Vec2 = _local2.m_linearVelocity; var _local13:Number = _local2.m_angularVelocity; var _local14:b2Vec2 = _local3.m_linearVelocity; var _local15:Number = _local3.m_angularVelocity; var _local16:Number = _local2.m_invMass; var _local17:Number = _local3.m_invMass; var _local18:Number = _local2.m_invI; var _local19:Number = _local3.m_invI; if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local20 = ((_local15 - _local13) - m_motorSpeed); _local21 = (m_motorMass * -(_local20)); _local22 = m_motorImpulse; _local23 = (_arg1.dt * m_maxMotorTorque); m_motorImpulse = b2Math.b2Clamp((m_motorImpulse + _local21), -(_local23), _local23); _local21 = (m_motorImpulse - _local22); _local13 = (_local13 - (_local18 * _local21)); _local15 = (_local15 + (_local19 * _local21)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local4 = _local2.m_xf.R; _local8 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; _local10 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; _local24 = (((_local14.x + (-(_local15) * _local11)) - _local12.x) - (-(_local13) * _local9)); _local25 = (((_local14.y + (_local15 * _local10)) - _local12.y) - (_local13 * _local8)); _local26 = (_local15 - _local13); _local27 = m_mass.Solve33(new b2Vec3(), -(_local24), -(_local25), -(_local26)); if (m_limitState == e_equalLimits){ m_impulse.Add(_local27); } else { if (m_limitState == e_atLowerLimit){ _local6 = (m_impulse.z + _local27.z); if (_local6 < 0){ _local7 = m_mass.Solve22(new b2Vec2(), -(_local24), -(_local25)); _local27.x = _local7.x; _local27.y = _local7.y; _local27.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + _local7.x); m_impulse.y = (m_impulse.y + _local7.y); m_impulse.z = 0; }; } else { if (m_limitState == e_atUpperLimit){ _local6 = (m_impulse.z + _local27.z); if (_local6 > 0){ _local7 = m_mass.Solve22(new b2Vec2(), -(_local24), -(_local25)); _local27.x = _local7.x; _local27.y = _local7.y; _local27.z = -(m_impulse.z); m_impulse.x = (m_impulse.x + _local7.x); m_impulse.y = (m_impulse.y + _local7.y); m_impulse.z = 0; }; }; }; }; _local12.x = (_local12.x - (_local16 * _local27.x)); _local12.y = (_local12.y - (_local16 * _local27.y)); _local13 = (_local13 - (_local18 * (((_local8 * _local27.y) - (_local9 * _local27.x)) + _local27.z))); _local14.x = (_local14.x + (_local17 * _local27.x)); _local14.y = (_local14.y + (_local17 * _local27.y)); _local15 = (_local15 + (_local19 * (((_local10 * _local27.y) - (_local11 * _local27.x)) + _local27.z))); } else { _local4 = _local2.m_xf.R; _local8 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local4 = _local3.m_xf.R; _local10 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local10) + (_local4.col2.x * _local11)); _local11 = ((_local4.col1.y * _local10) + (_local4.col2.y * _local11)); _local10 = _local5; _local28 = (((_local14.x + (-(_local15) * _local11)) - _local12.x) - (-(_local13) * _local9)); _local29 = (((_local14.y + (_local15 * _local10)) - _local12.y) - (_local13 * _local8)); _local30 = m_mass.Solve22(new b2Vec2(), -(_local28), -(_local29)); m_impulse.x = (m_impulse.x + _local30.x); m_impulse.y = (m_impulse.y + _local30.y); _local12.x = (_local12.x - (_local16 * _local30.x)); _local12.y = (_local12.y - (_local16 * _local30.y)); _local13 = (_local13 - (_local18 * ((_local8 * _local30.y) - (_local9 * _local30.x)))); _local14.x = (_local14.x + (_local17 * _local30.x)); _local14.y = (_local14.y + (_local17 * _local30.y)); _local15 = (_local15 + (_local19 * ((_local10 * _local30.y) - (_local11 * _local30.x)))); }; _local2.m_linearVelocity.SetV(_local12); _local2.m_angularVelocity = _local13; _local3.m_linearVelocity.SetV(_local14); _local3.m_angularVelocity = _local15; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce(_arg1:Number):b2Vec2{ return (new b2Vec2((_arg1 * m_impulse.x), (_arg1 * m_impulse.y))); } override b2internal function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local9:Number; var _local10:Number; var _local11:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local5:b2Body = m_body1; var _local6:b2Body = m_body2; var _local7:Number = 0; var _local8:Number = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local6.m_sweep.a - _local5.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local3 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); _local7 = b2Math.b2Abs(_local3); } else { if (m_limitState == e_atLowerLimit){ _local3 = (_local25 - m_lowerAngle); _local7 = -(_local3); _local3 = b2Math.b2Clamp((_local3 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local3); } else { if (m_limitState == e_atUpperLimit){ _local3 = (_local25 - m_upperAngle); _local7 = _local3; _local3 = b2Math.b2Clamp((_local3 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local3); }; }; }; _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * _local26)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * _local26)); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); }; _local4 = _local5.m_xf.R; var _local12:Number = (m_localAnchor1.x - _local5.m_sweep.localCenter.x); var _local13:Number = (m_localAnchor1.y - _local5.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local12) + (_local4.col2.x * _local13)); _local13 = ((_local4.col1.y * _local12) + (_local4.col2.y * _local13)); _local12 = _local9; _local4 = _local6.m_xf.R; var _local14:Number = (m_localAnchor2.x - _local6.m_sweep.localCenter.x); var _local15:Number = (m_localAnchor2.y - _local6.m_sweep.localCenter.y); _local9 = ((_local4.col1.x * _local14) + (_local4.col2.x * _local15)); _local15 = ((_local4.col1.y * _local14) + (_local4.col2.y * _local15)); _local14 = _local9; var _local16:Number = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); var _local17:Number = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); var _local18:Number = ((_local16 * _local16) + (_local17 * _local17)); var _local19:Number = Math.sqrt(_local18); _local8 = _local19; var _local20:Number = _local5.m_invMass; var _local21:Number = _local6.m_invMass; var _local22:Number = _local5.m_invI; var _local23:Number = _local6.m_invI; var _local24:Number = (10 * b2Settings.b2_linearSlop); if (_local18 > (_local24 * _local24)){ _local27 = (_local16 / _local19); _local28 = (_local17 / _local19); _local29 = (_local20 + _local21); _local30 = (1 / _local29); _local10 = (_local30 * -(_local16)); _local11 = (_local30 * -(_local17)); _local31 = 0.5; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - ((_local31 * _local20) * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - ((_local31 * _local20) * _local11)); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + ((_local31 * _local21) * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + ((_local31 * _local21) * _local11)); _local16 = (((_local6.m_sweep.c.x + _local14) - _local5.m_sweep.c.x) - _local12); _local17 = (((_local6.m_sweep.c.y + _local15) - _local5.m_sweep.c.y) - _local13); }; K1.col1.x = (_local20 + _local21); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local20 + _local21); K2.col1.x = ((_local22 * _local13) * _local13); K2.col2.x = ((-(_local22) * _local12) * _local13); K2.col1.y = ((-(_local22) * _local12) * _local13); K2.col2.y = ((_local22 * _local12) * _local12); K3.col1.x = ((_local23 * _local15) * _local15); K3.col2.x = ((-(_local23) * _local14) * _local15); K3.col1.y = ((-(_local23) * _local14) * _local15); K3.col2.y = ((_local23 * _local14) * _local14); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local10 = tImpulse.x; _local11 = tImpulse.y; _local5.m_sweep.c.x = (_local5.m_sweep.c.x - (_local5.m_invMass * _local10)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y - (_local5.m_invMass * _local11)); _local5.m_sweep.a = (_local5.m_sweep.a - (_local5.m_invI * ((_local12 * _local11) - (_local13 * _local10)))); _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_local6.m_invMass * _local10)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_local6.m_invMass * _local11)); _local6.m_sweep.a = (_local6.m_sweep.a + (_local6.m_invI * ((_local14 * _local11) - (_local15 * _local10)))); _local5.SynchronizeTransform(); _local6.SynchronizeTransform(); return ((((_local8 <= b2Settings.b2_linearSlop)) && ((_local7 <= b2Settings.b2_angularSlop)))); } public function SetMotorSpeed(_arg1:Number):void{ m_body1.WakeUp(); m_body2.WakeUp(); m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetMotorTorque():Number{ return (m_maxMotorTorque); } override b2internal function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_body1; _local3 = m_body2; if (((m_enableMotor) || (m_enableLimit))){ }; _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; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; m_mass.col1.x = (((_local10 + _local11) + ((_local7 * _local7) * _local12)) + ((_local9 * _local9) * _local13)); m_mass.col2.x = (((-(_local7) * _local6) * _local12) - ((_local9 * _local8) * _local13)); m_mass.col3.x = ((-(_local7) * _local12) - (_local9 * _local13)); m_mass.col1.y = m_mass.col2.x; m_mass.col2.y = (((_local10 + _local11) + ((_local6 * _local6) * _local12)) + ((_local8 * _local8) * _local13)); m_mass.col3.y = ((_local6 * _local12) + (_local8 * _local13)); m_mass.col1.z = m_mass.col3.x; m_mass.col2.z = m_mass.col3.y; m_mass.col3.z = (_local12 + _local13); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorImpulse = 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_impulse.z = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_impulse.z = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_impulse.z = 0; }; }; }; } else { m_limitState = e_inactiveLimit; }; if (_arg1.warmStarting){ m_impulse.x = (m_impulse.x * _arg1.dtRatio); m_impulse.y = (m_impulse.y * _arg1.dtRatio); m_motorImpulse = (m_motorImpulse * _arg1.dtRatio); _local15 = m_impulse.x; _local16 = m_impulse.y; _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local10 * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local10 * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local12 * ((((_local6 * _local16) - (_local7 * _local15)) + m_motorImpulse) + m_impulse.z))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * ((((_local8 * _local16) - (_local9 * _local15)) + m_motorImpulse) + m_impulse.z))); } else { m_impulse.SetZero(); m_motorImpulse = 0; }; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque(_arg1:Number):Number{ return ((_arg1 * m_impulse.z)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ m_body1.WakeUp(); m_body2.WakeUp(); return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//package Box2D.Dynamics.Joints
Section 73
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 74
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Body { b2internal var m_xf:b2XForm; b2internal var m_controllerCount:int; b2internal var m_contactList:b2ContactEdge; b2internal var m_angularVelocity:Number; b2internal var m_invI:Number; b2internal var m_shapeCount:int; b2internal var m_torque:Number; b2internal var m_flags:uint; b2internal var m_linearVelocity:b2Vec2; b2internal var m_world:b2World; b2internal var m_controllerList:b2ControllerEdge; b2internal var m_next:b2Body; b2internal var m_mass:Number; b2internal var m_shapeList:b2Shape; b2internal var m_force:b2Vec2; b2internal var m_sweep:b2Sweep; private var m_userData; b2internal var m_invMass:Number; b2internal var m_prev:b2Body; b2internal var m_linearDamping:Number; private var m_type:int; b2internal var m_angularDamping:Number; b2internal var m_islandIndex:int; b2internal var m_sleepTime:Number; b2internal var m_jointList:b2JointEdge; b2internal var m_I:Number; b2internal static var e_fixedRotationFlag:uint = 64; b2internal static var e_frozenFlag:uint = 2; b2internal static var e_maxTypes:uint = 3; b2internal static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); b2internal static var e_bulletFlag:uint = 32; b2internal static var e_staticType:uint = 1; b2internal static var e_islandFlag:uint = 4; b2internal static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); b2internal static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_controllerList = null; m_contactList = null; m_controllerCount = 0; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } b2internal function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function SetLinearDamping(_arg1:Number):void{ m_linearDamping = _arg1; } 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 GetControllerList():b2ControllerEdge{ return (m_controllerList); } public function SetMassFromShapes():void{ var _local1:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var _local2:Number = 0; var _local3:Number = 0; var _local4:b2MassData = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); var _local5:b2Mat22 = m_xf.R; var _local6:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; var _local7:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:Boolean; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } b2internal function SynchronizeShapes():Boolean{ var _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } 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 SetStatic():void{ if (m_type == e_staticType){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_type = e_staticType; var _local1:b2Shape = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetShapeList():b2Shape{ return (m_shapeList); } b2internal function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLinearDamping():Number{ return (m_linearDamping); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } private function connectEdges(_arg1:b2EdgeShape, _arg2:b2EdgeShape, _arg3:Number):Number{ var _local4:Number = Math.atan2(_arg2.GetDirectionVector().y, _arg2.GetDirectionVector().x); var _local5:Number = Math.tan(((_local4 - _arg3) * 0.5)); var _local6:b2Vec2 = b2Math.MulFV(_local5, _arg2.GetDirectionVector()); _local6 = b2Math.SubtractVV(_local6, _arg2.GetNormalVector()); _local6 = b2Math.MulFV(b2Settings.b2_toiSlop, _local6); _local6 = b2Math.AddVV(_local6, _arg2.GetVertex1()); var _local7:b2Vec2 = b2Math.AddVV(_arg1.GetDirectionVector(), _arg2.GetDirectionVector()); _local7.Normalize(); var _local8 = (b2Math.b2Dot(_arg1.GetDirectionVector(), _arg2.GetNormalVector()) > 0); _arg1.SetNextEdge(_arg2, _local6, _local7, _local8); _arg2.SetPrevEdge(_arg1, _local6, _local7, _local8); return (_local4); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetAngularDamping():Number{ return (m_angularDamping); } public function SetAngularDamping(_arg1:Number):void{ m_angularDamping = _arg1; } public function GetInertia():Number{ return (m_I); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } b2internal function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function 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 _local3:b2EdgeChainDef; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:int; var _local7:b2EdgeShape; var _local8:b2EdgeShape; var _local9:b2EdgeShape; var _local10:Number; if (m_world.m_lock == true){ return (null); }; if (_arg1.type == b2Shape.e_edgeShape){ _local3 = (_arg1 as b2EdgeChainDef); if (_local3.isALoop){ _local4 = _local3.vertices[(_local3.vertexCount - 1)]; _local6 = 0; } else { _local4 = _local3.vertices[0]; _local6 = 1; }; _local7 = null; _local8 = null; _local9 = null; _local10 = 0; while (_local6 < _local3.vertexCount) { _local5 = _local3.vertices[_local6]; _local9 = new b2EdgeShape(_local4, _local5, _arg1); _local9.m_next = m_shapeList; m_shapeList = _local9; m_shapeCount++; _local9.m_body = this; _local9.CreateProxy(m_world.m_broadPhase, m_xf); _local9.UpdateSweepRadius(m_sweep.localCenter); if (_local8 == null){ _local7 = _local9; _local10 = Math.atan2(_local9.GetDirectionVector().y, _local9.GetDirectionVector().x); } else { _local10 = connectEdges(_local8, _local9, _local10); }; _local8 = _local9; _local4 = _local5; _local6++; }; if (_local3.isALoop){ connectEdges(_local8, _local7, _local10); }; return (_local7); }; var _local2:b2Shape = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function DestroyShape(_arg1:b2Shape):void{ if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); var _local2:b2Shape = m_shapeList; var _local3:b2Shape; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function IsFixedRotation():Boolean{ return (((m_flags & e_fixedRotationFlag) == e_fixedRotationFlag)); } public function IsAllowSleeping():Boolean{ return (((m_flags & e_allowSleepFlag) == e_allowSleepFlag)); } public function SetFixedRotation(_arg1:Boolean):void{ if (_arg1){ m_angularVelocity = 0; m_invI = 0; m_flags = (m_flags | e_fixedRotationFlag); } else { if (m_I > 0){ m_invI = (1 / m_I); m_flags = (m_flags & e_fixedRotationFlag); }; }; } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function GetWorld():b2World{ return (m_world); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } } }//package Box2D.Dynamics
Section 75
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 76
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 77
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2ContactFilter { b2internal static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } public function RayCollide(_arg1, _arg2:b2Shape):Boolean{ if (!_arg1){ return (true); }; return (ShouldCollide((_arg1 as b2Shape), _arg2)); } } }//package Box2D.Dynamics
Section 78
//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 79
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { b2internal var m_world:b2World; private var m_destroyImmediate:Boolean; private var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairRemoved(_arg1, _arg2, _arg3):void{ if (_arg3 == null){ return; }; var _local4:b2Contact = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local8:Array; var _local9:int; var _local10:b2Manifold; var _local11:int; var _local12:b2ManifoldPoint; var _local13:b2Vec2; var _local14:b2Vec2; var _local2:b2Shape = _arg1.m_shape1; var _local3:b2Shape = _arg1.m_shape2; var _local4:b2Body = _local2.m_body; var _local5:b2Body = _local3.m_body; var _local6:b2ContactPoint = s_evalCP; _local6.shape1 = _arg1.m_shape1; _local6.shape2 = _arg1.m_shape2; _local6.friction = b2Settings.b2MixFriction(_local2.GetFriction(), _local3.GetFriction()); _local6.restitution = b2Settings.b2MixRestitution(_local2.GetRestitution(), _local3.GetRestitution()); var _local7:int = _arg1.m_manifoldCount; if ((((_local7 > 0)) && (m_world.m_contactListener))){ _local8 = _arg1.GetManifolds(); _local9 = 0; while (_local9 < _local7) { _local10 = _local8[_local9]; _local6.normal.SetV(_local10.normal); _local11 = 0; while (_local11 < _local10.pointCount) { _local12 = _local10.points[_local11]; _local6.position = _local4.GetWorldPoint(_local12.localPoint1); _local13 = _local4.GetLinearVelocityFromLocalPoint(_local12.localPoint1); _local14 = _local5.GetLinearVelocityFromLocalPoint(_local12.localPoint2); _local6.velocity.Set((_local14.x - _local13.x), (_local14.y - _local13.y)); _local6.separation = _local12.separation; _local6.id.key = _local12.id._key; m_world.m_contactListener.Remove(_local6); _local11++; }; _local9++; }; }; 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; }; 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 == _local4.m_contactList){ _local4.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 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape = (_arg1 as b2Shape); var _local4:b2Shape = (_arg2 as b2Shape); var _local5:b2Body = _local3.m_body; var _local6:b2Body = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } public function Collide():void{ var _local2:b2Body; var _local3:b2Body; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 80
//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 { private var m_xformScale:Number;// = 1 private var m_fillAlpha:Number;// = 1 private var m_alpha:Number;// = 1 private var m_lineThickness:Number;// = 1 private var m_drawFlags:uint; b2internal var m_sprite:Sprite; private 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_controllerBit:uint = 128; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawFlags = 0; } public function SetDrawScale(_arg1:Number):void{ m_drawScale = _arg1; } public function GetFillAlpha():Number{ return (m_fillAlpha); } public function GetAlpha():Number{ return (m_alpha); } public function GetLineThickness():Number{ return (m_lineThickness); } public function GetDrawScale():Number{ return (m_drawScale); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function 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 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 GetSprite():Sprite{ return (m_sprite); } public function GetXFormScale():Number{ return (m_xformScale); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function SetSprite(_arg1:Sprite):void{ m_sprite = _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 SetXFormScale(_arg1:Number):void{ m_xformScale = _arg1; } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function SetFillAlpha(_arg1:Number):void{ m_fillAlpha = _arg1; } public function SetAlpha(_arg1:Number):void{ m_alpha = _arg1; } public function SetLineThickness(_arg1:Number):void{ m_lineThickness = _arg1; } } }//package Box2D.Dynamics
Section 81
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeShape(_arg1:b2Shape):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 82
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { private var m_listener:b2ContactListener; private var m_bodyCapacity:int; b2internal var m_bodies:Array; b2internal var m_joints:Array; b2internal var m_jointCapacity:int; b2internal var m_contactCount:int; b2internal var m_contacts:Array; b2internal var m_contactCapacity:int; b2internal var m_jointCount:int; private var m_allocator; b2internal 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++; }; } public function AddBody(_arg1:b2Body):void{ _arg1.m_islandIndex = m_bodyCount; var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; var _local4:int; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean):void{ var _local4:int; var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local9:Boolean; var _local10:Boolean; var _local11:Boolean; var _local12:Number; var _local13:Number; var _local14:Number; _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; 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; }; }; }; _local4++; }; var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local4 = 0; while (_local4 < m_jointCount) { _local7 = m_joints[_local4]; _local7.InitVelocityConstraints(_arg1); _local4++; }; _local4 = 0; while (_local4 < _arg1.velocityIterations) { _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.SolveVelocityConstraints(_arg1); _local5++; }; _local8.SolveVelocityConstraints(); _local4++; }; _local8.FinalizeVelocityConstraints(); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; 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(); }; _local4++; }; _local4 = 0; while (_local4 < _arg1.positionIterations) { _local9 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local10 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local11 = _local7.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local10 = ((_local10) && (_local11)); _local5++; }; if (((_local9) && (_local10))){ break; }; _local4++; }; Report(_local8.m_constraints); if (_arg3){ _local12 = Number.MAX_VALUE; _local13 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local14 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local12 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local14)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local13)))){ _local6.m_sleepTime = 0; _local12 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local12 = b2Math.b2Min(_local12, _local6.m_sleepTime); }; }; _local4++; }; if (_local12 >= b2Settings.b2_timeToSleep){ _local4 = 0; while (_local4 < m_bodyCount) { _local6 = m_bodies[_local4]; m_bodies[_local4].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local4++; }; }; }; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:int; var _local6:b2Body; var _local7:Boolean; var _local8:Boolean; var _local9:Boolean; var _local4:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _arg1.warmStarting = true; _local2 = 0; while (_local2 < m_jointCount) { m_joints[_local2].InitVelocityConstraints(_arg1); _local2++; }; _local2 = 0; while (_local2 < _arg1.velocityIterations) { _local4.SolveVelocityConstraints(); _local3 = 0; while (_local3 < m_jointCount) { m_joints[_local3].InitVelocityConstraints(_arg1); _local3++; }; _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local6 = m_bodies[_local2]; 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(); }; _local2++; }; var _local5:Number = 0.75; _local2 = 0; while (_local2 < _arg1.positionIterations) { _local7 = _local4.SolvePositionConstraints(_local5); _local8 = true; _local3 = 0; while (_local3 < m_jointCount) { _local9 = m_joints[_local3].SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local8 = ((_local8) && (_local9)); _local3++; }; if (((_local7) && (_local8))){ break; }; _local2++; }; Report(_local4.m_constraints); } } }//package Box2D.Dynamics
Section 83
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var inv_dt:Number; public var dt:Number; public var velocityIterations:int; public var dtRatio:Number; public var positionIterations:int; } }//package Box2D.Dynamics
Section 84
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { private var m_inv_dt0:Number; private var m_controllerCount:int; private var m_boundaryListener:b2BoundaryListener; private var m_controllerList:b2Controller; b2internal var m_contactList:b2Contact; b2internal var m_blockAllocator; b2internal var m_contactListener:b2ContactListener; b2internal var m_raycastSegment:b2Segment; b2internal var m_broadPhase:b2BroadPhase; private var m_destructionListener:b2DestructionListener; private var m_jointCount:int; private var m_bodyCount:int; b2internal var m_lock:Boolean; b2internal var m_raycastUserData; private var m_allowSleep:Boolean; b2internal var m_groundBody:b2Body; b2internal var m_contactCount:int; b2internal var m_raycastNormal:b2Vec2; b2internal var m_contactFilter:b2ContactFilter; b2internal var m_bodyList:b2Body; private var m_debugDraw:b2DebugDraw; b2internal var m_stackAllocator; private var m_jointList:b2Joint; private var m_gravity:b2Vec2; private var m_contactManager:b2ContactManager; private static var s_xf:b2XForm = new b2XForm(); private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); private static var m_continuousPhysics:Boolean; private static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ m_raycastNormal = new b2Vec2(); 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_controllerList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_controllerCount = 0; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); var _local4:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local4); } b2internal function DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.m_body1; var _local3:b2Body = _arg1.m_body2; var _local4:b2XForm = _local2.m_xf; var _local5:b2XForm = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchor1(); var _local9:b2Vec2 = _arg1.GetAnchor2(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } b2internal function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local11:b2XForm; var _local15:Boolean; var _local16:b2Controller; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local7:b2Vec2 = new b2Vec2(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Color = new b2Color(0, 0, 0); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_controllerBit)){ _local16 = m_controllerList; while (_local16) { _local16.Draw(m_debugDraw); _local16 = _local16.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); for each (_local17 in _local6.m_pairManager.m_pairs) { _local18 = _local17.proxy1; _local19 = _local17.proxy2; if (((!(_local18)) || (!(_local19)))){ } else { _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); }; }; }; 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 < _local6.m_proxyPool.length) { _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 _local5:b2JointEdge; var _local6:b2ControllerEdge; var _local7:b2Shape; if (m_lock == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local5 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local5.joint); }; DestroyJoint(_local5.joint); }; var _local3:b2ControllerEdge = _arg1.m_controllerList; while (_local3) { _local6 = _local3; _local3 = _local3.nextController; _local6.controller.RemoveBody(_arg1); }; var _local4:b2Shape = _arg1.m_shapeList; while (_local4) { _local7 = _local4; _local4 = _local4.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local7); }; _local7.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local7, 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--; } b2internal function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; var _local16:b2EdgeShape; var _local5:b2Color = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; case b2Shape.e_edgeShape: _local16 = (_arg1 as b2EdgeShape); m_debugDraw.DrawSegment(b2Math.b2MulX(_arg2, _local16.GetVertex1()), b2Math.b2MulX(_arg2, _local16.GetVertex2()), _arg3); if (_arg4){ m_debugDraw.DrawSegment(b2Math.b2MulX(_arg2, _local16.GetCoreVertex1()), b2Math.b2MulX(_arg2, _local16.GetCoreVertex2()), _local5); }; break; }; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DestroyController(_arg1:b2Controller):void{ _arg1.Clear(); if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1 == m_controllerList){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } b2internal function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local10:int; var _local11:int; var _local12:b2Body; var _local13:b2ContactEdge; var _local14:b2JointEdge; var _local15:Boolean; var _local3:b2Controller = m_controllerList; while (_local3) { _local3.Step(_arg1); _local3 = _local3.m_next; }; var _local4:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local5:b2Contact = m_contactList; while (_local5) { _local5.m_flags = (_local5.m_flags & ~(b2Contact.e_islandFlag)); _local5 = _local5.m_next; }; var _local6:b2Joint = m_jointList; while (_local6) { _local6.m_islandFlag = false; _local6 = _local6.m_next; }; var _local7:int = m_bodyCount; var _local8:Array = new Array(_local7); var _local9:b2Body = m_bodyList; while (_local9) { if ((_local9.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local9.IsStatic()){ } else { _local4.Clear(); _local10 = 0; var _temp1 = _local10; _local10 = (_local10 + 1); var _local16 = _temp1; _local8[_local16] = _local9; _local9.m_flags = (_local9.m_flags | b2Body.e_islandFlag); while (_local10 > 0) { --_local10; _local2 = _local8[_local10]; _local4.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local13 = _local2.m_contactList; while (_local13) { if ((_local13.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local13.contact.m_manifoldCount == 0){ } else { _local4.AddContact(_local13.contact); _local13.contact.m_flags = (_local13.contact.m_flags | b2Contact.e_islandFlag); _local12 = _local13.other; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local10; _local10 = (_local10 + 1); var _local17 = _temp2; _local8[_local17] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; }; _local13 = _local13.next; }; _local14 = _local2.m_jointList; while (_local14) { if (_local14.joint.m_islandFlag == true){ } else { _local4.AddJoint(_local14.joint); _local14.joint.m_islandFlag = true; _local12 = _local14.other; if ((_local12.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local10; _local10 = (_local10 + 1); _local17 = _temp3; _local8[_local17] = _local12; _local12.m_flags = (_local12.m_flags | b2Body.e_islandFlag); }; }; _local14 = _local14.next; }; }; }; _local4.Solve(_arg1, m_gravity, m_allowSleep); _local11 = 0; while (_local11 < _local4.m_bodyCount) { _local2 = _local4.m_bodies[_local11]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local11++; }; }; }; _local9 = _local9.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local15 = _local2.SynchronizeShapes(); if ((((_local15 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array = new Array(_arg3); var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); var _local6:int; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function GetContactCount():int{ return (m_contactCount); } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } b2internal 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:b2Joint; var _local12:b2Contact; var _local13:b2Contact; var _local14:Number; var _local15:b2Body; var _local16:int; var _local17:int; var _local18:b2JointEdge; var _local19:b2TimeStep; var _local20:int; var _local21:Number; var _local22:Number; var _local23:b2Body; var _local24:Boolean; var _local9:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, b2Settings.b2_maxTOIJointsPerIsland, m_stackAllocator, m_contactListener); var _local10:int = m_bodyCount; var _local11:Array = new Array(_local10); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local12 = m_contactList; while (_local12) { _local12.m_flags = (_local12.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local12 = _local12.m_next; }; _local8 = m_jointList; while (_local8) { _local8.m_islandFlag = false; _local8 = _local8.m_next; }; while (true) { _local13 = null; _local14 = 1; _local12 = m_contactList; for (;_local12;(_local12 = _local12.m_next)) { if ((_local12.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local21 = 1; if ((_local12.m_flags & b2Contact.e_toiFlag)){ _local21 = _local12.m_toi; } else { _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local22 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local22 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local22); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local22 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local22); }; }; _local21 = b2TimeOfImpact.TimeOfImpact(_local12.m_shape1, _local5.m_sweep, _local12.m_shape2, _local6.m_sweep); if ((((_local21 > 0)) && ((_local21 < 1)))){ _local21 = (((1 - _local21) * _local22) + _local21); if (_local21 > 1){ _local21 = 1; }; }; _local12.m_toi = _local21; _local12.m_flags = (_local12.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local21)) && ((_local21 < _local14)))){ _local13 = _local12; _local14 = _local21; }; }; }; if ((((_local13 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local14)))){ break; }; _local3 = _local13.m_shape1; _local4 = _local13.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local14); _local6.Advance(_local14); _local13.Update(m_contactListener); _local13.m_flags = (_local13.m_flags & ~(b2Contact.e_toiFlag)); if (_local13.m_manifoldCount == 0){ } else { _local15 = _local5; if (_local15.IsStatic()){ _local15 = _local6; }; _local9.Clear(); _local16 = 0; _local17 = 0; var _temp1 = _local17; _local17 = (_local17 + 1); _local11[(_local16 + _temp1)] = _local15; _local15.m_flags = (_local15.m_flags | b2Body.e_islandFlag); while (_local17 > 0) { var _temp2 = _local16; _local16 = (_local16 + 1); _local2 = _local11[_temp2]; _local17--; _local9.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local9.m_contactCount == _local9.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 { _local9.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local23 = _local7.other; if ((_local23.m_flags & b2Body.e_islandFlag)){ } else { if (_local23.IsStatic() == false){ _local23.Advance(_local14); _local23.WakeUp(); }; _local11[(_local16 + _local17)] = _local23; _local17++; _local23.m_flags = (_local23.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local18 = _local2.m_jointList; while (_local18) { if (_local9.m_jointCount == _local9.m_jointCapacity){ } else { if (_local18.joint.m_islandFlag == true){ } else { _local9.AddJoint(_local18.joint); _local18.joint.m_islandFlag = true; _local23 = _local18.other; if ((_local23.m_flags & b2Body.e_islandFlag)){ } else { if (!_local23.IsStatic()){ _local23.Advance(_local14); _local23.WakeUp(); }; _local11[(_local16 + _local17)] = _local23; _local17++; _local23.m_flags = (_local23.m_flags | b2Body.e_islandFlag); }; }; }; _local18 = _local18.next; }; _local19 = new b2TimeStep(); _local19.warmStarting = false; _local19.dt = ((1 - _local14) * _arg1.dt); _local19.inv_dt = (1 / _local19.dt); _local19.dtRatio = 0; _local19.velocityIterations = _arg1.velocityIterations; _local19.positionIterations = _arg1.positionIterations; _local9.SolveTOI(_local19); _local20 = 0; while (_local20 < _local9.m_bodyCount) { _local2 = _local9.m_bodies[_local20]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local24 = _local2.SynchronizeShapes(); if ((((_local24 == 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; }; }; }; _local20++; }; _local20 = 0; while (_local20 < _local9.m_contactCount) { _local12 = _local9.m_contacts[_local20]; _local9.m_contacts[_local20].m_flags = (_local12.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local20++; }; _local20 = 0; while (_local20 < _local9.m_jointCount) { _local8 = _local9.m_joints[_local20]; _local8.m_islandFlag = false; _local20++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetGravity():b2Vec2{ return (m_gravity); } public function Validate():void{ m_broadPhase.Validate(); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function Raycast(_arg1:b2Segment, _arg2:Array, _arg3:int, _arg4:Boolean, _arg5):int{ var _local7:int; var _local6:Array = new Array(_arg3); m_raycastSegment = _arg1; m_raycastUserData = _arg5; if (_arg4){ _local7 = m_broadPhase.QuerySegment(_arg1, _local6, _arg3, RaycastSortKey); } else { _local7 = m_broadPhase.QuerySegment(_arg1, _local6, _arg3, RaycastSortKey2); }; var _local8:int; while (_local8 < _local7) { _arg2[_local8] = _local6[_local8]; _local8++; }; return (_local7); } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local3:b2Body; var _local4:b2Shape; var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2Body; var _local6:b2Shape; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_body1; var _local4:b2Body = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateController(_arg1:b2Controller):b2Controller{ if (_arg1.m_world != this){ throw (new Error("Controller can only be a member of one world")); }; _arg1.m_next = m_controllerList; _arg1.m_prev = null; if (m_controllerList){ m_controllerList.m_prev = _arg1; }; m_controllerList = _arg1; m_controllerCount++; _arg1.m_world = this; return (_arg1); } b2internal function RaycastSortKey2(_arg1:b2Shape):Number{ if (((m_contactFilter) && (!(m_contactFilter.RayCollide(m_raycastUserData, _arg1))))){ return (-1); }; var _local2:b2Body = _arg1.GetBody(); var _local3:b2XForm = _local2.GetXForm(); var _local4:Array = [0]; if (_arg1.TestSegment(_local3, _local4, m_raycastNormal, m_raycastSegment, 1) != b2Shape.e_hitCollide){ return (-1); }; return (_local4[0]); } public function RaycastOne(_arg1:b2Segment, _arg2:Array, _arg3:b2Vec2, _arg4:Boolean, _arg5):b2Shape{ var _local6:Array = new Array(1); var _local7:Number = Raycast(_arg1, _local6, 1, _arg4, _arg5); if (_local7 == 0){ return (null); }; if (_local7 > 1){ trace(_local7); }; var _local8:b2Shape = _local6[0]; var _local9:b2XForm = _local8.GetBody().GetXForm(); _local8.TestSegment(_local9, _arg2, _arg3, _arg1, 1); return (_local8); } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (m_lock == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } b2internal function RaycastSortKey(_arg1:b2Shape):Number{ if (((m_contactFilter) && (!(m_contactFilter.RayCollide(m_raycastUserData, _arg1))))){ return (-1); }; var _local2:b2Body = _arg1.GetBody(); var _local3:b2XForm = _local2.GetXForm(); var _local4:Array = [0]; if (_arg1.TestSegment(_local3, _local4, m_raycastNormal, m_raycastSegment, 1) == b2Shape.e_missCollide){ return (-1); }; return (_local4[0]); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function RemoveController(_arg1:b2Controller):void{ 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 (m_controllerList == _arg1){ m_controllerList = _arg1.m_next; }; m_controllerCount--; } public function Step(_arg1:Number, _arg2:int, _arg3:int):void{ m_lock = true; var _local4:b2TimeStep = new b2TimeStep(); _local4.dt = _arg1; _local4.velocityIterations = _arg2; _local4.positionIterations = _arg3; if (_arg1 > 0){ _local4.inv_dt = (1 / _arg1); } else { _local4.inv_dt = 0; }; _local4.dtRatio = (m_inv_dt0 * _arg1); _local4.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local4.dt > 0){ Solve(_local4); }; if (((m_continuousPhysics) && ((_local4.dt > 0)))){ SolveTOI(_local4); }; DrawDebugData(); m_inv_dt0 = _local4.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function InRange(_arg1:b2AABB):Boolean{ return (m_broadPhase.InRange(_arg1)); } public function GetJointCount():int{ return (m_jointCount); } public function AddController(_arg1:b2Controller):b2Controller{ _arg1.m_next = m_controllerList; _arg1.m_prev = null; m_controllerList = _arg1; _arg1.m_world = this; m_controllerCount++; return (_arg1); } } }//package Box2D.Dynamics
Section 85
//AuxFunctions (caurina.transitions.AuxFunctions) package caurina.transitions { public class AuxFunctions { public static function getObjectLength(_arg1:Object):uint{ var _local3:String; var _local2:uint; for (_local3 in _arg1) { _local2++; }; return (_local2); } public static function numberToG(_arg1:Number):Number{ return (((_arg1 & 0xFF00) >> 8)); } public static function numberToB(_arg1:Number):Number{ return ((_arg1 & 0xFF)); } public static function numberToR(_arg1:Number):Number{ return (((_arg1 & 0xFF0000) >> 16)); } public static function concatObjects(... _args):Object{ var _local3:Object; var _local5:String; var _local2:Object = {}; var _local4:int; while (_local4 < _args.length) { _local3 = _args[_local4]; for (_local5 in _local3) { if (_local3[_local5] == null){ delete _local2[_local5]; } else { _local2[_local5] = _local3[_local5]; }; }; _local4++; }; return (_local2); } } }//package caurina.transitions
Section 86
//Equations (caurina.transitions.Equations) package caurina.transitions { public class Equations { public function Equations(){ trace("Equations is a static class and should not be instantiated."); } public static function easeOutBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); if (_arg1 < (1 / 2.75)){ return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2)); }; if (_arg1 < (2 / 2.75)){ _arg1 = (_arg1 - (1.5 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2)); }; if (_arg1 < (2.5 / 2.75)){ _arg1 = (_arg1 - (2.25 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2)); }; _arg1 = (_arg1 - (2.625 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2)); } public static function easeInOutElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 == 2){ return ((_arg2 + _arg3)); }; var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.period)))) ? (_arg4 * (0.3 * 1.5)) : _arg5.period; var _local8:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.amplitude)))) ? 0 : _arg5.amplitude; if (((!(Boolean(_local8))) || ((_local8 < Math.abs(_arg3))))){ _local8 = _arg3; _local7 = (_local6 / 4); } else { _local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local8))); }; if (_arg1 < 1){ --_arg1; return (((-0.5 * ((_local8 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2)); }; --_arg1; return ((((((_local8 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) * 0.5) + _arg3) + _arg2)); } public static function easeInOutQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2)); }; --_arg1; return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2)); } public static function easeInOutBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (((easeInBounce((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2)); }; return ((((easeOutBounce(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2)); } public static function easeInOutBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.overshoot)))) ? 1.70158 : _arg5.overshoot; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ _local6 = (_local6 * 1.525); return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_local6 + 1) * _arg1) - _local6))) + _arg2)); }; _arg1 = (_arg1 - 2); _local6 = (_local6 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_local6 + 1) * _arg1) + _local6)) + 2)) + _arg2)); } public static function easeOutInCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutCubic((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInCubic(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); } public static function easeOutBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.overshoot)))) ? 1.70158 : _arg5.overshoot; _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_local6 + 1) * _arg1) + _local6)) + 1)) + _arg2)); } public static function easeInOutSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2)); } public static function easeInBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.overshoot)))) ? 1.70158 : _arg5.overshoot; _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_local6 + 1) * _arg1) - _local6)) + _arg2)); } public static function easeInQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeOutInQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutQuint((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInQuint(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeOutInBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutBounce((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInBounce(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function init():void{ Tweener.registerTransition("easenone", easeNone); Tweener.registerTransition("linear", easeNone); Tweener.registerTransition("easeinquad", easeInQuad); Tweener.registerTransition("easeoutquad", easeOutQuad); Tweener.registerTransition("easeinoutquad", easeInOutQuad); Tweener.registerTransition("easeoutinquad", easeOutInQuad); Tweener.registerTransition("easeincubic", easeInCubic); Tweener.registerTransition("easeoutcubic", easeOutCubic); Tweener.registerTransition("easeinoutcubic", easeInOutCubic); Tweener.registerTransition("easeoutincubic", easeOutInCubic); Tweener.registerTransition("easeinquart", easeInQuart); Tweener.registerTransition("easeoutquart", easeOutQuart); Tweener.registerTransition("easeinoutquart", easeInOutQuart); Tweener.registerTransition("easeoutinquart", easeOutInQuart); Tweener.registerTransition("easeinquint", easeInQuint); Tweener.registerTransition("easeoutquint", easeOutQuint); Tweener.registerTransition("easeinoutquint", easeInOutQuint); Tweener.registerTransition("easeoutinquint", easeOutInQuint); Tweener.registerTransition("easeinsine", easeInSine); Tweener.registerTransition("easeoutsine", easeOutSine); Tweener.registerTransition("easeinoutsine", easeInOutSine); Tweener.registerTransition("easeoutinsine", easeOutInSine); Tweener.registerTransition("easeincirc", easeInCirc); Tweener.registerTransition("easeoutcirc", easeOutCirc); Tweener.registerTransition("easeinoutcirc", easeInOutCirc); Tweener.registerTransition("easeoutincirc", easeOutInCirc); Tweener.registerTransition("easeinexpo", easeInExpo); Tweener.registerTransition("easeoutexpo", easeOutExpo); Tweener.registerTransition("easeinoutexpo", easeInOutExpo); Tweener.registerTransition("easeoutinexpo", easeOutInExpo); Tweener.registerTransition("easeinelastic", easeInElastic); Tweener.registerTransition("easeoutelastic", easeOutElastic); Tweener.registerTransition("easeinoutelastic", easeInOutElastic); Tweener.registerTransition("easeoutinelastic", easeOutInElastic); Tweener.registerTransition("easeinback", easeInBack); Tweener.registerTransition("easeoutback", easeOutBack); Tweener.registerTransition("easeinoutback", easeInOutBack); Tweener.registerTransition("easeoutinback", easeOutInBack); Tweener.registerTransition("easeinbounce", easeInBounce); Tweener.registerTransition("easeoutbounce", easeOutBounce); Tweener.registerTransition("easeinoutbounce", easeInOutBounce); Tweener.registerTransition("easeoutinbounce", easeOutInBounce); } public static function easeOutExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return (((_arg1)==_arg4) ? (_arg2 + _arg3) : (((_arg3 * 1.001) * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2)); } public static function easeOutInBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutBack((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInBack(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeInExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return (((_arg1)==0) ? _arg2 : (((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2) - (_arg3 * 0.001))); } public static function easeInCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeInQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeInOutCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((-(_arg3) / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2)); } public static function easeInQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); return ((((_arg3 * _arg1) * _arg1) + _arg2)); } public static function easeInBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return (((_arg3 - easeOutBounce((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2)); } public static function easeOutInExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutExpo((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInExpo(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeOutQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2)); } public static function easeInSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg3) + _arg2)); } public static function easeInOutQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2)); } public static function easeOutQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2)); } public static function easeOutInElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutElastic((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInElastic(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeInElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.period)))) ? (_arg4 * 0.3) : _arg5.period; var _local8:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.amplitude)))) ? 0 : _arg5.amplitude; if (((!(Boolean(_local8))) || ((_local8 < Math.abs(_arg3))))){ _local8 = _arg3; _local7 = (_local6 / 4); } else { _local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local8))); }; --_arg1; return ((-(((_local8 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2)); } public static function easeOutCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeOutQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeOutInQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutQuad((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInQuad(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeOutSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2)); } public static function easeInOutCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2)); } public static function easeInOutQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2)); } public static function easeInCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = (_arg1 / _arg4); return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2)); } public static function easeOutInSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutSine((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInSine(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeInOutExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 == 0){ return (_arg2); }; if (_arg1 == _arg4){ return ((_arg2 + _arg3)); }; _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return (((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2) - (_arg3 * 0.0005))); }; --_arg1; return (((((_arg3 / 2) * 1.0005) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2)); } public static function easeOutElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.period)))) ? (_arg4 * 0.3) : _arg5.period; var _local8:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.amplitude)))) ? 0 : _arg5.amplitude; if (((!(Boolean(_local8))) || ((_local8 < Math.abs(_arg3))))){ _local8 = _arg3; _local7 = (_local6 / 4); } else { _local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local8))); }; return (((((_local8 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) + _arg3) + _arg2)); } public static function easeOutCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2)); } public static function easeOutInQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutQuart((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInQuart(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } public static function easeOutInCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{ if (_arg1 < (_arg4 / 2)){ return (easeOutCirc((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5)); }; return (easeInCirc(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5)); } } }//package caurina.transitions
Section 87
//PropertyInfoObj (caurina.transitions.PropertyInfoObj) package caurina.transitions { public class PropertyInfoObj { public var modifierParameters:Array; public var isSpecialProperty:Boolean; public var valueComplete:Number; public var modifierFunction:Function; public var extra:Object; public var valueStart:Number; public var hasModifier:Boolean; public var arrayIndex:Number; public var originalValueComplete:Object; public function PropertyInfoObj(_arg1:Number, _arg2:Number, _arg3:Object, _arg4:Number, _arg5:Object, _arg6:Boolean, _arg7:Function, _arg8:Array){ valueStart = _arg1; valueComplete = _arg2; originalValueComplete = _arg3; arrayIndex = _arg4; extra = _arg5; isSpecialProperty = _arg6; hasModifier = Boolean(_arg7); modifierFunction = _arg7; modifierParameters = _arg8; } public function toString():String{ var _local1 = "\n[PropertyInfoObj "; _local1 = (_local1 + ("valueStart:" + String(valueStart))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("valueComplete:" + String(valueComplete))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("originalValueComplete:" + String(originalValueComplete))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("arrayIndex:" + String(arrayIndex))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("extra:" + String(extra))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("isSpecialProperty:" + String(isSpecialProperty))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("hasModifier:" + String(hasModifier))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("modifierFunction:" + String(modifierFunction))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("modifierParameters:" + String(modifierParameters))); _local1 = (_local1 + "]\n"); return (_local1); } public function clone():PropertyInfoObj{ var _local1:PropertyInfoObj = new PropertyInfoObj(valueStart, valueComplete, originalValueComplete, arrayIndex, extra, isSpecialProperty, modifierFunction, modifierParameters); return (_local1); } } }//package caurina.transitions
Section 88
//SpecialProperty (caurina.transitions.SpecialProperty) package caurina.transitions { public class SpecialProperty { public var parameters:Array; public var getValue:Function; public var preProcess:Function; public var setValue:Function; public function SpecialProperty(_arg1:Function, _arg2:Function, _arg3:Array=null, _arg4:Function=null){ getValue = _arg1; setValue = _arg2; parameters = _arg3; preProcess = _arg4; } public function toString():String{ var _local1 = ""; _local1 = (_local1 + "[SpecialProperty "); _local1 = (_local1 + ("getValue:" + String(getValue))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("setValue:" + String(setValue))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("parameters:" + String(parameters))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("preProcess:" + String(preProcess))); _local1 = (_local1 + "]"); return (_local1); } } }//package caurina.transitions
Section 89
//SpecialPropertyModifier (caurina.transitions.SpecialPropertyModifier) package caurina.transitions { public class SpecialPropertyModifier { public var getValue:Function; public var modifyValues:Function; public function SpecialPropertyModifier(_arg1:Function, _arg2:Function){ modifyValues = _arg1; getValue = _arg2; } public function toString():String{ var _local1 = ""; _local1 = (_local1 + "[SpecialPropertyModifier "); _local1 = (_local1 + ("modifyValues:" + String(modifyValues))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("getValue:" + String(getValue))); _local1 = (_local1 + "]"); return (_local1); } } }//package caurina.transitions
Section 90
//SpecialPropertySplitter (caurina.transitions.SpecialPropertySplitter) package caurina.transitions { public class SpecialPropertySplitter { public var parameters:Array; public var splitValues:Function; public function SpecialPropertySplitter(_arg1:Function, _arg2:Array){ splitValues = _arg1; parameters = _arg2; } public function toString():String{ var _local1 = ""; _local1 = (_local1 + "[SpecialPropertySplitter "); _local1 = (_local1 + ("splitValues:" + String(splitValues))); _local1 = (_local1 + ", "); _local1 = (_local1 + ("parameters:" + String(parameters))); _local1 = (_local1 + "]"); return (_local1); } } }//package caurina.transitions
Section 91
//Tweener (caurina.transitions.Tweener) package caurina.transitions { import flash.events.*; import flash.display.*; import flash.utils.*; public class Tweener { private static var _timeScale:Number = 1; private static var _currentTimeFrame:Number; private static var _specialPropertySplitterList:Object; private static var _engineExists:Boolean = false; private static var _specialPropertyModifierList:Object; private static var _currentTime:Number; private static var _tweenList:Array; private static var _specialPropertyList:Object; private static var _transitionList:Object; private static var _inited:Boolean = false; private static var __tweener_controller__:MovieClip; public function Tweener(){ trace("Tweener is a static class and should not be instantiated."); } public static function registerSpecialPropertyModifier(_arg1:String, _arg2:Function, _arg3:Function):void{ if (!_inited){ init(); }; var _local4:SpecialPropertyModifier = new SpecialPropertyModifier(_arg2, _arg3); _specialPropertyModifierList[_arg1] = _local4; } public static function registerSpecialProperty(_arg1:String, _arg2:Function, _arg3:Function, _arg4:Array=null, _arg5:Function=null):void{ if (!_inited){ init(); }; var _local6:SpecialProperty = new SpecialProperty(_arg2, _arg3, _arg4, _arg5); _specialPropertyList[_arg1] = _local6; } public static function init(... _args):void{ _inited = true; _transitionList = new Object(); Equations.init(); _specialPropertyList = new Object(); _specialPropertyModifierList = new Object(); _specialPropertySplitterList = new Object(); } private static function updateTweens():Boolean{ var _local1:int; if (_tweenList.length == 0){ return (false); }; _local1 = 0; while (_local1 < _tweenList.length) { if ((((_tweenList[_local1] == undefined)) || (!(_tweenList[_local1].isPaused)))){ if (!updateTweenByIndex(_local1)){ removeTweenByIndex(_local1); }; if (_tweenList[_local1] == null){ removeTweenByIndex(_local1, true); _local1--; }; }; _local1++; }; return (true); } public static function addCaller(_arg1:Object=null, _arg2:Object=null):Boolean{ var _local3:Number; var _local4:Array; var _local8:Function; var _local9:TweenListObj; var _local10:Number; var _local11:String; if (!Boolean(_arg1)){ return (false); }; if ((_arg1 is Array)){ _local4 = _arg1.concat(); } else { _local4 = [_arg1]; }; var _local5:Object = _arg2; if (!_inited){ init(); }; if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){ startEngine(); }; var _local6:Number = (isNaN(_local5.time)) ? 0 : _local5.time; var _local7:Number = (isNaN(_local5.delay)) ? 0 : _local5.delay; if (typeof(_local5.transition) == "string"){ _local11 = _local5.transition.toLowerCase(); _local8 = _transitionList[_local11]; } else { _local8 = _local5.transition; }; if (!Boolean(_local8)){ _local8 = _transitionList["easeoutexpo"]; }; _local3 = 0; while (_local3 < _local4.length) { if (_local5.useFrames == true){ _local9 = new TweenListObj(_local4[_local3], (_currentTimeFrame + (_local7 / _timeScale)), (_currentTimeFrame + ((_local7 + _local6) / _timeScale)), true, _local8, _local5.transitionParams); } else { _local9 = new TweenListObj(_local4[_local3], (_currentTime + ((_local7 * 1000) / _timeScale)), (_currentTime + (((_local7 * 1000) + (_local6 * 1000)) / _timeScale)), false, _local8, _local5.transitionParams); }; _local9.properties = null; _local9.onStart = _local5.onStart; _local9.onUpdate = _local5.onUpdate; _local9.onComplete = _local5.onComplete; _local9.onOverwrite = _local5.onOverwrite; _local9.onStartParams = _local5.onStartParams; _local9.onUpdateParams = _local5.onUpdateParams; _local9.onCompleteParams = _local5.onCompleteParams; _local9.onOverwriteParams = _local5.onOverwriteParams; _local9.onStartScope = _local5.onStartScope; _local9.onUpdateScope = _local5.onUpdateScope; _local9.onCompleteScope = _local5.onCompleteScope; _local9.onOverwriteScope = _local5.onOverwriteScope; _local9.onErrorScope = _local5.onErrorScope; _local9.isCaller = true; _local9.count = _local5.count; _local9.waitFrames = _local5.waitFrames; _tweenList.push(_local9); if ((((_local6 == 0)) && ((_local7 == 0)))){ _local10 = (_tweenList.length - 1); updateTweenByIndex(_local10); removeTweenByIndex(_local10); }; _local3++; }; return (true); } public static function pauseAllTweens():Boolean{ var _local2:uint; if (!Boolean(_tweenList)){ return (false); }; var _local1:Boolean; _local2 = 0; while (_local2 < _tweenList.length) { pauseTweenByIndex(_local2); _local1 = true; _local2++; }; return (_local1); } public static function removeTweens(_arg1:Object, ... _args):Boolean{ var _local4:uint; var _local5:SpecialPropertySplitter; var _local6:Array; var _local7:uint; var _local3:Array = new Array(); _local4 = 0; while (_local4 < _args.length) { if ((((typeof(_args[_local4]) == "string")) && ((_local3.indexOf(_args[_local4]) == -1)))){ if (_specialPropertySplitterList[_args[_local4]]){ _local5 = _specialPropertySplitterList[_args[_local4]]; _local6 = _local5.splitValues(_arg1, null); _local7 = 0; while (_local7 < _local6.length) { _local3.push(_local6[_local7].name); _local7++; }; } else { _local3.push(_args[_local4]); }; }; _local4++; }; return (affectTweens(removeTweenByIndex, _arg1, _local3)); } public static function splitTweens(_arg1:Number, _arg2:Array):uint{ var _local5:uint; var _local6:String; var _local7:Boolean; var _local3:TweenListObj = _tweenList[_arg1]; var _local4:TweenListObj = _local3.clone(false); _local5 = 0; while (_local5 < _arg2.length) { _local6 = _arg2[_local5]; if (Boolean(_local3.properties[_local6])){ _local3.properties[_local6] = undefined; delete _local3.properties[_local6]; }; _local5++; }; for (_local6 in _local4.properties) { _local7 = false; _local5 = 0; while (_local5 < _arg2.length) { if (_arg2[_local5] == _local6){ _local7 = true; break; }; _local5++; }; if (!_local7){ _local4.properties[_local6] = undefined; delete _local4.properties[_local6]; }; }; _tweenList.push(_local4); return ((_tweenList.length - 1)); } public static function updateFrame():void{ _currentTimeFrame++; } public static function resumeTweenByIndex(_arg1:Number):Boolean{ var _local2:TweenListObj = _tweenList[_arg1]; if ((((_local2 == null)) || (!(_local2.isPaused)))){ return (false); }; var _local3:Number = getCurrentTweeningTime(_local2); _local2.timeStart = (_local2.timeStart + (_local3 - _local2.timePaused)); _local2.timeComplete = (_local2.timeComplete + (_local3 - _local2.timePaused)); _local2.timePaused = undefined; _local2.isPaused = false; return (true); } public static function getVersion():String{ return ("AS3 1.31.74"); } public static function onEnterFrame(_arg1:Event):void{ updateTime(); updateFrame(); var _local2:Boolean; _local2 = updateTweens(); if (!_local2){ stopEngine(); }; } public static function updateTime():void{ _currentTime = getTimer(); } private static function updateTweenByIndex(_arg1:Number):Boolean{ var tTweening:TweenListObj; var mustUpdate:Boolean; var nv:Number; var t:Number; var b:Number; var c:Number; var d:Number; var pName:String; var eventScope:Object; var tScope:Object; var tProperty:Object; var pv:Number; var i = _arg1; tTweening = _tweenList[i]; if ((((tTweening == null)) || (!(Boolean(tTweening.scope))))){ return (false); }; var isOver:Boolean; var cTime:Number = getCurrentTweeningTime(tTweening); if (cTime >= tTweening.timeStart){ tScope = tTweening.scope; if (tTweening.isCaller){ do { t = (((tTweening.timeComplete - tTweening.timeStart) / tTweening.count) * (tTweening.timesCalled + 1)); b = tTweening.timeStart; c = (tTweening.timeComplete - tTweening.timeStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, b, c, d); } while (!(cTime >= nv)); } else { mustUpdate = (((((tTweening.skipUpdates < 1)) || (!(tTweening.skipUpdates)))) || ((tTweening.updatesSkipped >= tTweening.skipUpdates))); if (cTime >= tTweening.timeComplete){ isOver = true; mustUpdate = true; }; if (!tTweening.hasStarted){ if (Boolean(tTweening.onStart)){ eventScope = (Boolean(tTweening.onStartScope)) ? tTweening.onStartScope : tScope; try { tTweening.onStart.apply(eventScope, tTweening.onStartParams); } catch(e2:Error) { handleError(tTweening, e2, "onStart"); }; }; for (pName in tTweening.properties) { if (tTweening.properties[pName].isSpecialProperty){ if (Boolean(_specialPropertyList[pName].preProcess)){ tTweening.properties[pName].valueComplete = _specialPropertyList[pName].preProcess(tScope, _specialPropertyList[pName].parameters, tTweening.properties[pName].originalValueComplete, tTweening.properties[pName].extra); }; pv = _specialPropertyList[pName].getValue(tScope, _specialPropertyList[pName].parameters, tTweening.properties[pName].extra); } else { pv = tScope[pName]; }; tTweening.properties[pName].valueStart = (isNaN(pv)) ? tTweening.properties[pName].valueComplete : pv; }; mustUpdate = true; tTweening.hasStarted = true; }; if (mustUpdate){ for (pName in tTweening.properties) { tProperty = tTweening.properties[pName]; if (isOver){ nv = tProperty.valueComplete; } else { if (tProperty.hasModifier){ t = (cTime - tTweening.timeStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, 0, 1, d, tTweening.transitionParams); nv = tProperty.modifierFunction(tProperty.valueStart, tProperty.valueComplete, nv, tProperty.modifierParameters); } else { t = (cTime - tTweening.timeStart); b = tProperty.valueStart; c = (tProperty.valueComplete - tProperty.valueStart); d = (tTweening.timeComplete - tTweening.timeStart); nv = tTweening.transition(t, b, c, d, tTweening.transitionParams); }; }; if (tTweening.rounded){ nv = Math.round(nv); }; if (tProperty.isSpecialProperty){ _specialPropertyList[pName].setValue(tScope, nv, _specialPropertyList[pName].parameters, tTweening.properties[pName].extra); } else { tScope[pName] = nv; }; }; tTweening.updatesSkipped = 0; if (Boolean(tTweening.onUpdate)){ eventScope = (Boolean(tTweening.onUpdateScope)) ? tTweening.onUpdateScope : tScope; try { tTweening.onUpdate.apply(eventScope, tTweening.onUpdateParams); } catch(e3:Error) { handleError(tTweening, e3, "onUpdate"); }; }; } else { tTweening.updatesSkipped++; }; }; if (((isOver) && (Boolean(tTweening.onComplete)))){ eventScope = (Boolean(tTweening.onCompleteScope)) ? tTweening.onCompleteScope : tScope; try { tTweening.onComplete.apply(eventScope, tTweening.onCompleteParams); } catch(e4:Error) { handleError(tTweening, e4, "onComplete"); }; }; return (!(isOver)); }; return (true); } public static function setTimeScale(_arg1:Number):void{ var _local2:Number; var _local3:Number; if (isNaN(_arg1)){ _arg1 = 1; }; if (_arg1 < 1E-5){ _arg1 = 1E-5; }; if (_arg1 != _timeScale){ if (_tweenList != null){ _local2 = 0; while (_local2 < _tweenList.length) { _local3 = getCurrentTweeningTime(_tweenList[_local2]); _tweenList[_local2].timeStart = (_local3 - (((_local3 - _tweenList[_local2].timeStart) * _timeScale) / _arg1)); _tweenList[_local2].timeComplete = (_local3 - (((_local3 - _tweenList[_local2].timeComplete) * _timeScale) / _arg1)); if (_tweenList[_local2].timePaused != undefined){ _tweenList[_local2].timePaused = (_local3 - (((_local3 - _tweenList[_local2].timePaused) * _timeScale) / _arg1)); }; _local2++; }; }; _timeScale = _arg1; }; } public static function resumeAllTweens():Boolean{ var _local2:uint; if (!Boolean(_tweenList)){ return (false); }; var _local1:Boolean; _local2 = 0; while (_local2 < _tweenList.length) { resumeTweenByIndex(_local2); _local1 = true; _local2++; }; return (_local1); } private static function handleError(_arg1:TweenListObj, _arg2:Error, _arg3:String):void{ var eventScope:Object; var pTweening = _arg1; var pError = _arg2; var pCallBackName = _arg3; if (((Boolean(pTweening.onError)) && ((pTweening.onError is Function)))){ eventScope = (Boolean(pTweening.onErrorScope)) ? pTweening.onErrorScope : pTweening.scope; try { pTweening.onError.apply(eventScope, [pTweening.scope, pError]); } catch(metaError:Error) { printError(((((String(pTweening.scope) + " raised an error while executing the 'onError' handler. Original error:\n ") + pError.getStackTrace()) + "\nonError error: ") + metaError.getStackTrace())); }; } else { if (!Boolean(pTweening.onError)){ printError(((((String(pTweening.scope) + " raised an error while executing the '") + pCallBackName) + "'handler. \n") + pError.getStackTrace())); }; }; } private static function startEngine():void{ _engineExists = true; _tweenList = new Array(); __tweener_controller__ = new MovieClip(); __tweener_controller__.addEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame); _currentTimeFrame = 0; updateTime(); } public static function removeAllTweens():Boolean{ var _local2:uint; if (!Boolean(_tweenList)){ return (false); }; var _local1:Boolean; _local2 = 0; while (_local2 < _tweenList.length) { removeTweenByIndex(_local2); _local1 = true; _local2++; }; return (_local1); } public static function addTween(_arg1:Object=null, _arg2:Object=null):Boolean{ var _local3:Number; var _local4:Number; var _local5:String; var _local6:Array; var _local13:Function; var _local14:Object; var _local15:TweenListObj; var _local16:Number; var _local17:Array; var _local18:Array; var _local19:Array; var _local20:String; if (!Boolean(_arg1)){ return (false); }; if ((_arg1 is Array)){ _local6 = _arg1.concat(); } else { _local6 = [_arg1]; }; var _local7:Object = TweenListObj.makePropertiesChain(_arg2); if (!_inited){ init(); }; if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){ startEngine(); }; var _local8:Number = (isNaN(_local7.time)) ? 0 : _local7.time; var _local9:Number = (isNaN(_local7.delay)) ? 0 : _local7.delay; var _local10:Array = new Array(); var _local11:Object = {time:true, delay:true, useFrames:true, skipUpdates:true, transition:true, transitionParams:true, onStart:true, onUpdate:true, onComplete:true, onOverwrite:true, onError:true, rounded:true, onStartParams:true, onUpdateParams:true, onCompleteParams:true, onOverwriteParams:true, onStartScope:true, onUpdateScope:true, onCompleteScope:true, onOverwriteScope:true, onErrorScope:true}; var _local12:Object = new Object(); for (_local5 in _local7) { if (!_local11[_local5]){ if (_specialPropertySplitterList[_local5]){ _local17 = _specialPropertySplitterList[_local5].splitValues(_local7[_local5], _specialPropertySplitterList[_local5].parameters); _local3 = 0; while (_local3 < _local17.length) { if (_specialPropertySplitterList[_local17[_local3].name]){ _local18 = _specialPropertySplitterList[_local17[_local3].name].splitValues(_local17[_local3].value, _specialPropertySplitterList[_local17[_local3].name].parameters); _local4 = 0; while (_local4 < _local18.length) { _local10[_local18[_local4].name] = {valueStart:undefined, valueComplete:_local18[_local4].value, arrayIndex:_local18[_local4].arrayIndex, isSpecialProperty:false}; _local4++; }; } else { _local10[_local17[_local3].name] = {valueStart:undefined, valueComplete:_local17[_local3].value, arrayIndex:_local17[_local3].arrayIndex, isSpecialProperty:false}; }; _local3++; }; } else { if (_specialPropertyModifierList[_local5] != undefined){ _local19 = _specialPropertyModifierList[_local5].modifyValues(_local7[_local5]); _local3 = 0; while (_local3 < _local19.length) { _local12[_local19[_local3].name] = {modifierParameters:_local19[_local3].parameters, modifierFunction:_specialPropertyModifierList[_local5].getValue}; _local3++; }; } else { _local10[_local5] = {valueStart:undefined, valueComplete:_local7[_local5]}; }; }; }; }; for (_local5 in _local10) { if (_specialPropertyList[_local5] != undefined){ _local10[_local5].isSpecialProperty = true; } else { if (_local6[0][_local5] == undefined){ printError((((("The property '" + _local5) + "' doesn't seem to be a normal object property of ") + String(_local6[0])) + " or a registered special property.")); }; }; }; for (_local5 in _local12) { if (_local10[_local5] != undefined){ _local10[_local5].modifierParameters = _local12[_local5].modifierParameters; _local10[_local5].modifierFunction = _local12[_local5].modifierFunction; }; }; if (typeof(_local7.transition) == "string"){ _local20 = _local7.transition.toLowerCase(); _local13 = _transitionList[_local20]; } else { _local13 = _local7.transition; }; if (!Boolean(_local13)){ _local13 = _transitionList["easeoutexpo"]; }; _local3 = 0; while (_local3 < _local6.length) { _local14 = new Object(); for (_local5 in _local10) { _local14[_local5] = new PropertyInfoObj(_local10[_local5].valueStart, _local10[_local5].valueComplete, _local10[_local5].valueComplete, _local10[_local5].arrayIndex, {}, _local10[_local5].isSpecialProperty, _local10[_local5].modifierFunction, _local10[_local5].modifierParameters); }; if (_local7.useFrames == true){ _local15 = new TweenListObj(_local6[_local3], (_currentTimeFrame + (_local9 / _timeScale)), (_currentTimeFrame + ((_local9 + _local8) / _timeScale)), true, _local13, _local7.transitionParams); } else { _local15 = new TweenListObj(_local6[_local3], (_currentTime + ((_local9 * 1000) / _timeScale)), (_currentTime + (((_local9 * 1000) + (_local8 * 1000)) / _timeScale)), false, _local13, _local7.transitionParams); }; _local15.properties = _local14; _local15.onStart = _local7.onStart; _local15.onUpdate = _local7.onUpdate; _local15.onComplete = _local7.onComplete; _local15.onOverwrite = _local7.onOverwrite; _local15.onError = _local7.onError; _local15.onStartParams = _local7.onStartParams; _local15.onUpdateParams = _local7.onUpdateParams; _local15.onCompleteParams = _local7.onCompleteParams; _local15.onOverwriteParams = _local7.onOverwriteParams; _local15.onStartScope = _local7.onStartScope; _local15.onUpdateScope = _local7.onUpdateScope; _local15.onCompleteScope = _local7.onCompleteScope; _local15.onOverwriteScope = _local7.onOverwriteScope; _local15.onErrorScope = _local7.onErrorScope; _local15.rounded = _local7.rounded; _local15.skipUpdates = _local7.skipUpdates; removeTweensByTime(_local15.scope, _local15.properties, _local15.timeStart, _local15.timeComplete); _tweenList.push(_local15); if ((((_local8 == 0)) && ((_local9 == 0)))){ _local16 = (_tweenList.length - 1); updateTweenByIndex(_local16); removeTweenByIndex(_local16); }; _local3++; }; return (true); } public static function registerTransition(_arg1:String, _arg2:Function):void{ if (!_inited){ init(); }; _transitionList[_arg1] = _arg2; } public static function printError(_arg1:String):void{ } private static function affectTweens(_arg1:Function, _arg2:Object, _arg3:Array):Boolean{ var _local5:uint; var _local6:Array; var _local7:uint; var _local8:uint; var _local9:uint; var _local4:Boolean; if (!Boolean(_tweenList)){ return (false); }; _local5 = 0; while (_local5 < _tweenList.length) { if (((_tweenList[_local5]) && ((_tweenList[_local5].scope == _arg2)))){ if (_arg3.length == 0){ _arg1(_local5); _local4 = true; } else { _local6 = new Array(); _local7 = 0; while (_local7 < _arg3.length) { if (Boolean(_tweenList[_local5].properties[_arg3[_local7]])){ _local6.push(_arg3[_local7]); }; _local7++; }; if (_local6.length > 0){ _local8 = AuxFunctions.getObjectLength(_tweenList[_local5].properties); if (_local8 == _local6.length){ _arg1(_local5); _local4 = true; } else { _local9 = splitTweens(_local5, _local6); _arg1(_local9); _local4 = true; }; }; }; }; _local5++; }; return (_local4); } public static function getTweens(_arg1:Object):Array{ var _local2:uint; var _local3:String; if (!Boolean(_tweenList)){ return ([]); }; var _local4:Array = new Array(); _local2 = 0; while (_local2 < _tweenList.length) { if (((Boolean(_tweenList[_local2])) && ((_tweenList[_local2].scope == _arg1)))){ for (_local3 in _tweenList[_local2].properties) { _local4.push(_local3); }; }; _local2++; }; return (_local4); } public static function isTweening(_arg1:Object):Boolean{ var _local2:uint; if (!Boolean(_tweenList)){ return (false); }; _local2 = 0; while (_local2 < _tweenList.length) { if (((Boolean(_tweenList[_local2])) && ((_tweenList[_local2].scope == _arg1)))){ return (true); }; _local2++; }; return (false); } public static function pauseTweenByIndex(_arg1:Number):Boolean{ var _local2:TweenListObj = _tweenList[_arg1]; if ((((_local2 == null)) || (_local2.isPaused))){ return (false); }; _local2.timePaused = getCurrentTweeningTime(_local2); _local2.isPaused = true; return (true); } public static function getCurrentTweeningTime(_arg1:Object):Number{ return ((_arg1.useFrames) ? _currentTimeFrame : _currentTime); } public static function getTweenCount(_arg1:Object):Number{ var _local2:uint; if (!Boolean(_tweenList)){ return (0); }; var _local3:Number = 0; _local2 = 0; while (_local2 < _tweenList.length) { if (((Boolean(_tweenList[_local2])) && ((_tweenList[_local2].scope == _arg1)))){ _local3 = (_local3 + AuxFunctions.getObjectLength(_tweenList[_local2].properties)); }; _local2++; }; return (_local3); } private static function stopEngine():void{ _engineExists = false; _tweenList = null; _currentTime = 0; _currentTimeFrame = 0; __tweener_controller__.removeEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame); __tweener_controller__ = null; } public static function removeTweensByTime(_arg1:Object, _arg2:Object, _arg3:Number, _arg4:Number):Boolean{ var removedLocally:Boolean; var i:uint; var pName:String; var eventScope:Object; var p_scope = _arg1; var p_properties = _arg2; var p_timeStart = _arg3; var p_timeComplete = _arg4; var removed:Boolean; var tl:uint = _tweenList.length; i = 0; while (i < tl) { if (((Boolean(_tweenList[i])) && ((p_scope == _tweenList[i].scope)))){ if ((((p_timeComplete > _tweenList[i].timeStart)) && ((p_timeStart < _tweenList[i].timeComplete)))){ removedLocally = false; for (pName in _tweenList[i].properties) { if (Boolean(p_properties[pName])){ if (Boolean(_tweenList[i].onOverwrite)){ eventScope = (Boolean(_tweenList[i].onOverwriteScope)) ? _tweenList[i].onOverwriteScope : _tweenList[i].scope; try { _tweenList[i].onOverwrite.apply(eventScope, _tweenList[i].onOverwriteParams); } catch(e:Error) { handleError(_tweenList[i], e, "onOverwrite"); }; }; _tweenList[i].properties[pName] = undefined; delete _tweenList[i].properties[pName]; removedLocally = true; removed = true; }; }; if (removedLocally){ if (AuxFunctions.getObjectLength(_tweenList[i].properties) == 0){ removeTweenByIndex(i); }; }; }; }; i = (i + 1); }; return (removed); } public static function registerSpecialPropertySplitter(_arg1:String, _arg2:Function, _arg3:Array=null):void{ if (!_inited){ init(); }; var _local4:SpecialPropertySplitter = new SpecialPropertySplitter(_arg2, _arg3); _specialPropertySplitterList[_arg1] = _local4; } public static function removeTweenByIndex(_arg1:Number, _arg2:Boolean=false):Boolean{ _tweenList[_arg1] = null; if (_arg2){ _tweenList.splice(_arg1, 1); }; return (true); } public static function resumeTweens(_arg1:Object, ... _args):Boolean{ var _local4:uint; var _local3:Array = new Array(); _local4 = 0; while (_local4 < _args.length) { if ((((typeof(_args[_local4]) == "string")) && ((_local3.indexOf(_args[_local4]) == -1)))){ _local3.push(_args[_local4]); }; _local4++; }; return (affectTweens(resumeTweenByIndex, _arg1, _local3)); } public static function pauseTweens(_arg1:Object, ... _args):Boolean{ var _local4:uint; var _local3:Array = new Array(); _local4 = 0; while (_local4 < _args.length) { if ((((typeof(_args[_local4]) == "string")) && ((_local3.indexOf(_args[_local4]) == -1)))){ _local3.push(_args[_local4]); }; _local4++; }; return (affectTweens(pauseTweenByIndex, _arg1, _local3)); } } }//package caurina.transitions
Section 92
//TweenListObj (caurina.transitions.TweenListObj) package caurina.transitions { public class TweenListObj { public var hasStarted:Boolean; public var onUpdate:Function; public var useFrames:Boolean; public var count:Number; public var onOverwriteParams:Array; public var timeStart:Number; public var timeComplete:Number; public var onStartParams:Array; public var onUpdateScope:Object; public var rounded:Boolean; public var onUpdateParams:Array; public var properties:Object; public var onComplete:Function; public var transitionParams:Object; public var updatesSkipped:Number; public var onStart:Function; public var onOverwriteScope:Object; public var skipUpdates:Number; public var onStartScope:Object; public var scope:Object; public var isCaller:Boolean; public var timePaused:Number; public var transition:Function; public var onCompleteParams:Array; public var onError:Function; public var timesCalled:Number; public var onErrorScope:Object; public var onOverwrite:Function; public var isPaused:Boolean; public var waitFrames:Boolean; public var onCompleteScope:Object; public function TweenListObj(_arg1:Object, _arg2:Number, _arg3:Number, _arg4:Boolean, _arg5:Function, _arg6:Object){ scope = _arg1; timeStart = _arg2; timeComplete = _arg3; useFrames = _arg4; transition = _arg5; transitionParams = _arg6; properties = new Object(); isPaused = false; timePaused = undefined; isCaller = false; updatesSkipped = 0; timesCalled = 0; skipUpdates = 0; hasStarted = false; } public function clone(_arg1:Boolean):TweenListObj{ var _local3:String; var _local2:TweenListObj = new TweenListObj(scope, timeStart, timeComplete, useFrames, transition, transitionParams); _local2.properties = new Array(); for (_local3 in properties) { _local2.properties[_local3] = properties[_local3].clone(); }; _local2.skipUpdates = skipUpdates; _local2.updatesSkipped = updatesSkipped; if (!_arg1){ _local2.onStart = onStart; _local2.onUpdate = onUpdate; _local2.onComplete = onComplete; _local2.onOverwrite = onOverwrite; _local2.onError = onError; _local2.onStartParams = onStartParams; _local2.onUpdateParams = onUpdateParams; _local2.onCompleteParams = onCompleteParams; _local2.onOverwriteParams = onOverwriteParams; _local2.onStartScope = onStartScope; _local2.onUpdateScope = onUpdateScope; _local2.onCompleteScope = onCompleteScope; _local2.onOverwriteScope = onOverwriteScope; _local2.onErrorScope = onErrorScope; }; _local2.rounded = rounded; _local2.isPaused = isPaused; _local2.timePaused = timePaused; _local2.isCaller = isCaller; _local2.count = count; _local2.timesCalled = timesCalled; _local2.waitFrames = waitFrames; _local2.hasStarted = hasStarted; return (_local2); } public function toString():String{ var _local3:String; var _local1 = "\n[TweenListObj "; _local1 = (_local1 + ("scope:" + String(scope))); _local1 = (_local1 + ", properties:"); var _local2:Boolean; for (_local3 in properties) { if (!_local2){ _local1 = (_local1 + ","); }; _local1 = (_local1 + ("[name:" + properties[_local3].name)); _local1 = (_local1 + (",valueStart:" + properties[_local3].valueStart)); _local1 = (_local1 + (",valueComplete:" + properties[_local3].valueComplete)); _local1 = (_local1 + "]"); _local2 = false; }; _local1 = (_local1 + (", timeStart:" + String(timeStart))); _local1 = (_local1 + (", timeComplete:" + String(timeComplete))); _local1 = (_local1 + (", useFrames:" + String(useFrames))); _local1 = (_local1 + (", transition:" + String(transition))); _local1 = (_local1 + (", transitionParams:" + String(transitionParams))); if (skipUpdates){ _local1 = (_local1 + (", skipUpdates:" + String(skipUpdates))); }; if (updatesSkipped){ _local1 = (_local1 + (", updatesSkipped:" + String(updatesSkipped))); }; if (Boolean(onStart)){ _local1 = (_local1 + (", onStart:" + String(onStart))); }; if (Boolean(onUpdate)){ _local1 = (_local1 + (", onUpdate:" + String(onUpdate))); }; if (Boolean(onComplete)){ _local1 = (_local1 + (", onComplete:" + String(onComplete))); }; if (Boolean(onOverwrite)){ _local1 = (_local1 + (", onOverwrite:" + String(onOverwrite))); }; if (Boolean(onError)){ _local1 = (_local1 + (", onError:" + String(onError))); }; if (onStartParams){ _local1 = (_local1 + (", onStartParams:" + String(onStartParams))); }; if (onUpdateParams){ _local1 = (_local1 + (", onUpdateParams:" + String(onUpdateParams))); }; if (onCompleteParams){ _local1 = (_local1 + (", onCompleteParams:" + String(onCompleteParams))); }; if (onOverwriteParams){ _local1 = (_local1 + (", onOverwriteParams:" + String(onOverwriteParams))); }; if (onStartScope){ _local1 = (_local1 + (", onStartScope:" + String(onStartScope))); }; if (onUpdateScope){ _local1 = (_local1 + (", onUpdateScope:" + String(onUpdateScope))); }; if (onCompleteScope){ _local1 = (_local1 + (", onCompleteScope:" + String(onCompleteScope))); }; if (onOverwriteScope){ _local1 = (_local1 + (", onOverwriteScope:" + String(onOverwriteScope))); }; if (onErrorScope){ _local1 = (_local1 + (", onErrorScope:" + String(onErrorScope))); }; if (rounded){ _local1 = (_local1 + (", rounded:" + String(rounded))); }; if (isPaused){ _local1 = (_local1 + (", isPaused:" + String(isPaused))); }; if (timePaused){ _local1 = (_local1 + (", timePaused:" + String(timePaused))); }; if (isCaller){ _local1 = (_local1 + (", isCaller:" + String(isCaller))); }; if (count){ _local1 = (_local1 + (", count:" + String(count))); }; if (timesCalled){ _local1 = (_local1 + (", timesCalled:" + String(timesCalled))); }; if (waitFrames){ _local1 = (_local1 + (", waitFrames:" + String(waitFrames))); }; if (hasStarted){ _local1 = (_local1 + (", hasStarted:" + String(hasStarted))); }; _local1 = (_local1 + "]\n"); return (_local1); } public static function makePropertiesChain(_arg1:Object):Object{ var _local3:Object; var _local4:Object; var _local5:Object; var _local6:Number; var _local7:Number; var _local8:Number; var _local2:Object = _arg1.base; if (_local2){ _local3 = {}; if ((_local2 is Array)){ _local4 = []; _local8 = 0; while (_local8 < _local2.length) { _local4.push(_local2[_local8]); _local8++; }; } else { _local4 = [_local2]; }; _local4.push(_arg1); _local6 = _local4.length; _local7 = 0; while (_local7 < _local6) { if (_local4[_local7]["base"]){ _local5 = AuxFunctions.concatObjects(makePropertiesChain(_local4[_local7]["base"]), _local4[_local7]); } else { _local5 = _local4[_local7]; }; _local3 = AuxFunctions.concatObjects(_local3, _local5); _local7++; }; if (_local3["base"]){ delete _local3["base"]; }; return (_local3); //unresolved jump }; return (_arg1); } } }//package caurina.transitions
Section 93
//Label (com.dimonte.ui.Label) package com.dimonte.ui { import flash.events.*; import flash.display.*; import flash.text.*; public class Label extends Sprite { protected var _align:String; protected var _embedFonts:Boolean; protected var _text:String; protected var textField:TextField; protected var _textFormat:TextFormat; protected var _autoSize:String; public function Label(){ textField = new TextField(); this.addChild(textField); textField.autoSize = TextFieldAutoSize.LEFT; textField.selectable = false; textField.multiline = true; textField.wordWrap = true; textField.embedFonts = true; textField.mouseEnabled = false; addEventListener(Event.REMOVED_FROM_STAGE, removedListener); } public function get textFormat():TextFormat{ return (_textFormat); } public function get align():String{ return (textField.defaultTextFormat.align); } public function set textFormat(_arg1:TextFormat):void{ _textFormat = _arg1; if (_textFormat){ textField.defaultTextFormat = _textFormat; }; } public function get autoSize():String{ return (textField.autoSize); } public function set align(_arg1:String):void{ _textFormat.align = _arg1; textField.defaultTextFormat = _textFormat; } override public function get width():Number{ return (textField.width); } public function set embedFonts(_arg1:Boolean):void{ _embedFonts = _arg1; textField.embedFonts = _embedFonts; } public function set text(_arg1:String):void{ _text = _arg1; textField.text = _text; } override public function set width(_arg1:Number):void{ textField.width = _arg1; } protected function kill():void{ removeChild(textField); textField = null; _textFormat = null; } public function set autoSize(_arg1:String):void{ textField.autoSize = _arg1; } public function get tField():TextField{ return (textField); } public function move(_arg1:Number, _arg2:Number):void{ this.x = _arg1; this.y = _arg2; } public function get embedFonts():Boolean{ return (_embedFonts); } public function get text():String{ return (_text); } private function removedListener(_arg1:Event):void{ kill(); removeEventListener(Event.REMOVED_FROM_STAGE, removedListener); } } }//package com.dimonte.ui
Section 94
//MenuNameLabel (com.dimonte.ui.MenuNameLabel) package com.dimonte.ui { import flash.text.*; import game.*; public class MenuNameLabel extends Label { public function MenuNameLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 36, 4294967295, true, true); autoSize = TextFieldAutoSize.LEFT; embedFonts = true; } } }//package com.dimonte.ui
Section 95
//GTween (com.gskinner.motion.GTween) package com.gskinner.motion { import flash.events.*; import flash.utils.*; public class GTween extends EventDispatcher { public var autoPlay:Boolean;// = true protected var _position:Number;// = 0 protected var ticker:ITicker; protected var _delay:Number;// = 0 public var duration:Number;// = 1 public var repeat:int;// = 0 protected var positionOffset:Number; protected var _previousPosition:Number; protected var startValues:Object; public var data; protected var inited:Boolean; protected var _target:Object; protected var _tweenPosition:Number;// = 0 protected var _reversed:Boolean; public var snapping:Boolean;// = false public var reflect:Boolean;// = false public var nextTween:GTween; protected var assignmentProperty:String; public var autoVisible:Boolean;// = true protected var assignmentTarget:Object; protected var _lockStartProperties:Boolean; public var autoRotation:Boolean;// = false protected var endValues:Object; protected var inTick:Boolean; protected var _paused:Boolean;// = true protected var _propertyTarget:Object; public var ease:Function; protected var _proxy:TargetProxy; protected var _previousTweenPosition:Number; public static const START:String = "start"; public static const FRAME:String = "frame"; public static const TWEEN:String = "tween"; public static const TIME:String = "time"; public static const DELAY:String = "delay"; public static const END:String = "end"; public static const HYBRID:String = "hybrid"; public static var snappingProperties:Object = {x:true, y:true}; public static var pauseAll:Boolean = false; protected static var activeTweens:Dictionary = new Dictionary(); protected static var _activeTicker:ITicker; protected static var _timeInterval:uint = 40; public static var rotationProperties:Object = {rotation:true, rotationX:true, rotationY:true, rotationZ:true}; public static var defaultEase:Function; protected static var _timingMode:String; public function GTween(_arg1:Object=null, _arg2:Number=10, _arg3:Object=null, _arg4:Object=null){ ease = linearEase; super(); ticker = activeTicker; this.target = _arg1; this.duration = _arg2; ease = ((defaultEase) || (linearEase)); setProperties(_arg3); setTweenProperties(_arg4); } protected function setGCLock(_arg1:Boolean):void{ if (_arg1){ if ((_target is IEventDispatcher)){ _target.addEventListener("GDS__NONEXISTENT_EVENT", nullListener, false, 0, false); } else { activeTweens[this] = true; }; } else { if ((_target is IEventDispatcher)){ _target.removeEventListener("GDS__NONEXISTENT_EVENT", nullListener); }; delete activeTweens[this]; }; } public function get target():Object{ return (_target); } public function get delay():Number{ return (_delay); } public function set delay(_arg1:Number):void{ if (_position == -(_delay)){ setPosition(-(_arg1)); }; _delay = _arg1; } protected function init():void{ var _local1:String; var _local2:Number; var _local3:Number; inited = true; if (_lockStartProperties){ return; }; startValues = {}; if (((assignmentTarget) && (assignmentProperty))){ _propertyTarget = assignmentTarget[assignmentProperty]; }; for (_local1 in endValues) { if (((autoRotation) && (rotationProperties[_local1]))){ _local2 = (endValues[_local1] = (endValues[_local1] % 360)); _local3 = (_propertyTarget[_local1] % 360); startValues[_local1] = (_local3 + ((Math.abs((_local3 - _local2)))<180) ? 0 : ((_local3)>_local2) ? -360 : 360); } else { startValues[_local1] = _propertyTarget[_local1]; }; }; } public function get state():String{ return (((((_position == -(_delay))) && (_paused))) ? START : ((_position)<0) ? DELAY : (((!((repeat == -1))) && ((_position >= ((repeat + 1) * duration))))) ? END : TWEEN); } public function get lockStartProperties():Boolean{ return (_lockStartProperties); } public function deleteProperty(_arg1:String):Boolean{ return (delete endValues[_arg1]); } public function set target(_arg1:Object):void{ _propertyTarget = (_target = ((_arg1)===null) ? {} : _arg1); inited = false; } public function set reversed(_arg1:Boolean):void{ if (_arg1 == _reversed){ return; }; _reversed = _arg1; if (!inited){ init(); }; setPosition(_position, true); } public function get position():Number{ return (_position); } public function setPosition(_arg1:Number, _arg2:Boolean=true):void{ var _local4:Number; _previousPosition = _position; _position = _arg1; if (((!(inTick)) && (!(paused)))){ updatePositionOffset(); }; var _local3:Number = ((repeat + 1) * duration); if (_arg1 < 0){ _local4 = (_reversed) ? duration : 0; } else { if ((((repeat == -1)) || ((_arg1 < _local3)))){ _local4 = (_arg1 % duration); if (((reflect) && ((((_arg1 / duration) % 2) >= 1))) != _reversed){ _local4 = (duration - _local4); }; } else { _local4 = ((((reflect) && (((repeat % 2) >= 1))))!=_reversed) ? 0 : duration; }; }; if (_local4 == _tweenPosition){ return; }; _previousTweenPosition = _tweenPosition; _tweenPosition = _local4; if (((!(_arg2)) && (hasEventListener(Event.CHANGE)))){ dispatchEvent(new Event(Event.CHANGE)); }; if (((((!(inited)) && ((_previousPosition <= 0)))) && ((_position >= 0)))){ init(); if (((!(_arg2)) && (hasEventListener(Event.INIT)))){ dispatchEvent(new Event(Event.INIT)); }; }; updateProperties(); if (((((!((repeat == -1))) && ((_previousPosition < _local3)))) && ((_arg1 >= _local3)))){ if (((!(_arg2)) && (hasEventListener(Event.COMPLETE)))){ dispatchEvent(new Event(Event.COMPLETE)); }; paused = true; if (nextTween){ nextTween.paused = false; }; }; } public function set lockStartProperties(_arg1:Boolean):void{ if (((_arg1) && (!(inited)))){ init(); }; _lockStartProperties = _arg1; } public function get paused():Boolean{ return (_paused); } public function get tweenPosition():Number{ return (_tweenPosition); } public function invalidate():void{ inited = false; if (_position > 0){ _position = 0; updatePositionOffset(); }; if (autoPlay){ paused = false; }; } public function getProperties():Object{ return (copyObject(endValues)); } public function get propertyTarget():Object{ return (_propertyTarget); } public function play():void{ paused = false; } public function setAssignment(_arg1:Object=null, _arg2:String=null):void{ this.assignmentTarget = _arg1; this.assignmentProperty = _arg2; inited = false; } public function get reversed():Boolean{ return (_reversed); } public function set position(_arg1:Number):void{ setPosition(_arg1, true); } protected function updateProperty(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:Number = (_arg2 + ((_arg3 - _arg2) * _arg4)); if (((snapping) && (snappingProperties[_arg1]))){ _local5 = Math.round(_local5); }; if (_arg1 == "currentFrame"){ _propertyTarget.gotoAndStop((_local5 << 0)); } else { _propertyTarget[_arg1] = _local5; }; } public function setProperties(_arg1:Object):void{ var _local2:String; endValues = {}; for (_local2 in _arg1) { setProperty(_local2, _arg1[_local2]); }; } public function getProperty(_arg1:String):Number{ return (endValues[_arg1]); } public function end():void{ setPosition(((repeat)==-1) ? duration : ((repeat + 1) * duration)); } public function set paused(_arg1:Boolean):void{ if (_arg1 == _paused){ return; }; _paused = _arg1; if (_arg1){ ticker.removeEventListener("tick", handleTick); } else { ticker.addEventListener("tick", handleTick, false, 0, true); if (((!((repeat == -1))) && ((_position >= (duration * (repeat + 1)))))){ position = 0; } else { updatePositionOffset(); }; }; setGCLock(!(_arg1)); } public function beginning():void{ setPosition(-(_delay)); } public function setProperty(_arg1:String, _arg2:Number):void{ if (isNaN(_arg2)){ return; }; endValues[_arg1] = _arg2; if (((_lockStartProperties) && ((startValues[_arg1] == null)))){ startValues[_arg1] = _propertyTarget[_arg1]; }; invalidate(); } protected function updatePositionOffset():void{ positionOffset = (ticker.position - _position); } protected function copyObject(_arg1:Object):Object{ var _local3:String; var _local2:Object = {}; for (_local3 in _arg1) { _local2[_local3] = _arg1[_local3]; }; return (_local2); } public function setTweenProperties(_arg1:Object):void{ var _local2:Number; var _local3:String; if (!_arg1){ return; }; if (("position" in _arg1)){ _local2 = _arg1.position; delete _arg1.position; }; if (("initListener" in _arg1)){ addEventListener(Event.INIT, _arg1.initListener, false, 0, true); delete _arg1.initListener; }; if (("completeListener" in _arg1)){ addEventListener(Event.COMPLETE, _arg1.completeListener, false, 0, true); delete _arg1.completeListener; }; if (("changeListener" in _arg1)){ addEventListener(Event.CHANGE, _arg1.changeListener, false, 0, true); delete _arg1.changeListener; }; for (_local3 in _arg1) { this[_local3] = _arg1[_local3]; }; if (!isNaN(_local2)){ position = _local2; }; } protected function updateProperties():void{ var _local2:String; var _local1:Number = ease((_tweenPosition / duration), 0, 1, 1); for (_local2 in endValues) { updateProperty(_local2, startValues[_local2], endValues[_local2], _local1); }; if (((((((autoVisible) && (("alpha" in endValues)))) && (("alpha" in _propertyTarget)))) && (("visible" in _propertyTarget)))){ _propertyTarget.visible = (_propertyTarget.alpha > 0); }; if (((assignmentTarget) && (assignmentProperty))){ assignmentTarget[assignmentProperty] = _propertyTarget; }; } public function reverse(_arg1:Boolean=true):void{ var _local2:Number = ((repeat == -1)) ? (duration - (_position % duration)) : (((repeat + 1) * duration) - _position); if (reflect){ _reversed = !((((((position / duration) % 2) >= 1) == (((_local2 / duration) % 2) >= 1)) == _reversed)); } else { _reversed = !(_reversed); }; setPosition(_local2, _arg1); } public function setStartProperties(_arg1:Object):void{ startValues = copyObject(_arg1); inited = true; } protected function handleTick(_arg1:Event):void{ inTick = true; if (pauseAll){ updatePositionOffset(); } else { setPosition((ticker.position - positionOffset), false); }; inTick = false; } public function get proxy():Object{ if (_proxy == null){ _proxy = new TargetProxy(this); }; return (_proxy); } public function pause():void{ paused = true; } protected function nullListener(_arg1:Event):void{ } public function getStartProperties():Object{ return (copyObject(startValues)); } public static function set timeInterval(_arg1:uint):void{ _timeInterval = _arg1; if ((_activeTicker is TimeTicker)){ (_activeTicker as TimeTicker).interval = (_timeInterval / 1000); }; } public static function get timingMode():String{ return (_timingMode); } public static function get activeTicker():ITicker{ if (_timingMode == null){ timingMode = HYBRID; }; return (_activeTicker); } public static function set timingMode(_arg1:String):void{ _arg1 = ((((_arg1 == FRAME)) || ((_arg1 == TIME)))) ? _arg1 : HYBRID; if (_arg1 == _timingMode){ return; }; _timingMode = _arg1; if (_timingMode == TIME){ _activeTicker = new TimeTicker(); (_activeTicker as TimeTicker).interval = (_timeInterval / 1000); } else { if (_timingMode == FRAME){ _activeTicker = new FrameTicker(); } else { _activeTicker = new HybridTicker(); }; }; } public static function linearEase(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (_arg1); } public static function get timeInterval():uint{ return (_timeInterval); } } }//package com.gskinner.motion import flash.events.*; import flash.display.*; import flash.utils.*; interface ITicker extends IEventDispatcher { "GTween.as$20:ITicker"?? function get position():Number; } class FrameTicker extends EventDispatcher implements ITicker { protected var shape:Shape; protected var _position:Number;// = 0 private function FrameTicker():void{ shape = new Shape(); shape.addEventListener(Event.ENTER_FRAME, tick); } public function get position():Number{ return (_position); } protected function tick(_arg1:Event):void{ _position++; dispatchEvent(new Event("tick")); } } dynamic class TargetProxy extends Proxy { private var gTween:GTween; private function TargetProxy(_arg1:GTween):void{ this.gTween = _arg1; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{ return (gTween.deleteProperty(_arg1)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function callProperty(_arg1, ... _args){ return (gTween.propertyTarget[_arg1].apply(null, _args)); } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{ if (isNaN(_arg2)){ gTween.propertyTarget[_arg1] = _arg2; } else { gTween.setProperty(String(_arg1), Number(_arg2)); }; } override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){ var _local2:Number = gTween.getProperty(_arg1); return ((isNaN(_local2)) ? gTween.propertyTarget[_arg1] : _local2); } } class HybridTicker extends EventDispatcher implements ITicker { protected var shape:Shape; private function HybridTicker():void{ shape = new Shape(); shape.addEventListener(Event.ENTER_FRAME, tick); } public function get position():Number{ return ((getTimer() / 1000)); } protected function tick(_arg1:Event):void{ dispatchEvent(new Event("tick")); } } class TimeTicker extends EventDispatcher implements ITicker { protected var timer:Timer; private function TimeTicker():void{ timer = new Timer(20); timer.start(); timer.addEventListener(TimerEvent.TIMER, tick); } public function get position():Number{ return ((getTimer() / 1000)); } public function set interval(_arg1:Number):void{ timer.delay = (_arg1 * 1000); } protected function tick(_arg1:TimerEvent):void{ dispatchEvent(new Event("tick")); _arg1.updateAfterEvent(); } }
Section 96
//GTweenFilter (com.gskinner.motion.GTweenFilter) package com.gskinner.motion { public class GTweenFilter extends GTween { public var filterIndex:uint;// = 0 public function GTweenFilter(_arg1:Object=null, _arg2:Number=10, _arg3:Object=null, _arg4:Object=null){ super(_arg1, _arg2, _arg3, _arg4); } override protected function init():void{ updatePropertyTarget(); super.init(); } override public function get propertyTarget():Object{ updatePropertyTarget(); return (_propertyTarget); } override protected function updateProperties():void{ updatePropertyTarget(); super.updateProperties(); var _local1:Array = _target.filters; _local1[filterIndex] = _propertyTarget; _target.filters = _local1; } protected function updatePropertyTarget():void{ _propertyTarget = _target.filters[filterIndex]; if (_propertyTarget == null){ throw (new Error((("GTweenFilter: no filter at index '" + filterIndex) + "'."))); }; } } }//package com.gskinner.motion
Section 97
//GTweenTimeline (com.gskinner.motion.GTweenTimeline) package com.gskinner.motion { public class GTweenTimeline extends GTween { protected var callbacks:Array; protected var callbackPositions:Array; protected var tweens:Array; protected var tweenStartPositions:Array; protected var labels:Object; public function GTweenTimeline(_arg1:Object=null, _arg2:Number=10, _arg3:Object=null, _arg4:Object=null, _arg5:Array=null):void{ super(_arg1, _arg2, _arg3, _arg4); this.tweens = []; tweenStartPositions = []; callbacks = []; callbackPositions = []; labels = {}; addTweens(_arg5); if (autoPlay){ paused = false; }; } public function addCallback(_arg1:Number, _arg2:Function, _arg3:Array=null):void{ var _local4:int = callbacks.length; var _local5:int = (_local4 - 1); while (_local5 >= 0) { if (_arg1 == callbackPositions[_local5]){ callbacks[_local5] = {callback:_arg2, parameters:_arg3}; return; }; if (_arg1 > callbackPositions[_local5]){ break; }; _local5--; }; callbacks.splice((_local5 + 1), 0, {callback:_arg2, parameters:_arg3}); callbackPositions.splice((_local5 + 1), 0, _arg1); } public function removeTween(_arg1:GTween):void{ var _local2:int = tweens.length; while (_local2 >= 0) { if (tweens[_local2] == _arg1){ tweens.splice(_local2, 1); tweenStartPositions.splice(_local2, 1); }; _local2--; }; } public function gotoAndPlay(_arg1):void{ goto(_arg1); paused = false; } public function addTween(_arg1:Number, _arg2:GTween):void{ if ((((_arg2 == null)) || (isNaN(_arg1)))){ return; }; _arg2.autoPlay = false; _arg2.paused = true; var _local3 = -1; do { ++_local3; } while ((((_local3 < tweens.length)) && ((tweenStartPositions[_local3] < _arg1)))); tweens.splice(_local3, 0, _arg2); tweenStartPositions.splice(_local3, 0, _arg1); _arg2.position = (_tweenPosition - _arg1); } public function addLabel(_arg1:Number, _arg2:String):void{ labels[_arg2] = _arg1; } public function gotoAndStop(_arg1):void{ goto(_arg1); paused = true; } public function removeLabel(_arg1:String):void{ delete labels[_arg1]; } public function calculateDuration():void{ var _local1:Number = 0; if (callbacks.length > 0){ _local1 = callbackPositions[(callbacks.length - 1)]; }; var _local2:int; while (_local2 < tweens.length) { if ((tweens[_local2].duration + tweenStartPositions[_local2]) > _local1){ _local1 = (tweens[_local2].duration + tweenStartPositions[_local2]); }; _local2++; }; duration = _local1; } protected function checkCallbackRange(_arg1:Number, _arg2:Number, _arg3:Boolean=false):void{ var _local9:Number; var _local4:Number = _arg1; var _local5:Number = _arg2; var _local6 = -1; var _local7:int = callbacks.length; var _local8 = 1; if (_arg1 > _arg2){ _local4 = _arg2; _local5 = _arg1; _local6 = _local7; _local8 = -1; _local7 = _local8; }; while ((_local6 = (_local6 + _local8)) != _local7) { _local9 = callbackPositions[_local6]; if ((((((((_local9 > _local4)) && ((_local9 < _local5)))) || ((_local9 == _arg2)))) || (((_arg3) && ((_local9 == _arg1)))))){ callbacks[_local6].callback.apply(this, callbacks[_local6].parameters); }; }; } public function goto(_arg1):void{ var _local2:Number; if (!isNaN(_arg1)){ position = _arg1; } else { _local2 = labels[String(_arg1)]; if (!isNaN(_local2)){ position = _local2; }; }; } public function addTweens(_arg1:Array):void{ if (_arg1 == null){ return; }; var _local2:uint; while (_local2 < _arg1.length) { addTween(_arg1[_local2], (_arg1[(_local2 + 1)] as GTween)); _local2 = (_local2 + 2); }; } override public function setPosition(_arg1:Number, _arg2:Boolean=true):void{ var _local5:int; super.setPosition(_arg1, _arg2); var _local3:Number = ((_position / duration) >> 0); var _local4 = !((((reflect) && (((_local3 % 2) >= 1))) == _reversed)); var _local6:int = tweens.length; if (_local4){ _local5 = 0; while (_local5 < _local6) { tweens[_local5].setPosition((_tweenPosition - tweenStartPositions[_local5]), false); _local5++; }; } else { _local5 = (_local6 - 1); while (_local5 >= 0) { tweens[_local5].setPosition((_tweenPosition - tweenStartPositions[_local5]), false); _local5--; }; }; if (!_arg2){ checkCallbacks(); }; } protected function checkCallbacks():void{ var _local3:Array; var _local4:Boolean; if (callbacks.length == 0){ return; }; var _local1:Number = ((_position / duration) >> 0); var _local2:Number = ((_previousPosition / duration) >> 0); if (_local1 == _local2){ checkCallbackRange(_previousTweenPosition, _tweenPosition); } else { _local4 = !((((reflect) && (((_local2 % 2) >= 1))) == _reversed)); checkCallbackRange(_previousTweenPosition, (_local4) ? 0 : duration); _local4 = !((((reflect) && (((_local1 % 2) >= 1))) == _reversed)); checkCallbackRange((_local4) ? duration : 0, _tweenPosition, !(reflect)); }; } public function removeCallback(_arg1:Number):void{ var _local2:int = callbacks.length; var _local3:int; while (_local3 < _local2) { if (_arg1 == callbackPositions[_local3]){ callbacks.splice(_local3, 1); callbackPositions.splice(_local3, 1); return; }; _local3++; }; } public function get currentLabel():String{ var _local2:String; var _local3:String; var _local4:Number; var _local1:Number = (duration + 1); for (_local3 in labels) { _local4 = (labels[_local3] - _tweenPosition); if ((((_local4 >= 0)) && ((_local4 < _local1)))){ _local2 = _local3; }; }; return (_local2); } public static function setPropertyValue(_arg1:Object, _arg2:String, _arg3):void{ _arg1[_arg2] = _arg3; } } }//package com.gskinner.motion
Section 98
//Key (com.senocular.Key) package com.senocular { import flash.events.*; import flash.display.*; public class Key { private static var initialized:Boolean = false; private static var keysDown:Object = new Object(); public static function initialize(_arg1:Stage):void{ if (!initialized){ _arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); _arg1.addEventListener(KeyboardEvent.KEY_UP, keyReleased); _arg1.addEventListener(Event.DEACTIVATE, clearKeys); initialized = true; }; } private static function clearKeys(_arg1:Event):void{ keysDown = new Object(); } public static function isDown(_arg1:uint):Boolean{ if (!initialized){ throw (new Error("Key class has yet been initialized.")); }; return (Boolean((_arg1 in keysDown))); } private static function keyPressed(_arg1:KeyboardEvent):void{ keysDown[_arg1.keyCode] = true; } private static function keyReleased(_arg1:KeyboardEvent):void{ if ((_arg1.keyCode in keysDown)){ delete keysDown[_arg1.keyCode]; }; } } }//package com.senocular
Section 99
//compareStringCaseInSensitive (de.polygonal.ds.sort.compare.compareStringCaseInSensitive) package de.polygonal.ds.sort.compare { public function compareStringCaseInSensitive(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; _arg1 = _arg1.toLowerCase(); _arg2 = _arg2.toLowerCase(); if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg1.charCodeAt(_local5) - _arg2.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 100
//compareStringCaseInSensitiveDesc (de.polygonal.ds.sort.compare.compareStringCaseInSensitiveDesc) package de.polygonal.ds.sort.compare { public function compareStringCaseInSensitiveDesc(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; _arg1 = _arg1.toLowerCase(); _arg2 = _arg2.toLowerCase(); if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg2.charCodeAt(_local5) - _arg1.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 101
//compareStringCaseSensitive (de.polygonal.ds.sort.compare.compareStringCaseSensitive) package de.polygonal.ds.sort.compare { public function compareStringCaseSensitive(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg1.charCodeAt(_local5) - _arg2.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 102
//compareStringCaseSensitiveDesc (de.polygonal.ds.sort.compare.compareStringCaseSensitiveDesc) package de.polygonal.ds.sort.compare { public function compareStringCaseSensitiveDesc(_arg1:String, _arg2:String):int{ var _local3:int; var _local4:int; var _local5:int; if ((_arg1.length + _arg2.length) > 2){ _local3 = 0; _local4 = ((_arg1.length > _arg2.length)) ? _arg1.length : _arg2.length; _local5 = 0; while (_local5 < _local4) { _local3 = (_arg2.charCodeAt(_local5) - _arg1.charCodeAt(_local5)); if (_local3 != 0){ break; }; _local5++; }; return (_local3); } else { }; return ((!NULL! - !NULL!)); } }//package de.polygonal.ds.sort.compare
Section 103
//sLinkedInsertionSort (de.polygonal.ds.sort.sLinkedInsertionSort) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function sLinkedInsertionSort(_arg1:SListNode, _arg2:Boolean=false):SListNode{ var _local7:int; var _local8:Number; var _local3:Array = []; var _local4:int; var _local5:SListNode = _arg1; var _local6:SListNode = _arg1; while (_local6) { var _temp1 = _local4; _local4 = (_local4 + 1); var _local10 = _temp1; _local3[_local10] = _local6.data; _local6 = _local6.next; }; if (_local4 <= 1){ return (_local5); }; var _local9 = 1; while (_local9 < _local4) { _local8 = _local3[_local9]; _local7 = _local9; while ((((_local7 > 0)) && ((_local3[int((_local7 - 1))] > _local8)))) { _local3[_local7] = _local3[int((_local7 - 1))]; _local7--; }; _local3[_local7] = _local8; _local9++; }; _local6 = _local5; _local9 = 0; while (_local6) { var _temp2 = _local9; _local9 = (_local9 + 1); _local6.data = _local3[_temp2]; _local6 = _local6.next; }; return (_local5); } }//package de.polygonal.ds.sort
Section 104
//sLinkedInsertionSortCmp (de.polygonal.ds.sort.sLinkedInsertionSortCmp) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function sLinkedInsertionSortCmp(_arg1:SListNode, _arg2:Function, _arg3:Boolean=false):SListNode{ var _local8:int; var _local9:int; var _local10:*; var _local4:Array = []; var _local5:int; var _local6:SListNode = _arg1; var _local7:SListNode = _arg1; while (_local7) { var _temp1 = _local5; _local5 = (_local5 + 1); var _local11 = _temp1; _local4[_local11] = _local7.data; _local7 = _local7.next; }; if (_arg3){ if (_local5 <= 1){ return (_local6); }; _local9 = 1; while (_local9 < _local5) { _local10 = _local4[_local9]; _local8 = _local9; while ((((_local8 > 0)) && ((_arg2(_local4[int((_local8 - 1))], _local10) < 0)))) { _local4[_local8] = _local4[int((_local8 - 1))]; _local8--; }; _local4[_local8] = _local10; _local9++; }; } else { if (_local5 <= 1){ return (_local6); }; _local9 = 1; while (_local9 < _local5) { _local10 = _local4[_local9]; _local8 = _local9; while ((((_local8 > 0)) && ((_arg2(_local4[int((_local8 - 1))], _local10) > 0)))) { _local4[_local8] = _local4[int((_local8 - 1))]; _local8--; }; _local4[_local8] = _local10; _local9++; }; }; _local7 = _local6; _local9 = 0; while (_local7) { var _temp2 = _local9; _local9 = (_local9 + 1); _local7.data = _local4[_temp2]; _local7 = _local7.next; }; return (_local6); } }//package de.polygonal.ds.sort
Section 105
//sLinkedMergeSort (de.polygonal.ds.sort.sLinkedMergeSort) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function sLinkedMergeSort(_arg1:SListNode, _arg2:Boolean=false):SListNode{ var _local4:SListNode; var _local5:SListNode; var _local6:SListNode; var _local7:SListNode; var _local9:int; var _local10:int; var _local11:int; var _local12:int; if (!_arg1){ return (null); }; var _local3:SListNode = _arg1; var _local8 = 1; if (_arg2){ while (true) { _local4 = _local3; _local7 = null; _local3 = _local7; _local9 = 0; while (_local4) { _local9++; _local12 = 0; _local10 = 0; _local5 = _local4; while (_local12 < _local8) { _local10++; _local5 = _local5.next; if (!_local5){ break; }; _local12++; }; _local11 = _local8; while ((((_local10 > 0)) || ((((_local11 > 0)) && (_local5))))) { if (_local10 == 0){ _local6 = _local5; _local5 = _local5.next; _local11--; } else { if ((((_local11 == 0)) || (!(_local5)))){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { if ((_local4.data - _local5.data) >= 0){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { _local6 = _local5; _local5 = _local5.next; _local11--; }; }; }; if (_local7){ _local7.next = _local6; } else { _local3 = _local6; }; _local7 = _local6; }; _local4 = _local5; }; _local7.next = null; if (_local9 <= 1){ return (_local3); }; _local8 = (_local8 << 1); }; } else { while (true) { _local4 = _local3; _local7 = null; _local3 = _local7; _local9 = 0; while (_local4) { _local9++; _local12 = 0; _local10 = 0; _local5 = _local4; while (_local12 < _local8) { _local10++; _local5 = _local5.next; if (!_local5){ break; }; _local12++; }; _local11 = _local8; while ((((_local10 > 0)) || ((((_local11 > 0)) && (_local5))))) { if (_local10 == 0){ _local6 = _local5; _local5 = _local5.next; _local11--; } else { if ((((_local11 == 0)) || (!(_local5)))){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { if ((_local4.data - _local5.data) <= 0){ _local6 = _local4; _local4 = _local4.next; _local10--; } else { _local6 = _local5; _local5 = _local5.next; _local11--; }; }; }; if (_local7){ _local7.next = _local6; } else { _local3 = _local6; }; _local7 = _local6; }; _local4 = _local5; }; _local7.next = null; if (_local9 <= 1){ return (_local3); }; _local8 = (_local8 << 1); }; }; return (null); } }//package de.polygonal.ds.sort
Section 106
//sLinkedMergeSortCmp (de.polygonal.ds.sort.sLinkedMergeSortCmp) package de.polygonal.ds.sort { import de.polygonal.ds.*; public function sLinkedMergeSortCmp(_arg1:SListNode, _arg2:Function, _arg3:Boolean=false):SListNode{ var _local5:SListNode; var _local6:SListNode; var _local7:SListNode; var _local8:SListNode; var _local10:int; var _local11:int; var _local12:int; var _local13:int; if (((!(_arg1)) || ((_arg2 == null)))){ return (null); }; var _local4:SListNode = _arg1; var _local9 = 1; if (_arg3){ while (true) { _local5 = _local4; _local8 = null; _local4 = _local8; _local10 = 0; while (_local5) { _local10++; _local13 = 0; _local11 = 0; _local6 = _local5; while (_local13 < _local9) { _local11++; _local6 = _local6.next; if (!_local6){ break; }; _local13++; }; _local12 = _local9; while ((((_local11 > 0)) || ((((_local12 > 0)) && (_local6))))) { if (_local11 == 0){ _local7 = _local6; _local6 = _local6.next; _local12--; } else { if ((((_local12 == 0)) || (!(_local6)))){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { if (_arg2(_local5.data, _local6.data) >= 0){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { _local7 = _local6; _local6 = _local6.next; _local12--; }; }; }; if (_local8){ _local8.next = _local7; } else { _local4 = _local7; }; _local8 = _local7; }; _local5 = _local6; }; _local8.next = null; if (_local10 <= 1){ return (_local4); }; _local9 = (_local9 << 1); }; } else { while (true) { _local5 = _local4; _local8 = null; _local4 = _local8; _local10 = 0; while (_local5) { _local10++; _local13 = 0; _local11 = 0; _local6 = _local5; while (_local13 < _local9) { _local11++; _local6 = _local6.next; if (!_local6){ break; }; _local13++; }; _local12 = _local9; while ((((_local11 > 0)) || ((((_local12 > 0)) && (_local6))))) { if (_local11 == 0){ _local7 = _local6; _local6 = _local6.next; _local12--; } else { if ((((_local12 == 0)) || (!(_local6)))){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { if (_arg2(_local5.data, _local6.data) <= 0){ _local7 = _local5; _local5 = _local5.next; _local11--; } else { _local7 = _local6; _local6 = _local6.next; _local12--; }; }; }; if (_local8){ _local8.next = _local7; } else { _local4 = _local7; }; _local8 = _local7; }; _local5 = _local6; }; _local8.next = null; if (_local10 <= 1){ return (_local4); }; _local9 = (_local9 << 1); }; }; return (null); } }//package de.polygonal.ds.sort
Section 107
//Collection (de.polygonal.ds.Collection) package de.polygonal.ds { public interface Collection { function get size():int; function isEmpty():Boolean; function getIterator():Iterator; function clear():void; function toArray():Array; function contains(_arg1):Boolean; } }//package de.polygonal.ds
Section 108
//Iterator (de.polygonal.ds.Iterator) package de.polygonal.ds { public interface Iterator { function start():void; function set data(_arg1):void; function get data(); function next(); function hasNext():Boolean; } }//package de.polygonal.ds
Section 109
//LinkedListNode (de.polygonal.ds.LinkedListNode) package de.polygonal.ds { public interface LinkedListNode { } }//package de.polygonal.ds
Section 110
//SLinkedList (de.polygonal.ds.SLinkedList) package de.polygonal.ds { import de.polygonal.ds.sort.compare.*; import de.polygonal.ds.sort.*; public class SLinkedList implements Collection { private var _count:int; public var tail:SListNode; public var head:SListNode; public static const MERGE_SORT:int = (1 << 2); public static const DESCENDING:int = (1 << 4); public static const NUMERIC:int = (1 << 3); public static const INSERTION_SORT:int = (1 << 1); public function SLinkedList(... _args){ head = (tail = null); _count = 0; if (_args.length > 0){ append.apply(this, _args); }; } public function get size():int{ return (_count); } public function isEmpty():Boolean{ return ((_count == 0)); } public function remove(_arg1:SListIterator):Boolean{ if (((!((_arg1.list == this))) || (!(_arg1.node)))){ return (false); }; var _local2:SListNode = head; if (_arg1.node == head){ _arg1.forth(); removeHead(); return (true); }; while (_local2.next != _arg1.node) { _local2 = _local2.next; }; _arg1.forth(); if (_local2.next == tail){ tail = _local2; }; _local2.next = _arg1.node; _count--; return (true); } public function removeHead(){ var _local1:*; var _local2:SListNode; if (head){ _local1 = head.data; if (head == tail){ head = (tail = null); } else { _local2 = head; head = head.next; _local2.next = null; if (head == null){ tail = null; }; }; _count--; return (_local1); }; return (null); } public function clear():void{ var _local2:SListNode; var _local1:SListNode = head; head = null; while (_local1) { _local2 = _local1.next; _local1.next = null; _local1 = _local2; }; _count = 0; } public function prepend(... _args):SListNode{ var _local4:SListNode; var _local5:int; var _local2:int = _args.length; var _local3:SListNode = new SListNode(_args[int((_local2 - 1))]); if (head){ _local3.next = head; head = _local3; } else { head = (tail = _local3); }; if (_local2 > 1){ _local4 = _local3; _local5 = (_local2 - 2); while (_local5 >= 0) { _local3 = new SListNode(_args[_local5]); _local3.next = head; head = _local3; _local5--; }; _count = (_count + _local2); return (_local4); }; _count++; return (_local3); } public function popDown():void{ var _local2:SListNode; var _local1:SListNode = tail; if (head.next == tail){ tail = head; head = _local1; tail.next = null; head.next = tail; } else { _local2 = head; while (_local2.next != tail) { _local2 = _local2.next; }; tail = _local2; tail.next = null; _local1.next = head; head = _local1; }; } public function concat(... _args):SLinkedList{ var _local3:SLinkedList; var _local4:SListNode; var _local2:SLinkedList = new SLinkedList(); _local4 = head; while (_local4) { _local2.append(_local4.data); _local4 = _local4.next; }; var _local5:int = _args.length; var _local6:int; while (_local6 < _local5) { _local3 = _args[_local6]; _local4 = _local3.head; while (_local4) { _local2.append(_local4.data); _local4 = _local4.next; }; _local6++; }; return (_local2); } public function append(... _args):SListNode{ var _local4:SListNode; var _local5:int; var _local2:int = _args.length; var _local3:SListNode = new SListNode(_args[0]); if (head){ tail.next = _local3; tail = _local3; } else { head = (tail = _local3); }; if (_local2 > 1){ _local4 = _local3; _local5 = 1; while (_local5 < _local2) { _local3 = new SListNode(_args[_local5]); tail.next = _local3; tail = _local3; _local5++; }; _count = (_count + _local2); return (_local4); }; _count++; return (_local3); } public function sort(... _args):void{ var _local2:int; var _local3:Function; var _local4:*; if (_count <= 1){ return; }; if (_args.length > 0){ _local2 = 0; _local3 = null; _local4 = _args[0]; if ((_local4 is Function)){ _local3 = _local4; if (_args.length > 1){ _local4 = _args[1]; if ((_local4 is int)){ _local2 = _local4; }; }; } else { if ((_local4 is int)){ _local2 = _local4; }; }; if (Boolean(_local3)){ if ((_local2 & 2)){ head = sLinkedInsertionSortCmp(head, _local3, (_local2 == 18)); } else { head = sLinkedMergeSortCmp(head, _local3, (_local2 == 16)); }; } else { if ((_local2 & 2)){ if ((_local2 & 4)){ if (_local2 == 22){ head = sLinkedInsertionSortCmp(head, compareStringCaseSensitiveDesc); } else { if (_local2 == 14){ head = sLinkedInsertionSortCmp(head, compareStringCaseInSensitive); } else { if (_local2 == 30){ head = sLinkedInsertionSortCmp(head, compareStringCaseInSensitiveDesc); } else { head = sLinkedInsertionSortCmp(head, compareStringCaseSensitive); }; }; }; } else { head = sLinkedInsertionSort(head, (_local2 == 18)); }; } else { if ((_local2 & 4)){ if (_local2 == 20){ head = sLinkedMergeSortCmp(head, compareStringCaseSensitiveDesc); } else { if (_local2 == 12){ head = sLinkedMergeSortCmp(head, compareStringCaseInSensitive); } else { if (_local2 == 28){ head = sLinkedMergeSortCmp(head, compareStringCaseInSensitiveDesc); } else { head = sLinkedMergeSortCmp(head, compareStringCaseSensitive); }; }; }; } else { if ((_local2 & 16)){ head = sLinkedMergeSort(head, true); }; }; }; }; } else { head = sLinkedMergeSort(head); }; } public function reverse():void{ if (_count == 0){ return; }; var _local1:Array = new Array(_count); var _local2:int; var _local3:SListNode = head; while (_local3) { var _temp1 = _local2; _local2 = (_local2 + 1); var _local4 = _temp1; _local1[_local4] = _local3; _local3 = _local3.next; }; _local1.reverse(); _local3 = (head = _local1[0]); _local2 = 1; while (_local2 < _count) { _local3 = (_local3.next = _local1[_local2]); _local2++; }; _local3.next = null; tail = _local3; _local1 = null; } public function insertAfter(_arg1:SListIterator, _arg2):SListNode{ var _local3:SListNode; if (_arg1.list != this){ return (null); }; if (_arg1.node){ _local3 = new SListNode(_arg2); _arg1.node.insertAfter(_local3); if (_arg1.node == tail){ tail = _arg1.node.next; }; _count++; return (_local3); //unresolved jump }; return (append(_arg2)); } public function getIterator():Iterator{ return (new SListIterator(this, head)); } public function toArray():Array{ var _local1:Array = []; var _local2:SListNode = head; while (_local2) { _local1.push(_local2.data); _local2 = _local2.next; }; return (_local1); } public function contains(_arg1):Boolean{ var _local2:SListNode = head; while (_local2) { if (_local2.data == _arg1){ return (true); }; _local2 = _local2.next; }; return (false); } public function getListIterator():SListIterator{ return (new SListIterator(this, head)); } public function join(_arg1):String{ if (_count == 0){ return (""); }; var _local2 = ""; var _local3:SListNode = head; while (_local3.next) { _local2 = (_local2 + (_local3.data + _arg1)); _local3 = _local3.next; }; _local2 = (_local2 + _local3.data); return (_local2); } public function toString():String{ return ((("[SlinkedList, size=" + size) + "]")); } public function removeTail(){ var _local1:*; var _local2:SListNode; if (tail){ _local1 = tail.data; if (head == tail){ head = (tail = null); } else { _local2 = head; while (_local2.next != tail) { _local2 = _local2.next; }; tail = _local2; _local2.next = null; }; _count--; return (_local1); }; return (null); } public function merge(... _args):void{ var _local2:SLinkedList; if (_args.length == 0){ return; }; _local2 = _args[0]; if (_local2.head){ if (head){ tail.next = _local2.head; tail = _local2.tail; } else { head = _local2.head; tail = _local2.tail; }; _count = (_count + _local2.size); }; var _local3:int = _args.length; var _local4 = 1; while (_local4 < _local3) { _local2 = _args[_local4]; if (_local2.head){ tail.next = _local2.head; tail = _local2.tail; _count = (_count + _local2.size); }; _local4++; }; } public function nodeOf(_arg1, _arg2:SListIterator=null):SListIterator{ if (_arg2 != null){ if (_arg2.list != null){ return (null); }; }; var _local3:SListNode = ((_arg2)==null) ? head : _arg2.node; while (_local3) { if (_local3.data === _arg1){ return (new SListIterator(this, _local3)); }; _local3 = _local3.next; }; return (null); } public function dump():String{ if (!head){ return ("SLinkedList: (empty)"); }; var _local1 = (((("SLinkedList: has " + _count) + " node") + ((_count == 1)) ? "" : "s") + "\n|< Head\n"); var _local2:SListIterator = getListIterator(); while (_local2.valid()) { _local1 = (_local1 + (("\t" + _local2.data) + "\n")); _local2.forth(); }; _local1 = (_local1 + "Tail >|"); return (_local1); } public function splice(_arg1:SListIterator, _arg2:uint=4294967295, ... _args):SLinkedList{ var _local4:SListNode; var _local5:SListNode; var _local6:SLinkedList; var _local7:int; var _local8:int; var _local9:SListNode; if (_arg1){ if (_arg1.list != this){ return (null); }; }; if (_arg1.node){ _local4 = _arg1.node; _local5 = head; while (_local5.next != _local4) { _local5 = _local5.next; }; _local6 = new SLinkedList(); if (_arg2 == 4294967295){ if (_arg1.node == tail){ return (_local6); }; while (_arg1.node) { _local6.append(_arg1.node.data); _arg1.remove(); }; _arg1.list = _local6; _arg1.node = _local4; return (_local6); } else { _local7 = 0; while (_local7 < _arg2) { if (_arg1.node){ _local6.append(_arg1.node.data); _arg1.remove(); } else { break; }; _local7++; }; }; _local8 = _args.length; if (_local8 > 0){ if (_count == 0){ _local7 = 0; while (_local7 < _local8) { append(_args[_local7]); _local7++; }; } else { if (_local5 == null){ _local9 = prepend(_args[0]); _local7 = 1; while (_local7 < _local8) { _local9.insertAfter(new SListNode(_args[_local7])); if (_local9 == tail){ tail = _local9.next; }; _local9 = _local9.next; _count++; _local7++; }; } else { _local9 = _local5; _local7 = 0; while (_local7 < _local8) { _local9.insertAfter(new SListNode(_args[_local7])); if (_local9 == tail){ tail = _local9.next; }; _local9 = _local9.next; _count++; _local7++; }; }; }; _arg1.node = _local9; } else { _arg1.node = _local4; }; _arg1.list = _local6; return (_local6); }; return (null); } public function shiftUp():void{ var _local1:SListNode = head; if (head.next == tail){ head = tail; tail = _local1; tail.next = null; head.next = tail; } else { head = head.next; tail.next = _local1; _local1.next = null; tail = _local1; }; } } }//package de.polygonal.ds
Section 111
//SListIterator (de.polygonal.ds.SListIterator) package de.polygonal.ds { public class SListIterator implements Iterator { public var node:SListNode; public var list:SLinkedList; public function SListIterator(_arg1:SLinkedList=null, _arg2:SListNode=null){ this.list = _arg1; this.node = _arg2; } public function remove():Boolean{ return (list.remove(this)); } public function start():void{ if (list){ node = list.head; }; } public function get data(){ if (node){ return (node.data); }; return (null); } public function forth():void{ if (node){ node = node.next; }; } public function toString():String{ return ((("{SListIterator: data=" + node.data) + "}")); } public function hasNext():Boolean{ return (Boolean(node)); } public function valid():Boolean{ return (Boolean(node)); } public function next(){ var _local1:*; if (hasNext()){ _local1 = node.data; node = node.next; return (_local1); }; return (null); } public function set data(_arg1):void{ node.data = _arg1; } public function end():void{ if (list){ node = list.tail; }; } } }//package de.polygonal.ds
Section 112
//SListNode (de.polygonal.ds.SListNode) package de.polygonal.ds { public class SListNode implements LinkedListNode { public var next:SListNode; public var data; public function SListNode(_arg1){ data = _arg1; next = null; } public function insertAfter(_arg1:SListNode):void{ _arg1.next = next; next = _arg1; } public function toString():String{ return ((("[SListNode, data=" + data) + "]")); } } }//package de.polygonal.ds
Section 113
//ActorDescriptor (game.descriptors.ActorDescriptor) package game.descriptors { public class ActorDescriptor { public var rightHanded:Boolean; public var name:String; public var adrenalineBuildup:Number; public var courtControlRangeIn:Number; public var tournamentLevel:int; public var superDifficulty:Number; public var adrenalineStart:Number; public var skillSpecial:int; public var skillWeight:int; public var superPowerMultiplier:Number; public var specialPowerMultiplier:Number; public var servePower:Number; public var superPowerMin:Number; public var skillCourtControl:int; public var aiPower:int; public var speed:Number; public var shotPowerMultiplier:Number; public var specialDifficulty:Number; public var weightMultiplier:Number; public var skillShotPower:int; public var courtControlRangeOut:Number; public var tournamentNum:int; public var specialPowerMin:Number; public var adrenalineMax:Number; public var skillAdrenaline:int; public var colors:Array; public var shotPowerMaximum:Number; public var skillSpeed:int; public var description:String; public function ActorDescriptor(){ colors = new Array(7); } } }//package game.descriptors
Section 114
//BodyDescriptor (game.descriptors.BodyDescriptor) package game.descriptors { public class BodyDescriptor { public var type:String; public var specialType:String; public static const BODY_TYPE_NON_DRAWABLE:String = "nonDrawable"; public static const BODY_TYPE_DRAWABLE:String = "drawable"; public function BodyDescriptor(_arg1:String, _arg2:String=""){ this.type = _arg1; this.specialType = _arg2; } } }//package game.descriptors
Section 115
//ShapeDescriptor (game.descriptors.ShapeDescriptor) package game.descriptors { public class ShapeDescriptor { public var halfThickness:Number; public var specialType:String; public var colorIndex:int; public function ShapeDescriptor(_arg1:Number=1, _arg2:int=0, _arg3:String=""){ this.halfThickness = _arg1; this.colorIndex = _arg2; this.specialType = _arg3; } } }//package game.descriptors
Section 116
//BallEvent (game.events.BallEvent) package game.events { import flash.events.*; public class BallEvent extends Event { public static const FLOOR_REBOUND:String = "floorRebound"; public function BallEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=true){ super(_arg1, _arg2, _arg3); } } }//package game.events
Section 117
//GameEvent (game.events.GameEvent) package game.events { import flash.events.*; public class GameEvent extends Event { public static const END_MATCH:String = "endMatch"; public static const RESTART_MATCH:String = "restartMatch"; public static const QUIT_MATCH:String = "quitMatch"; public function GameEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package game.events
Section 118
//MatchEvent (game.events.MatchEvent) package game.events { import flash.events.*; public class MatchEvent extends Event { public var special; public static const OPPONENT_SCORES:String = "opponentScores"; public static const FAULT:String = "fault"; public static const UNPAUSE_PHYSICS:String = "unpausePhysics"; public static const PAUSE_PHYSICS:String = "pausePhysics"; public static const SERVE:String = "serve"; public static const SPECIAL:String = "special"; public static const SHOT:String = "shot"; public static const SUPER:String = "super"; public static const PLAYER_SCORES:String = "playerScores"; public function MatchEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4=null){ this.special = _arg4; super(_arg1, _arg2, _arg3); } override public function clone():Event{ return (new MatchEvent(type, bubbles, cancelable, special)); } } }//package game.events
Section 119
//MessageEvent (game.events.MessageEvent) package game.events { import flash.events.*; public class MessageEvent extends Event { public static const QUEUE_EMPTY:String = "queueEmpty"; public function MessageEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package game.events
Section 120
//SFXEvent (game.events.SFXEvent) package game.events { import flash.events.*; public class SFXEvent extends Event { public static const SFX_ENDED:String = "sfxEnded"; public static const SFX_UNPAUSE:String = "sfxUnpause"; public function SFXEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } } }//package game.events
Section 121
//Point3D (game.geom.Point3D) package game.geom { public class Point3D { public var x:Number; public var y:Number; public var z:Number; public function Point3D(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0){ this.x = _arg1; this.y = _arg2; this.z = _arg3; } public function add(_arg1:Point3D):void{ x = (x + _arg1.x); y = (y + _arg1.y); z = (z + _arg1.z); } public function multiply(_arg1:Number):Point3D{ return (new Point3D((x * _arg1), (y * _arg1), (z * _arg1))); } public function toString():String{ var _local1 = (((((("(" + int(x)) + ", ") + int(y)) + ", ") + int(z)) + ")"); return (_local1); } public function addDimensions(_arg1:Number, _arg2:Number, _arg3:Number):Point3D{ return (new Point3D((x + _arg1), (y + _arg2), (z + _arg3))); } public function copy():Point3D{ return (new Point3D(x, y, z)); } public function copyValues(_arg1:Point3D):void{ this.x = _arg1.x; this.y = _arg1.y; this.z = _arg1.z; } } }//package game.geom
Section 122
//Polygon (game.geom.Polygon) package game.geom { public class Polygon { public var fill:uint; public var normal:Point3D; public var a0:Point3D; public var a1:Point3D; public var a2:Point3D; public var a3:Point3D; private var center:Point3D; public var order:int; public function Polygon(_arg1:Point3D, _arg2:Point3D, _arg3:Point3D, _arg4:Point3D, _arg5:uint){ this.a0 = _arg1.copy(); this.a1 = _arg2.copy(); this.a2 = _arg3.copy(); this.a3 = _arg4.copy(); this.fill = _arg5; } public function calculateDistance(_arg1:Point3D):void{ } public function setPoly(_arg1:Point3D, _arg2:Point3D, _arg3:Point3D, _arg4:Point3D, _arg5:uint):void{ this.a0.copyValues(_arg1); this.a1.copyValues(_arg2); this.a2.copyValues(_arg3); this.a3.copyValues(_arg4); this.fill = _arg5; } } }//package game.geom
Section 123
//Effect (game.match.graphics.effects.Effect) package game.match.graphics.effects { import flash.events.*; import flash.display.*; import game.geom.*; import flash.geom.*; import game.match.graphics.*; import flash.errors.*; public class Effect extends EventDispatcher implements IEffect { protected var position:Point3D; protected var direction:Point; public function Effect(_arg1:Point3D, _arg2:Point){ this.position = _arg1.multiply(15); this.direction = _arg2.clone(); } public function drawOnProjection(_arg1:Projection):void{ throw (new IllegalOperationError("Abstract method, should be overridden")); } public function drawOnDisplayObject(_arg1:DisplayObject):void{ throw (new IllegalOperationError("Abstract method, should be overridden")); } public function update():Boolean{ throw (new IllegalOperationError("Abstract method, should be overridden")); } } }//package game.match.graphics.effects
Section 124
//EffectFactory (game.match.graphics.effects.EffectFactory) package game.match.graphics.effects { import game.geom.*; import de.polygonal.ds.*; import flash.geom.*; import flash.errors.*; public class EffectFactory { public function createEffectToReturn(_arg1:String, _arg2:Point3D, _arg3:Point):IEffect{ return (createEffect(_arg1, _arg2, _arg3)); } protected function createEffect(_arg1:String, _arg2:Point3D, _arg3:Point):IEffect{ throw (new IllegalOperationError("Abstract method, should be overridden")); } public function createEffectToList(_arg1:SLinkedList, _arg2:String, _arg3:Point3D, _arg4:Point):void{ var _local5:IEffect = createEffect(_arg2, _arg3, _arg4); _arg1.append(_local5); } } }//package game.match.graphics.effects
Section 125
//IEffect (game.match.graphics.effects.IEffect) package game.match.graphics.effects { import flash.display.*; import game.match.graphics.*; public interface IEffect { function update():Boolean; function drawOnProjection(_arg1:Projection):void; function drawOnDisplayObject(_arg1:DisplayObject):void; } }//package game.match.graphics.effects
Section 126
//ShotEffect (game.match.graphics.effects.ShotEffect) package game.match.graphics.effects { import game.geom.*; import flash.geom.*; import game.match.graphics.*; public class ShotEffect extends Effect { private var size:Number; private var scale:Number; private var thickness:Number; private var alpha:Number; public function ShotEffect(_arg1:Point3D, _arg2:Point){ super(_arg1, _arg2); alpha = 1; size = 3; thickness = 1.5; } override public function update():Boolean{ alpha = (alpha - 0.02); size = (size + 0.5); thickness = (thickness + 0.1); position.x = (position.x + (direction.x / 10)); position.y = (position.y + (direction.y / 10)); if (alpha <= 0){ return (true); }; return (false); } override public function drawOnProjection(_arg1:Projection):void{ if (!scale){ scale = _arg1.calculateScale(position); }; _arg1.lineStyle((thickness * scale), 0xFFFFFF, alpha); _arg1.drawCircle(position, size, 0); } } }//package game.match.graphics.effects
Section 127
//SpecialStrikeEffect (game.match.graphics.effects.SpecialStrikeEffect) package game.match.graphics.effects { import game.events.*; import game.geom.*; import flash.geom.*; import game.match.graphics.effects.*; import game.match.graphics.*; class SpecialStrikeEffect extends Effect { private var size:Number; private var step:int; private var startPoint:Point3D; private var speedCoeff:Point; private var thickness:Number; private var finishPoint:Point3D; private var alpha:Number; function SpecialStrikeEffect(_arg1:Point3D, _arg2:Point){ super(_arg1, _arg2); step = 0; alpha = 1; size = 3; thickness = 1.2; speedCoeff = new Point((_arg2.x / (Math.abs(_arg2.x) + Math.abs(_arg2.y))), (_arg2.y / (Math.abs(_arg2.x) + Math.abs(_arg2.y)))); startPoint = _arg1.multiply(15).addDimensions((-(speedCoeff.x) * 25), (-(speedCoeff.y) * 25), 0); finishPoint = startPoint.copy(); } override public function update():Boolean{ step++; if (step < 6){ finishPoint.x = (finishPoint.x + (20 * speedCoeff.x)); finishPoint.y = (finishPoint.y + (20 * speedCoeff.y)); } else { dispatchEvent(new SFXEvent(SFXEvent.SFX_UNPAUSE)); position.x = (position.x + (3 * speedCoeff.x)); position.y = (position.y + (3 * speedCoeff.y)); alpha = (alpha - 0.02); size = (size + 0.5); thickness = (thickness + 0.1); if (step > 14){ startPoint.x = (startPoint.x + (20 * speedCoeff.x)); startPoint.y = (startPoint.y + (20 * speedCoeff.y)); }; }; if (alpha < 0){ return (true); }; return (false); } override public function drawOnProjection(_arg1:Projection):void{ if (step < 20){ _arg1.lineStyle((6 * _arg1.calculateScale(position)), 0xFFFFFF, 0.3); _arg1.drawLine(startPoint, finishPoint); _arg1.lineStyle((2 * _arg1.calculateScale(position)), 0xFFFFFF, 0.9); _arg1.drawLine(startPoint, finishPoint); }; _arg1.lineStyle((thickness * _arg1.calculateScale(position)), 0xFFFFFF, alpha); _arg1.drawCircle(position, size, 0); } } }//package game.match.graphics.effects
Section 128
//StrikeEffectFactory (game.match.graphics.effects.StrikeEffectFactory) package game.match.graphics.effects { import game.geom.*; import flash.geom.*; public class StrikeEffectFactory extends EffectFactory { public static const SPECIAL:String = "special"; public static const SHOT:String = "shot"; public static const SUPER:String = "super"; override protected function createEffect(_arg1:String, _arg2:Point3D, _arg3:Point):IEffect{ if (_arg1 == SHOT){ return (new ShotEffect(_arg2, _arg3)); }; if (_arg1 == SPECIAL){ return (new SpecialStrikeEffect(_arg2, _arg3)); }; if (_arg1 == SUPER){ return (new SuperStrikeEffect(_arg2, _arg3)); }; throw (new Error("Invalid strike effect type specified")); } } }//package game.match.graphics.effects
Section 129
//SuperStrikeEffect (game.match.graphics.effects.SuperStrikeEffect) package game.match.graphics.effects { import game.events.*; import game.geom.*; import flash.geom.*; import game.match.graphics.*; public class SuperStrikeEffect extends Effect { private const firstStageEnd:int = 90; private const secondStageStart:int = 125; private var postSize:Number; private var preSize:Number; private var scale:Number; private var step:int; private var preThickness:Number; private var postThickness:Number; private var preAlpha:Number; private var postAlpha:Number; public function SuperStrikeEffect(_arg1:Point3D, _arg2:Point){ super(_arg1, _arg2); step = 0; preAlpha = -0.2; preSize = 400; preThickness = 60; postAlpha = 0; postSize = 3; postThickness = 2; } override public function update():Boolean{ step++; if (step < firstStageEnd){ preAlpha = (preAlpha + (1 / firstStageEnd)); preThickness = (preThickness - 0.3); preSize = (preSize - (400 / firstStageEnd)); } else { if (step == firstStageEnd){ preAlpha = 0; } else { if (step == secondStageStart){ postAlpha = 1; dispatchEvent(new SFXEvent(SFXEvent.SFX_UNPAUSE)); } else { if (step > secondStageStart){ postAlpha = (postAlpha - 0.02); postSize = (postSize + 8); postThickness = (postThickness + 2); }; }; }; }; if (step > 200){ return (true); }; return (false); } override public function drawOnProjection(_arg1:Projection):void{ if (!scale){ scale = _arg1.calculateScale(position); }; if (preAlpha > 0){ _arg1.lineStyle((preThickness * scale), 0xFFFFFF, preAlpha); _arg1.drawCircle(position, preSize, 0); _arg1.lineStyle(((preThickness * scale) / 2), 0xFFFFFF, preAlpha); _arg1.drawCircle(position, (preSize / 2), 0); _arg1.lineStyle(((preThickness * scale) / 1.5), 0xFFFFFF, preAlpha); _arg1.drawCircle(position, (preSize / 1.5), 0); }; if (postAlpha > 0){ _arg1.lineStyle((postThickness * scale), 0xFFFFFF, postAlpha); _arg1.drawCircle(position, postSize, 0); _arg1.lineStyle(((postThickness * scale) / 2), 0xFFFFFF, postAlpha); _arg1.drawCircle(position, (postSize * 2), 0); _arg1.lineStyle(((postThickness * scale) * 1.5), 0xFFFFFF, postAlpha); _arg1.drawCircle(position, (postSize / 1.5), 0); }; _arg1.lineStyle(0, 0, 0); } } }//package game.match.graphics.effects
Section 130
//AscendingStrand (game.match.graphics.intro.AscendingStrand) package game.match.graphics.intro { import flash.events.*; import flash.display.*; import com.gskinner.motion.*; import flash.geom.*; import caurina.transitions.*; public class AscendingStrand extends Sprite { private var tween:GTween; public function AscendingStrand(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){ this.x = _arg1; this.y = _arg2; var _local7:Matrix = new Matrix(); _local7.createGradientBox(1, _arg6, (Math.PI / 2)); graphics.beginGradientFill("linear", [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0, 0.5, 0], [0, 127, 0xFF], _local7); graphics.drawRect(0, 0, _arg5, _arg6); graphics.endFill(); cacheAsBitmap = true; addEventListener(Event.ADDED_TO_STAGE, addedListener); tween = new GTween(this, Math.abs(((_arg3 - _arg2) / _arg4)), {y:_arg3}, {ease:Equations.easeInOutQuad}); tween.addEventListener(Event.COMPLETE, completeListener); tween.pause(); } private function addedListener(_arg1:Event):void{ tween.play(); removeEventListener(Event.ADDED_TO_STAGE, addedListener); } private function completeListener(_arg1:Event):void{ tween.removeEventListener(Event.COMPLETE, completeListener); tween.pause(); tween = null; graphics.clear(); if (parent){ parent.removeChild(this); }; } } }//package game.match.graphics.intro
Section 131
//IntroManager (game.match.graphics.intro.IntroManager) package game.match.graphics.intro { import flash.events.*; import flash.display.*; import game.sound.*; import com.gskinner.motion.*; import game.portrait.*; import game.descriptors.*; import game.match.graphics.messages.*; import flash.geom.*; import flash.utils.*; import flash.filters.*; import caurina.transitions.*; public class IntroManager extends EventDispatcher { private var opponentColorSet:Array; private var playerColorSet:Array; private var opponentName:String; private var playerName:String; private var soundManager:SoundManager; private var flashEffect:Sprite; private var backLayer:Sprite; private var separatingLine:Sprite; private var effectLayer:Sprite; private var versusBackdrop:Sprite; private var versusLabel:GiantMessage; private var playerNameLabel:MessageLabel; private var opponentNameLabel:MessageLabel; private var introSprite:Sprite; private var backdrop:Bitmap; private var opponentMask:Sprite; private var opponentBitmap:Bitmap; private var opponentNameSprite:Sprite; private var playerBitmap:Bitmap; private var playerNameSprite:Sprite; private var playerMask:Sprite; private var tonightLabel:GiantMessage; private var counter:int; public function IntroManager(_arg1:ActorDescriptor, _arg2:ActorDescriptor){ soundManager = SoundManager.getInstance(); introSprite = new Sprite(); backLayer = new Sprite(); effectLayer = new Sprite(); TopLevel.overlayLayer.addChild(introSprite); introSprite.addChild(backLayer); introSprite.addChild(effectLayer); playerColorSet = _arg1.colors; opponentColorSet = _arg2.colors; playerName = _arg1.name; opponentName = _arg2.name; backdrop = new Bitmap(BigPortraitGenerator.getInstance().generateBackdrop()); playerBitmap = new Bitmap(BigPortraitGenerator.getInstance().generatePortrait(playerColorSet, -3.7)); opponentBitmap = new Bitmap(BigPortraitGenerator.getInstance().generatePortrait(opponentColorSet, 3.7)); counter = getTimer(); } private function drawSeparatingLine(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, drawSeparatingLine); separatingLine = new Sprite(); separatingLine.graphics.moveTo(275, 450); separatingLine.graphics.lineTo(325, 0); separatingLine.graphics.lineStyle(2, 0, 1); separatingLine.graphics.moveTo(275, 450); separatingLine.graphics.lineTo(325, 0); separatingLine.x = 50; separatingLine.y = -452; backLayer.addChild(separatingLine); var _local2:GTween = new GTween(separatingLine, 0.1, {x:0, y:0}, {ease:Equations.easeOutQuad}); effectLayer.addChild(flashEffect); var _local3:GTween = new GTween(flashEffect, 0.4, {alpha:1}, {ease:Equations.easeInBounce}); _local3.pause(); var _local4:GTween = new GTween(flashEffect, 1, {alpha:0}, {ease:Equations.easeOutQuad}); _local4.pause(); _local2.nextTween = _local3; _local3.nextTween = _local4; _local3.addEventListener(Event.COMPLETE, separate); _local3.addEventListener(Event.COMPLETE, drawNames); soundManager.playSound(SFXLibrary.SFX_FLASH, 0.03); } private function clearScreen(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, clearScreen); var _local2:GTween = new GTween(playerNameSprite, 0.2, {x:-600, alpha:0}, {ease:Equations.easeInQuad}); var _local3:GTween = new GTween(opponentNameSprite, 0.2, {x:600, alpha:0}, {ease:Equations.easeInQuad}); var _local4:GTween = new GTween(separatingLine, 0.2, {alpha:0}, {ease:Equations.easeInQuad}); var _local5:GTween = new GTween(playerBitmap, 0.4, {x:50, y:-450}, {ease:Equations.easeInQuad}); var _local6:GTween = new GTween(opponentBitmap, 0.4, {x:250, y:450}, {ease:Equations.easeInQuad}); _local6.addEventListener(Event.COMPLETE, endIntro); } private function removeTonightLabel(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, removeTonightLabel); effectLayer.removeChild(tonightLabel); } private function separate(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, separate); var _local2:BitmapData = new BitmapData(400, 450, false, 4280921058); _local2.copyPixels(backdrop.bitmapData, new Rectangle(50, 0, 400, 450), new Point(0, 0)); _local2.copyPixels(playerBitmap.bitmapData, new Rectangle(0, 0, 300, 450), new Point(50, 0)); playerBitmap.bitmapData = _local2; playerBitmap.x = -50; playerMask = new Sprite(); playerMask.graphics.beginFill(0, 1); playerMask.graphics.lineTo(325, 0); playerMask.graphics.lineTo(275, 450); playerMask.graphics.lineTo(0, 450); playerMask.graphics.lineTo(0, 0); playerMask.graphics.endFill(); playerBitmap.mask = playerMask; backLayer.addChild(playerMask); var _local3:GTween = new GTween(playerBitmap, 1, {x:-45, y:-60}, {ease:Equations.easeOutCubic}); var _local4:BitmapData = new BitmapData(400, 450, false, 4280921058); _local4.copyPixels(backdrop.bitmapData, new Rectangle(350, 0, 400, 450), new Point(0, 0)); _local4.copyPixels(opponentBitmap.bitmapData, new Rectangle(0, 0, 300, 450), new Point(50, 0)); opponentBitmap.bitmapData = _local4; opponentBitmap.x = 250; opponentMask = new Sprite(); opponentMask.graphics.beginFill(0, 1); opponentMask.graphics.moveTo(25, 0); opponentMask.graphics.lineTo(300, 0); opponentMask.graphics.lineTo(300, 450); opponentMask.graphics.lineTo(-25, 450); opponentMask.graphics.lineTo(25, 0); opponentMask.graphics.endFill(); opponentMask.x = 300; opponentBitmap.mask = opponentMask; backLayer.addChild(opponentMask); var _local5:GTween = new GTween(opponentBitmap, 1, {x:245, y:60}, {ease:Equations.easeOutCubic}); backLayer.removeChild(backdrop); backdrop.bitmapData.dispose(); backdrop = null; } private function showBackdropAndPlayers(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, showBackdropAndPlayers); backdrop.x = -100; backdrop.y = 500; backLayer.addChild(backdrop); var _local2:GTween = new GTween(backdrop, 2.5, {y:0}, {ease:Equations.easeOutSine}); _local2.addEventListener(Event.COMPLETE, drawSeparatingLine); playerBitmap.y = 500; backLayer.addChild(playerBitmap); var _local3:GTween = new GTween(playerBitmap, 2, {y:0}, {ease:Equations.easeOutSine, delay:0.5}); opponentBitmap.y = 500; opponentBitmap.x = 300; var _local4:GTween = new GTween(opponentBitmap, 2, {y:0}, {ease:Equations.easeOutSine, delay:0.5}); backLayer.addChild(opponentBitmap); soundManager.playSound(SFXLibrary.MUSIC_INTRO); soundManager.playSound(SFXLibrary.SFX_SLASH, 2.25); } public function startIntro():void{ var _local9:AscendingStrand; var _local10:GTweenFilter; var _local11:GTweenFilter; var _local1:int; while (_local1 < 30) { _local9 = new AscendingStrand(((_local1 * 20) + (Math.random() * 50)), (450 + (Math.random() * 2500)), -600, 900, (5 + (Math.random() * 5)), (250 + (Math.random() * 100))); backLayer.addChild(_local9); _local1++; }; tonightLabel = new GiantMessage(); effectLayer.addChild(tonightLabel); tonightLabel.align = "center"; tonightLabel.text = "TONIGHT!"; tonightLabel.width = 600; tonightLabel.x = 0; tonightLabel.y = 450; var _local2:Array = tonightLabel.filters; var _local3:int = (_local2.push(new BlurFilter(0, 30, 1)) - 1); tonightLabel.filters = _local2; var _local4:GTween = new GTween(tonightLabel, 0.2, {y:(225 - (tonightLabel.getBounds(effectLayer).height / 2))}, {ease:Equations.easeNone, delay:0.3}); var _local5:GTween = new GTween(tonightLabel, 1.5, {x:(-(((600 * 1.5) - 600)) / 2), y:(235 - ((tonightLabel.getBounds(effectLayer).height * 1.5) / 2)), scaleX:1.5, scaleY:1.5}, {ease:Equations.easeOutQuad}); _local5.pause(); var _local6:GTween = new GTween(tonightLabel, 0.2, {y:-400}, {ease:Equations.easeInQuad}); _local6.pause(); _local4.nextTween = _local5; _local5.nextTween = _local6; if (tonightLabel.filters[_local3]){ _local10 = new GTweenFilter(tonightLabel, 0.3, {blurY:0}, {ease:Equations.easeOutQuad, filterIndex:_local3, delay:0.5}); _local11 = new GTweenFilter(tonightLabel, 0.1, {blurY:20}, {ease:Equations.easeInQuad, delay:1.2, filterIndex:_local3}); _local11.pause(); _local10.nextTween = _local11; }; _local4.addEventListener(Event.COMPLETE, showBackdropAndPlayers); _local6.addEventListener(Event.COMPLETE, removeTonightLabel); flashEffect = new Sprite(); flashEffect.graphics.beginFill(0xFFFFFF, 1); flashEffect.graphics.drawRect(0, 0, 600, 450); flashEffect.graphics.endFill(); flashEffect.alpha = 0; effectLayer.addChild(flashEffect); var _local7:GTween = new GTween(flashEffect, 0.1, {alpha:0.6}, {ease:Equations.easeInQuad, delay:0.35}); var _local8:GTween = new GTween(flashEffect, 0.5, {alpha:0}, {ease:Equations.easeOutQuad}); _local8.pause(); _local7.nextTween = _local8; soundManager.playSound(SFXLibrary.SFX_WOOSH3, 0.2); soundManager.playSound(SFXLibrary.SFX_WOOSH3, 1.9); soundManager.playSound(SFXLibrary.SFX_FLASH, 0.15); } private function kill():void{ soundManager = null; playerBitmap.bitmapData.dispose(); playerBitmap.mask = null; opponentBitmap.bitmapData.dispose(); opponentBitmap.mask = null; playerNameSprite.graphics.clear(); playerNameSprite.removeChild(playerNameLabel); playerNameSprite = null; playerNameLabel = null; opponentNameSprite.graphics.clear(); opponentNameSprite.removeChild(opponentNameLabel); opponentNameSprite = null; opponentNameLabel = null; versusBackdrop.graphics.clear(); versusBackdrop = null; backLayer.removeChild(versusLabel); versusLabel = null; introSprite.parent.removeChild(introSprite); introSprite.removeChild(backLayer); introSprite.removeChild(effectLayer); tonightLabel = null; separatingLine.graphics.clear(); separatingLine = null; flashEffect.graphics.clear(); flashEffect = null; playerMask.graphics.clear(); playerMask = null; opponentMask.graphics.clear(); opponentMask = null; } private function drawNames(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, drawNames); var _local2:Matrix = new Matrix(); playerNameSprite = new Sprite(); _local2.createGradientBox(600, 1); playerNameSprite.graphics.beginGradientFill("linear", [0xFFFFFF, 0xFFFFFF], [1, 0.5], [0, 0xFF], _local2); playerNameSprite.graphics.moveTo(0, 10); playerNameSprite.graphics.lineTo(600, 10); playerNameSprite.graphics.lineTo(600, 45); playerNameSprite.graphics.lineTo(0, 45); playerNameSprite.graphics.lineTo(0, 10); playerNameSprite.graphics.endFill(); playerNameSprite.graphics.moveTo(600, 60); playerNameSprite.graphics.lineStyle(2, 0, 1); playerNameSprite.graphics.lineTo(320, 60); playerNameLabel = new MessageLabel(); playerNameLabel.text = playerName; playerNameLabel.width = 600; playerNameLabel.x = 600; playerNameLabel.y = 3; var _local3:GTween = new GTween(playerNameLabel, 0.2, {x:10}, {ease:Equations.easeNone}); var _local4:GTween = new GTween(playerNameLabel, 1.9, {x:60}, {ease:Equations.easeOutQuad}); _local4.pause(); var _local5:GTween = new GTween(playerNameLabel, 0.2, {x:-600}, {ease:Equations.easeInQuad}); _local5.pause(); _local3.nextTween = _local4; _local4.nextTween = _local5; playerNameSprite.addChild(playerNameLabel); backLayer.addChild(playerNameSprite); opponentNameSprite = new Sprite(); _local2.createGradientBox(600, 1); opponentNameSprite.graphics.beginGradientFill("linear", [0xFFFFFF, 0xFFFFFF], [0.5, 1], [0, 0xFF], _local2); opponentNameSprite.graphics.moveTo(0, 400); opponentNameSprite.graphics.lineTo(600, 400); opponentNameSprite.graphics.lineTo(600, 435); opponentNameSprite.graphics.lineTo(0, 435); opponentNameSprite.graphics.lineTo(0, 400); opponentNameSprite.graphics.endFill(); opponentNameSprite.graphics.moveTo(0, 390); opponentNameSprite.graphics.lineStyle(2, 0, 1); opponentNameSprite.graphics.lineTo(280, 390); opponentNameLabel = new MessageLabel(); opponentNameLabel.align = "right"; opponentNameLabel.text = opponentName; opponentNameLabel.width = 600; opponentNameLabel.x = -600; opponentNameLabel.y = 393; var _local6:GTween = new GTween(opponentNameLabel, 0.2, {x:-10}, {ease:Equations.easeNone}); var _local7:GTween = new GTween(opponentNameLabel, 1.95, {x:-60}, {ease:Equations.easeOutQuad}); _local7.pause(); var _local8:GTween = new GTween(opponentNameLabel, 0.2, {x:600}, {ease:Equations.easeInQuad}); _local8.pause(); _local6.nextTween = _local7; _local7.nextTween = _local8; opponentNameSprite.addChild(opponentNameLabel); backLayer.addChild(opponentNameSprite); versusBackdrop = new Sprite(); _local2.createGradientBox(10, 450, (Math.PI / 2)); versusBackdrop.graphics.beginGradientFill("linear", [0xFFFFFF, 0xFFFFFF, 0xFFFFFF], [0, 1, 0], [0, 127, 0xFF], _local2); versusBackdrop.graphics.drawRect(0, 0, 600, 450); versusBackdrop.graphics.endFill(); versusBackdrop.alpha = 0; backLayer.addChild(versusBackdrop); var _local9:GTween = new GTween(versusBackdrop, 0.2, {scaleY:0.2, alpha:1, y:180}, {ease:Equations.easeInQuad}); var _local10:GTween = new GTween(versusBackdrop, 2, {scaleY:0.1, alpha:1, y:202.5}, {ease:Equations.easeOutQuad}); _local10.pause(); var _local11:GTween = new GTween(versusBackdrop, 0.1, {scaleY:0.5, alpha:0, y:112.5}, {ease:Equations.easeInQuad}); _local11.pause(); _local9.nextTween = _local10; _local10.nextTween = _local11; versusLabel = new GiantMessage(); versusLabel.align = "center"; versusLabel.text = "VERSUS"; versusLabel.width = 600; versusLabel.scaleX = 2; versusLabel.scaleY = 2; versusLabel.alpha = 0; versusLabel.x = -300; versusLabel.y = (225 - (versusLabel.getBounds(backLayer).height / 2)); var _local12:GTween = new GTween(versusLabel, 0.2, {scaleX:1, scaleY:1, alpha:1, x:0, y:190}, {ease:Equations.easeInQuad}); var _local13:GTween = new GTween(versusLabel, 2, {scaleX:1.2, scaleY:1.2, alpha:1, x:(300 - (300 * 1.2)), y:180}, {ease:Equations.easeOutQuad}); _local13.pause(); var _local14:GTween = new GTween(versusLabel, 0.2, {scaleX:4, scaleY:4, alpha:0, x:-900, y:50}, {ease:Equations.easeInQuad}); _local14.pause(); _local12.nextTween = _local13; _local13.nextTween = _local14; _local10.addEventListener(Event.COMPLETE, clearScreen); backLayer.addChild(versusLabel); dispatchEvent(new Event(Event.INIT)); soundManager.playSound(SFXLibrary.SFX_WOOSH1, 1.9); soundManager.playSound(SFXLibrary.SFX_WOOSH1, 1.95); soundManager.playSound(SFXLibrary.SFX_WOOSH2, 2.05); } private function endIntro(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, endIntro); dispatchEvent(new Event(Event.INIT)); dispatchEvent(new Event(Event.COMPLETE)); kill(); } } }//package game.match.graphics.intro
Section 132
//GameScoreSprite (game.match.graphics.messages.GameScoreSprite) package game.match.graphics.messages { import flash.events.*; import flash.display.*; import flash.text.*; public class GameScoreSprite extends Sprite { private var scoreLabel:MessageLabel; private var playerNameLabel:SmallLabel; private var opponentNameLabel:SmallLabel; public function GameScoreSprite(_arg1:String, _arg2:String, _arg3:String){ this.graphics.moveTo(10, 10); this.graphics.beginFill(0xFFFFFF, 0); this.graphics.lineTo(590, 10); this.graphics.lineTo(590, 80); this.graphics.lineTo(10, 80); this.graphics.lineTo(10, 10); this.graphics.endFill(); scoreLabel = new MessageLabel(); scoreLabel.text = _arg3; scoreLabel.width = 400; scoreLabel.align = "center"; scoreLabel.autoSize = TextFieldAutoSize.CENTER; scoreLabel.x = 100; scoreLabel.y = 10; this.addChild(scoreLabel); playerNameLabel = new SmallLabel(); playerNameLabel.align = "right"; playerNameLabel.width = 260; playerNameLabel.x = 10; playerNameLabel.y = 55; playerNameLabel.autoSize = TextFieldAutoSize.RIGHT; playerNameLabel.text = _arg1; this.addChild(playerNameLabel); opponentNameLabel = new SmallLabel(); opponentNameLabel.align = "left"; opponentNameLabel.width = 260; opponentNameLabel.x = 325; opponentNameLabel.y = 55; opponentNameLabel.text = _arg2; opponentNameLabel.autoSize = TextFieldAutoSize.LEFT; this.addChild(opponentNameLabel); addEventListener(Event.REMOVED_FROM_STAGE, removedListener); } private function removedListener(_arg1:Event):void{ } } }//package game.match.graphics.messages
Section 133
//GiantMessage (game.match.graphics.messages.GiantMessage) package game.match.graphics.messages { import flash.text.*; import game.*; import com.dimonte.ui.*; import flash.filters.*; public class GiantMessage extends Label { public function GiantMessage(){ Font.registerFont(FontManager.LiberationSansBoldItalic); this.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 64, 4294967295); this.embedFonts = true; var _local1:Array = this.filters; _local1.push(new GlowFilter(0, 1, 5, 5, 10, 1)); this.filters = _local1; } override protected function kill():void{ super.kill(); this.textFormat = null; this.filters = null; } } }//package game.match.graphics.messages
Section 134
//GraphicsMessage (game.match.graphics.messages.GraphicsMessage) package game.match.graphics.messages { import flash.display.*; import flash.filters.*; public class GraphicsMessage extends Sprite { public function GraphicsMessage(){ var _local1:Array = this.filters; _local1.push(new GlowFilter(0, 1, 5, 5, 10, 1)); this.filters = _local1; } } }//package game.match.graphics.messages
Section 135
//MatchScoreSprite (game.match.graphics.messages.MatchScoreSprite) package game.match.graphics.messages { import flash.events.*; import flash.display.*; import flash.text.*; public class MatchScoreSprite extends Sprite { public function MatchScoreSprite(_arg1:String, _arg2:String, _arg3:Array, _arg4:int){ graphics.beginFill(0, 0); graphics.drawRect(0, 100, 600, 180); graphics.endFill(); graphics.lineStyle(8, 0, 1, false, "normal", "round"); graphics.moveTo(40, 160); graphics.lineTo(505, 160); graphics.moveTo(40, 210); graphics.lineTo(505, 210); graphics.moveTo(320, 115); graphics.lineTo(320, 0xFF); graphics.moveTo(380, 115); graphics.lineTo(380, 0xFF); graphics.moveTo(440, 115); graphics.lineTo(440, 0xFF); graphics.lineStyle(4, 0xFFFFFF, 1, false, "normal", "round"); graphics.moveTo(40, 160); graphics.lineTo(505, 160); graphics.moveTo(40, 210); graphics.lineTo(505, 210); graphics.moveTo(320, 115); graphics.lineTo(320, 0xFF); graphics.moveTo(380, 115); graphics.lineTo(380, 0xFF); graphics.moveTo(440, 115); graphics.lineTo(440, 0xFF); var _local5 = 350; var _local6:int; var _local7:int; while (_local7 < _arg4) { if (_arg3[_local7]){ _local6 = 185; } else { _local6 = 235; }; graphics.lineStyle(2, 0, 1, false, "normal", "round"); graphics.beginFill(0xFFFFFF, 1); graphics.drawCircle(_local5, _local6, 10); graphics.endFill(); _local5 = (_local5 + 60); _local7++; }; var _local8:MediumLabel = new MediumLabel(); _local8.align = "right"; _local8.width = 260; _local8.x = 50; _local8.y = 170; _local8.autoSize = TextFieldAutoSize.RIGHT; _local8.text = _arg1; addChild(_local8); var _local9:MediumLabel = new MediumLabel(); _local9.align = "right"; _local9.width = 260; _local9.x = 50; _local9.y = 220; _local9.text = _arg2; _local9.autoSize = TextFieldAutoSize.RIGHT; addChild(_local9); var _local10:MediumLabel = new MediumLabel(); _local10.align = "right"; _local10.width = 120; _local10.x = 190; _local10.y = 120; _local10.autoSize = TextFieldAutoSize.RIGHT; _local10.text = "Game"; addChild(_local10); _local10 = new MediumLabel(); _local10.align = "right"; _local10.width = 120; _local10.x = 240; _local10.y = 120; _local10.autoSize = TextFieldAutoSize.RIGHT; _local10.text = "1"; addChild(_local10); _local10 = new MediumLabel(); _local10.align = "right"; _local10.width = 120; _local10.x = 300; _local10.y = 120; _local10.autoSize = TextFieldAutoSize.RIGHT; _local10.text = "2"; addChild(_local10); _local10 = new MediumLabel(); _local10.align = "right"; _local10.width = 120; _local10.x = 360; _local10.y = 120; _local10.autoSize = TextFieldAutoSize.RIGHT; _local10.text = "3"; addChild(_local10); y = (y - 100); addEventListener(Event.REMOVED_FROM_STAGE, removedListener); } private function removedListener(_arg1:Event):void{ while (numChildren > 0) { removeChildAt(0); }; } } }//package game.match.graphics.messages
Section 136
//MediumLabel (game.match.graphics.messages.MediumLabel) package game.match.graphics.messages { import flash.text.*; import game.*; import com.dimonte.ui.*; import flash.filters.*; public class MediumLabel extends Label { public function MediumLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); this.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 24, 4294967295); this.embedFonts = true; var _local1:Array = this.filters; _local1.push(new GlowFilter(0, 1, 3.5, 3.5, 10, 1)); this.filters = _local1; } override protected function kill():void{ super.kill(); this.textFormat = null; this.filters = null; } } }//package game.match.graphics.messages
Section 137
//MessageLabel (game.match.graphics.messages.MessageLabel) package game.match.graphics.messages { import flash.text.*; import game.*; import com.dimonte.ui.*; import flash.filters.*; public class MessageLabel extends Label { public function MessageLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); this.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 38, 4294967295); this.embedFonts = true; var _local1:Array = this.filters; _local1.push(new GlowFilter(0, 1, 5, 5, 10, 1)); this.filters = _local1; } override protected function kill():void{ super.kill(); this.textFormat = null; this.filters = null; } } }//package game.match.graphics.messages
Section 138
//MessageOverlay (game.match.graphics.messages.MessageOverlay) package game.match.graphics.messages { import flash.display.*; import game.events.*; import com.gskinner.motion.*; import caurina.transitions.*; public class MessageOverlay extends Sprite { private const delay:Number = 1.5; private const tweenTime:Number = 0.5; private var message:Sprite; private var messageQueue:Array; private var tweenTimeline:GTweenTimeline; private var tweenOut:GTween; private var tweenIn:GTween; private var _pause:Boolean; public function MessageOverlay(){ messageQueue = new Array(); message = new Sprite(); tweenIn = new GTween(message, tweenTime); tweenIn.ease = Equations.easeOutSine; tweenOut = new GTween(message, tweenTime); tweenOut.ease = Equations.easeInSine; tweenTimeline = new GTweenTimeline(message, ((tweenTime * 2) + delay)); tweenTimeline.addTween(0, tweenIn); tweenTimeline.addTween((tweenTime + delay), tweenOut); tweenTimeline.addCallback(((tweenTime * 2) + delay), messageDisplayed); tweenTimeline.pause(); this.addChild(message); } public function destroy():void{ message = null; tweenTimeline.pause(); tweenTimeline = null; tweenIn.pause(); tweenIn = null; tweenOut.pause(); tweenOut = null; do { } while (messageQueue.pop()); messageQueue = null; } public function addTCOffText():void{ addTextMessage("Congratulations!\nYou're doing great!"); addTextMessage("One little thing before you go."); addTextMessage("You know that\ntrajectory calculator?"); addTextMessage("That yellow circle that shows\nwhere the ball is going."); addTextMessage("Well... It's gone.\nSorry."); addTextMessage("If you want to bring it back,\ncheck instructions."); } private function displayNext():void{ if (messageQueue.length > 0){ addChild(message); message.addChild(messageQueue.shift()); message.y = (225 - (message.getBounds(this).height / 2)); message.x = 600; tweenIn.setProperty("x", (300 - (message.getBounds(this).width / 2))); tweenOut.setProperty("x", (0 - message.getBounds(this).width)); tweenTimeline.play(); } else { dispatchEvent(new MessageEvent(MessageEvent.QUEUE_EMPTY)); }; } private function messageDisplayed():void{ tweenTimeline.gotoAndStop(0); tweenTimeline.pause(); removeChild(message); while (message.numChildren > 0) { message.removeChildAt(0); }; displayNext(); } public function addMatchScore(_arg1:String, _arg2:String, _arg3:Array, _arg4:int):void{ var _local5:MatchScoreSprite = new MatchScoreSprite(_arg1, _arg2, _arg3, _arg4); messageQueue.push(_local5); } public function addGameScore(_arg1:String, _arg2:String, _arg3:String):void{ var _local4:GameScoreSprite = new GameScoreSprite(_arg1, _arg2, _arg3); messageQueue.push(_local4); } public function addInstructions():void{ var _local1:Sprite = new Sprite(); _local1.graphics.beginFill(0, 0); _local1.graphics.drawRect(0, 0, 600, 450); _local1.graphics.endFill(); var _local2:MessageLabel = new MessageLabel(); _local2.width = 540; _local2.align = "center"; _local2.text = "This is the ball"; _local2.y = 200; _local1.addChild(_local2); var _local3:GraphicsMessage = new GraphicsMessage(); _local3.graphics.lineStyle(3, 0xFFFFFF); _local3.graphics.moveTo(410, 220); _local3.graphics.lineTo(430, 205); _local1.addChild(_local2); _local1.addChild(_local3); messageQueue.push(_local1); _local1 = new Sprite(); _local1.graphics.beginFill(0, 0); _local1.graphics.drawRect(0, 0, 600, 450); _local1.graphics.endFill(); _local2 = new MessageLabel(); _local2.width = 600; _local2.align = "center"; _local2.text = "Hit it with your racket"; _local2.y = 200; _local1.addChild(_local2); _local3 = new GraphicsMessage(); _local3.graphics.lineStyle(3, 0xFFFFFF); _local3.graphics.moveTo(480, 250); _local3.graphics.lineTo(510, 290); _local1.addChild(_local2); _local1.addChild(_local3); messageQueue.push(_local1); addTextMessage("Have fun!"); } public function playMessages():void{ displayNext(); } public function set pause(_arg1:Boolean):void{ _pause = _arg1; if (_arg1){ tweenTimeline.pause(); } else { if (message.numChildren > 0){ tweenTimeline.play(); }; }; } public function addTextMessage(_arg1:String):void{ var _local2:MessageLabel = new MessageLabel(); _local2.width = 600; _local2.align = "center"; _local2.text = _arg1; messageQueue.push(_local2); } } }//package game.match.graphics.messages
Section 139
//PerformanceWarning (game.match.graphics.messages.PerformanceWarning) package game.match.graphics.messages { import game.ui.*; import flash.display.*; import flash.text.*; import game.*; import flash.geom.*; import com.dimonte.ui.*; public class PerformanceWarning extends Sprite { public function PerformanceWarning(){ graphics.beginFill(0, 0); graphics.drawRect(0, 0, 600, 450); graphics.endFill(); var _local1:Matrix = new Matrix(); _local1.createGradientBox(2, 200, (Math.PI / 2), 0, 150); graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local1); graphics.lineStyle(1, 0xFFFFFF, 1); graphics.drawRoundRect(60, 150, 480, 200, 10, 10); graphics.endFill(); var _local2:LevelLabel = new LevelLabel(); _local2.x = 70; _local2.y = 155; _local2.width = 460; _local2.text = "Performance Warning"; addChild(_local2); var _local3:Label = new Label(); var _local4:TextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 14, 4294967295); _local4.align = "justify"; _local3.textFormat = _local4; _local3.x = 70; _local3.y = 190; _local3.width = 460; _local3.text = "It seems that you experience some performance issues. To improve performance, quit match, go to Settings menu and set graphics option to lower value. If you still experience slowdowns after that, turn on Low FPS Mode."; addChild(_local3); var _local5:Label = new Label(); _local4.align = "center"; _local4.bold = true; _local5.textFormat = _local4; _local5.x = 70; _local5.y = 275; _local5.width = 460; _local5.text = "This message won't be shown to you again.\n\nClick anywhere on screen to return to pause menu.\nTo continue match, press P or Esc."; addChild(_local5); } } }//package game.match.graphics.messages
Section 140
//SmallLabel (game.match.graphics.messages.SmallLabel) package game.match.graphics.messages { import flash.text.*; import game.*; import com.dimonte.ui.*; import flash.filters.*; public class SmallLabel extends Label { public function SmallLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); this.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 14, 4294967295); this.embedFonts = true; var _local1:Array = this.filters; _local1.push(new GlowFilter(0, 1, 2, 2, 10, 1)); this.filters = _local1; } override protected function kill():void{ super.kill(); this.textFormat = null; this.filters = null; } } }//package game.match.graphics.messages
Section 141
//StatOverlay (game.match.graphics.messages.StatOverlay) package game.match.graphics.messages { import flash.display.*; import flash.text.*; import game.*; import com.dimonte.ui.*; public class StatOverlay extends Sprite { private var specStreakLabel:Label; private var shotStreakLabel:Label; private var superSpeed:Number; private var specialSpeed:Number; private var lastStrikeSpeedLabel:Label; private var superStreakLabel:Label; public function StatOverlay(){ this.specialSpeed = specialSpeed; this.superSpeed = superSpeed; graphics.beginFill(0, 0.4); graphics.drawRect(0, 10, 600, 30); graphics.endFill(); graphics.beginFill(0, 0.4); graphics.drawRect(0, 410, 600, 30); graphics.endFill(); lastStrikeSpeedLabel = new Label(); lastStrikeSpeedLabel.move(0, 12); lastStrikeSpeedLabel.width = 600; lastStrikeSpeedLabel.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, null, null, null, null, null, "center"); addChild(lastStrikeSpeedLabel); shotStreakLabel = new Label(); shotStreakLabel.move(0, 412); shotStreakLabel.width = 200; shotStreakLabel.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, null, null, null, null, null, "center"); addChild(shotStreakLabel); specStreakLabel = new Label(); specStreakLabel.move(200, 412); specStreakLabel.width = 200; specStreakLabel.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, null, null, null, null, null, "center"); addChild(specStreakLabel); superStreakLabel = new Label(); superStreakLabel.move(400, 412); superStreakLabel.width = 200; superStreakLabel.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, null, null, null, null, null, "center"); addChild(superStreakLabel); updateStats(0, 0, 0, 0); } public function setStrikeSpeeds(_arg1:Number, _arg2:Number):void{ this.specialSpeed = _arg1; this.superSpeed = _arg2; } public function updateStats(_arg1:Number, _arg2:int, _arg3:int, _arg4:int):void{ if (_arg1 > superSpeed){ lastStrikeSpeedLabel.text = (("Last strike speed: " + (Math.floor((_arg1 * 10)) / 10)) + " - SUPER!"); } else { if (_arg1 > specialSpeed){ lastStrikeSpeedLabel.text = (((("Last strike speed: " + (Math.floor((_arg1 * 10)) / 10)) + " - Special! (") + (Math.ceil((superSpeed * 10)) / 10)) + " for super)"); } else { lastStrikeSpeedLabel.text = (((("Last strike speed: " + (Math.floor((_arg1 * 10)) / 10)) + " (") + (Math.ceil((specialSpeed * 10)) / 10)) + " for special)"); }; }; shotStreakLabel.text = ("Shots: " + _arg2); specStreakLabel.text = ("Specials: " + _arg3); superStreakLabel.text = ("Supers: " + _arg4); } } }//package game.match.graphics.messages
Section 142
//CPUMatchGraphics (game.match.graphics.CPUMatchGraphics) package game.match.graphics { import flash.display.*; import game.match.physics.*; import game.match.graphics.messages.*; public class CPUMatchGraphics extends MatchGraphics { private var lastGraph:SmallLabel; private var lastPhys:SmallLabel; private var totalGraph:SmallLabel; private var cpuMP:CPUMatchPhysics; private var timeSprite:Sprite; private var totalPhys:SmallLabel; public function CPUMatchGraphics(_arg1:MatchPhysics, _arg2:Array, _arg3:Array, _arg4:Number){ super(_arg1); cpuMP = (this.mp as CPUMatchPhysics); var _local5:int; while (_local5 < 7) { colorsArray[_local5] = _arg2[_local5]; _local5++; }; _local5 = 0; while (_local5 < 7) { colorsArray[(_local5 + 7)] = _arg3[_local5]; _local5++; }; createBG(_arg4); createTimeFields(); } private function createTimeFields():void{ timeSprite = new Sprite(); lastPhys = new SmallLabel(); lastPhys.x = 10; lastPhys.y = 10; totalPhys = new SmallLabel(); totalPhys.x = 100; totalPhys.y = 10; lastGraph = new SmallLabel(); lastGraph.x = 10; lastGraph.y = 30; totalGraph = new SmallLabel(); totalGraph.x = 100; totalGraph.y = 30; timeSprite.addChild(lastPhys); timeSprite.addChild(totalPhys); timeSprite.addChild(lastGraph); timeSprite.addChild(totalGraph); } override public function update():void{ outputBitmapData.lock(); drawBG(); drawAnnouncements(); draw3DObjects(); drawMessageOverlay(); outputBitmapData.unlock(); } override protected function drawMessageOverlay():void{ super.drawMessageOverlay(); } override protected function drawAnnouncements():void{ super.drawAnnouncements(); outputBitmapData.draw(timeSprite); } private function drawOpponentSide():void{ mainGraphics.lineStyle(1, 0, 0.3); renderWorld(cpuMP.cpuCourtSide, cpuMP.cpuPositionZ); outputBitmapData.draw(vectorContainer); mainGraphics.clear(); } override protected function kill():void{ super.kill(); cpuMP = null; while (timeSprite.numChildren > 0) { timeSprite.removeChildAt(0); }; timeSprite = null; lastPhys = null; totalPhys = null; lastGraph = null; totalGraph = null; } override protected function draw3DObjects():void{ mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.7); drawBall(mp.tBall); drawOpponentSide(); drawEffects(); outputBitmapData.draw(vectorContainer); if ((mp.tBall.pos.z - 1) < cpuMP.cpuPositionZ){ mainGraphics.lineStyle(1, 0, 0.7); drawBall(mp.tBall); }; drawPlayerSide(); if ((mp.tBall.pos.z + 1) < mp.playerPositionZ){ mainGraphics.lineStyle(1, 0, 0.7); drawBall(mp.tBall); }; mainGraphics.lineStyle(1, 0, 0.4); outputBitmapData.draw(vectorContainer); mainGraphics.clear(); } } }//package game.match.graphics
Section 143
//MatchGraphics (game.match.graphics.MatchGraphics) package game.match.graphics { import game.profile.*; import flash.display.*; import game.events.*; import game.match.physics.*; import game.geom.*; import game.match.graphics.messages.*; import de.polygonal.ds.*; import flash.geom.*; import game.match.graphics.effects.*; public class MatchGraphics extends MatchProjection { private var courtBG:BitmapData; private var slowMoAlpha:Number; private var courtBG2:BitmapData; protected var mp:MatchPhysics; private var slowMoMatrix:Matrix; private var strikeEffectFactory:StrikeEffectFactory; private var bgFrameCounter:int; protected var easyMode:Boolean; private var easyModeTargetSet:Boolean; private var effectList:SLinkedList; private var easyModeTarget:Point; protected var outputBitmapData:BitmapData; protected var _messageOverlay:MessageOverlay; private var currentEffect:IEffect; protected var _outputBitmap:Bitmap; protected var _pause:Boolean; protected var vectorContainer:Sprite; public function MatchGraphics(_arg1:MatchPhysics){ this.mp = _arg1; _arg1.addEventListener(MatchEvent.SHOT, shotListener); _arg1.addEventListener(MatchEvent.SUPER, superstrikeListener); _arg1.addEventListener(MatchEvent.SPECIAL, specialstrikeListener); vectorContainer = new Sprite(); scale = 15; super(vectorContainer); easyMode = ProfileController.getInstance().profile.easyMode; slowMoMatrix = new Matrix(); slowMoMatrix.createGradientBox(10, 225, (Math.PI / 2), 0, 0); slowMoAlpha = 0; effectList = new SLinkedList(); strikeEffectFactory = new StrikeEffectFactory(); setScreen(new Point3D(0, 0, -620)); setCamera(new Point3D(300, 225, -1400)); outputBitmapData = new BitmapData(600, 450, true, 4278190080); _outputBitmap = new Bitmap(outputBitmapData); _messageOverlay = new MessageOverlay(); if (ProfileController.getInstance().profile.graphics < 3){ flat3D = true; }; } public function destroy():void{ kill(); } private function drawWalls():void{ mainGraphics.lineStyle(1, 0, 0.4); drawParallelepiped(new Point3D(-315, 200, 0), 10, 25, 600, 4294967295); drawParallelepiped(new Point3D(-305, 200, 0), 0, 25, 600, 4294967295); drawParallelepiped(new Point3D(-305, -25, 0), 0, 200, 600, 285212672); drawParallelepiped(new Point3D(315, 200, 0), 10, 25, 600, 4294967295); drawParallelepiped(new Point3D(305, -25, 0), 0, 200, 600, 285212672); render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); } protected function drawBG():void{ if (++bgFrameCounter < 15){ outputBitmapData.copyPixels(courtBG, new Rectangle(0, 0, 600, 450), new Point(0, 0)); } else { outputBitmapData.copyPixels(courtBG2, new Rectangle(0, 0, 600, 450), new Point(0, 0)); if (bgFrameCounter > 30){ bgFrameCounter = 0; }; }; } private function sfxUnpauseListener(_arg1:SFXEvent):void{ Effect(_arg1.target).removeEventListener(SFXEvent.SFX_UNPAUSE, sfxUnpauseListener); dispatchEvent(new MatchEvent(MatchEvent.UNPAUSE_PHYSICS)); } public function makeScreenShot():BitmapData{ return (_outputBitmap.bitmapData.clone()); } private function drawField():void{ mainGraphics.lineStyle(1, 0xFFFFFF, 0.5); drawRotatedParallelepiped(new Point3D(0, 0, 0), 300, 225, 600, 0, 0); mainGraphics.lineStyle(2, 0xFFFFFF, 0.5); addPolyToRender(new Point3D(-300, 225, -600), new Point3D(300, 225, -600), new Point3D(300, 225, 600), new Point3D(-300, 225, 600), 4278216192, 0); render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); mainGraphics.lineStyle(2, 0xFFFFFF, 1); drawLine(new Point3D(-300, 225, 0), new Point3D(300, 225, 0)); drawLine(new Point3D(-260, 225, -300), new Point3D(260, 225, -300)); drawLine(new Point3D(-260, 225, 300), new Point3D(260, 225, 300)); drawLine(new Point3D(0, 225, -300), new Point3D(0, 225, 300)); drawLine(new Point3D(260, 225, -600), new Point3D(260, 225, 600)); drawLine(new Point3D(-260, 225, -600), new Point3D(-260, 225, 600)); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); } public function get outputBitmap():Bitmap{ return (_outputBitmap); } private function drawEasyModeEffect():void{ var _local1:int; var _local2:int; var _local3:Number; var _local4:Number; if ((mp.tBall.speed.z < 0)){ if (!easyModeTargetSet){ _local1 = 40; if (ProfileController.getInstance().profile.lowFPS){ _local1 = 25; }; easyModeTarget = BallTrajectoryCalculator.calculatePreciseTrajectory(mp.tBall.pos.copy(), mp.tBall.speed.copy(), mp.playerPositionZ, _local1); easyModeTarget.x = (easyModeTarget.x * 15); easyModeTarget.y = (easyModeTarget.y * 15); easyModeTargetSet = true; } else { _local2 = ((mp.tBall.pos.z - mp.playerPositionZ) * 5); _local2 = Math.max(_local2, 4); _local3 = Math.sqrt(_local2); _local4 = (1 / _local3); mainGraphics.lineStyle(_local3, 0xFFFF00, _local4); drawCircle(new Point3D(easyModeTarget.x, easyModeTarget.y, (mp.playerPositionZ * 15)), _local2, 0); }; } else { easyModeTargetSet = false; }; mainGraphics.lineStyle(1, 0, 0.2); drawCircle(new Point3D((mp.tBall.pos.x * 15), (mp.tBall.pos.y * 15), (mp.playerPositionZ * 15)), 7.5, 587202304); } protected function draw3DObjects():void{ mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.7); drawBall(mp.tBall); drawEffects(); drawPlayerSide(); outputBitmapData.draw(vectorContainer, null, null, null, null, false); } protected function drawEffects():void{ var _local1:SListIterator = effectList.getListIterator(); currentEffect = IEffect(_local1.data); while (currentEffect) { if (currentEffect.update()){ effectList.remove(_local1); } else { currentEffect.drawOnProjection(this); _local1.forth(); }; currentEffect = _local1.data; }; render(); drawSloMoEffect(); if (easyMode){ drawEasyModeEffect(); }; } protected function drawAnnouncements():void{ } protected function drawMessageOverlay():void{ outputBitmapData.draw(_messageOverlay, null, null, null, null, true); } protected function drawPlayerSide():void{ mainGraphics.lineStyle(2, 0, 0.5); renderWorld(mp.playerCourtSide, mp.playerPositionZ); outputBitmapData.draw(vectorContainer); mainGraphics.clear(); } private function drawSky():void{ var _local1:Matrix = new Matrix(); _local1.createGradientBox(10, 200, (Math.PI / 2), 0, 0); mainGraphics.beginGradientFill("linear", [2730978, 3387647], [1, 1], [0, 0xFF], _local1); mainGraphics.drawRect(0, 0, 600, 450); mainGraphics.endFill(); } private function superstrikeListener(_arg1:MatchEvent):void{ var _local2:IEffect = strikeEffectFactory.createEffectToReturn(StrikeEffectFactory.SUPER, mp.tBall.pos, Point(_arg1.special)); Effect(_local2).addEventListener(SFXEvent.SFX_UNPAUSE, sfxUnpauseListener, false, 0, true); effectList.append(_local2); dispatchEvent(new MatchEvent(MatchEvent.PAUSE_PHYSICS)); } public function update():void{ outputBitmapData.lock(); drawBG(); drawAnnouncements(); draw3DObjects(); drawMessageOverlay(); outputBitmapData.unlock(); } private function drawBench(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:int, _arg5:Number, _arg6:Boolean):void{ var _local11:uint; var _local12:uint; var _local13:uint; var _local14:uint; var _local15:uint; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Boolean; var _local20:Boolean; var _local21:Boolean; var _local22:Boolean; var _local23:int; var _local24:Number; var _local7:Array = [4290950053, 4281544491, 4279309076, 4283899655, 4282066204, 4294964405]; var _local8:Array = [4294960342, 4294960342, 4294962646, 4292458639, 4287387673, 4293646284, 4283181841]; var _local9:Array = [4292886849, 4282421061, 4291814399, 4294967295, 4294927872, 4284901119, 4294953984, 4278229452, 4278190080, 4294967295, 4281545727, 4284927078]; var _local10:Array = [4278190080, 4291939755, 4289568917, 4294967295]; _local23 = (_arg6) ? 1 : -1; mainGraphics.lineStyle(2, 0, 0.2); drawParallelepiped(new Point3D(((_arg1 * scale) + (-20 * _local23)), ((_arg2 * scale) + 52), (_arg3 * scale)), 30, 20, (40 * scale), 4294967295); render(); if (_local23 == -1){ drawParallelepiped(new Point3D(((_arg1 * scale) + 50), ((_arg2 * scale) + 52), (_arg3 * scale)), 0, 20, (40 * scale), 4294967295); }; render(); drawParallelepiped(new Point3D(((_arg1 * scale) + 0), ((_arg2 * scale) + 12), (_arg3 * scale)), 12, 4, (40 * scale), 4294967295); render(); var _local25:int; while (_local25 < _arg4) { _local24 = Math.random(); if (_local24 < _arg5){ _local19 = ((Math.random())>0.7) ? true : false; _local20 = ((Math.random())>0.7) ? true : false; _local21 = ((Math.random())<0.5) ? true : false; _local22 = ((Math.random())<0.5) ? true : false; _local16 = (((_arg1 + (Math.random() * 2)) - 1) * scale); _local17 = (_arg2 * scale); _local18 = ((((_arg3 + (Math.random() * 2)) - 1) + (((_arg4 / 2) * 4) * scale)) - ((_local25 * 4) * scale)); _local11 = _local7[Math.floor((Math.random() * _local7.length))]; _local12 = _local8[Math.floor((Math.random() * _local8.length))]; _local13 = _local9[Math.floor((Math.random() * _local9.length))]; _local14 = _local10[Math.floor((Math.random() * _local10.length))]; _local15 = _local10[Math.floor((Math.random() * _local10.length))]; drawParallelepiped(new Point3D((_local16 - (24 * _local23)), (_local17 + 32), (_local18 + 8)), 7, 5, 7, _local15); render(); drawParallelepiped(new Point3D((_local16 - (24 * _local23)), (_local17 + 32), (_local18 - 8)), 7, 5, 7, _local15); render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); if (_local19){ drawRotatedParallelepiped(new Point3D(_local16, (_local17 - 32), (_local18 + 16)), 6, 7, 7, ((-(Math.PI) / 4) * _local23), _local13); drawRotatedParallelepiped(new Point3D((_local16 - (13 * _local23)), (_local17 - 45), (_local18 + 16)), 4.5, 12, 5, ((-(Math.PI) / 4) * _local23), _local12); drawRotatedParallelepiped(new Point3D((_local16 - (26 * _local23)), (_local17 - 62), (_local18 + 16)), 4.5, 12, 5, ((-(Math.PI) / 6) * _local23), _local12); render(); if (_local21){ courtBG.draw(mainSprite); } else { courtBG2.draw(mainSprite); }; mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); drawRotatedParallelepiped(new Point3D(_local16, (_local17 - 32), (_local18 + 16)), 6, 7, 7, ((-(Math.PI) / 6) * _local23), _local13); drawRotatedParallelepiped(new Point3D((_local16 - (10 * _local23)), (_local17 - 48), (_local18 + 16)), 4.5, 12, 5, ((-(Math.PI) / 6) * _local23), _local12); drawRotatedParallelepiped(new Point3D((_local16 - (18 * _local23)), (_local17 - 66), (_local18 + 16)), 4.5, 12, 5, ((-(Math.PI) / 9) * _local23), _local12); render(); if (_local21){ courtBG2.draw(mainSprite); } else { courtBG.draw(mainSprite); }; mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); } else { drawRotatedParallelepiped(new Point3D(_local16, (_local17 - 32), (_local18 + 16)), 6, 7, 7, ((Math.PI / 6) * _local23), _local13); drawRotatedParallelepiped(new Point3D((_local16 - (9 * _local23)), (_local17 - 15), (_local18 + 16)), 4.5, 12, 5, ((Math.PI / 6) * _local23), _local12); drawRotatedParallelepiped(new Point3D((_local16 - (21 * _local23)), (_local17 - 4), (_local18 + 16)), 4.5, 12, 5, ((Math.PI / 3) * _local23), _local12); render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); }; if (Math.random() > 0.4){ drawParallelepiped(new Point3D((_local16 - (14 * _local23)), (_local17 + 5), (_local18 + 8)), 12, 6, 7, _local14); drawParallelepiped(new Point3D((_local16 - (22 * _local23)), (_local17 + 15), (_local18 + 8)), 6, 12, 7, _local14); render(); drawParallelepiped(new Point3D(_local16, (_local17 + 3), _local18), 9, 9, 14, _local14); drawParallelepiped(new Point3D((_local16 - (14 * _local23)), (_local17 + 5), (_local18 - 8)), 12, 6, 7, _local14); drawParallelepiped(new Point3D((_local16 - (22 * _local23)), (_local17 + 15), (_local18 - 8)), 6, 12, 7, _local14); } else { drawParallelepiped(new Point3D((_local16 - (9 * _local23)), (_local17 + 5), (_local18 + 8)), 7, 6, 7, _local14); drawParallelepiped(new Point3D((_local16 - (21 * _local23)), (_local17 + 5), (_local18 + 8)), 5, 5, 5, _local12); drawParallelepiped(new Point3D((_local16 - (22 * _local23)), (_local17 + 15), (_local18 + 8)), 5, 12, 5, _local12); render(); drawParallelepiped(new Point3D(_local16, (_local17 + 3), _local18), 9, 9, 14, _local14); drawParallelepiped(new Point3D((_local16 - (9 * _local23)), (_local17 + 5), (_local18 - 8)), 7, 6, 7, _local14); drawParallelepiped(new Point3D((_local16 - (21 * _local23)), (_local17 + 5), (_local18 - 8)), 5, 5, 5, _local12); drawParallelepiped(new Point3D((_local16 - (22 * _local23)), (_local17 + 15), (_local18 - 8)), 5, 12, 5, _local12); }; drawParallelepiped(new Point3D(_local16, (_local17 - 22), _local18), 9, 18, 14, _local13); drawParallelepiped(new Point3D(_local16, (_local17 - 48), _local18), 9, 7, 9, _local12); drawParallelepiped(new Point3D(_local16, (_local17 - 58), _local18), 9, 3, 9, _local11); render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); if (_local20){ drawRotatedParallelepiped(new Point3D(_local16, (_local17 - 32), (_local18 - 16)), 6, 7, 7, ((-(Math.PI) / 4) * _local23), _local13); drawRotatedParallelepiped(new Point3D((_local16 - (13 * _local23)), (_local17 - 45), (_local18 - 16)), 4.5, 12, 5, ((-(Math.PI) / 4) * _local23), _local12); drawRotatedParallelepiped(new Point3D((_local16 - (26 * _local23)), (_local17 - 62), (_local18 - 16)), 4.5, 12, 5, ((-(Math.PI) / 6) * _local23), _local12); render(); if (_local22){ courtBG.draw(mainSprite); } else { courtBG2.draw(mainSprite); }; mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); drawRotatedParallelepiped(new Point3D(_local16, (_local17 - 32), (_local18 - 16)), 6, 7, 7, ((-(Math.PI) / 6) * _local23), _local13); drawRotatedParallelepiped(new Point3D((_local16 - (10 * _local23)), (_local17 - 48), (_local18 - 16)), 4.5, 12, 5, ((-(Math.PI) / 6) * _local23), _local12); drawRotatedParallelepiped(new Point3D((_local16 - (18 * _local23)), (_local17 - 66), (_local18 - 16)), 4.5, 12, 5, ((-(Math.PI) / 9) * _local23), _local12); render(); if (_local22){ courtBG2.draw(mainSprite); } else { courtBG.draw(mainSprite); }; mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); } else { drawRotatedParallelepiped(new Point3D(_local16, (_local17 - 32), (_local18 - 16)), 6, 7, 7, ((Math.PI / 6) * _local23), _local13); drawRotatedParallelepiped(new Point3D((_local16 - (9 * _local23)), (_local17 - 15), (_local18 - 16)), 4.5, 12, 5, ((Math.PI / 6) * _local23), _local12); drawRotatedParallelepiped(new Point3D((_local16 - (21 * _local23)), (_local17 - 4), (_local18 - 16)), 4.5, 12, 5, ((Math.PI / 3) * _local23), _local12); render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); }; render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.4); }; _local25++; }; } private function shotListener(_arg1:MatchEvent):void{ effectList.append(strikeEffectFactory.createEffectToReturn(StrikeEffectFactory.SHOT, mp.tBall.pos, Point(_arg1.special))); } public function forceEasyMode():void{ easyMode = true; } protected function createBG(_arg1:Number=0.2):void{ courtBG = new BitmapData(600, 450, true, 4280921058); courtBG2 = new BitmapData(600, 450, true, 4280921058); drawSky(); drawDecorations(); drawBenches(_arg1); drawWalls(); drawField(); } private function drawSloMoEffect():void{ if (mp.timeMplier < 1){ if (slowMoAlpha < ((1 - mp.timeMplier) / 2)){ slowMoAlpha = (slowMoAlpha + 0.01); }; } else { if (slowMoAlpha > 0){ slowMoAlpha = (slowMoAlpha - 0.05); }; }; if (slowMoAlpha > 0){ mainGraphics.beginGradientFill(GradientType.LINEAR, [0, 0], [slowMoAlpha, 0], [0, 0xFF], slowMoMatrix, SpreadMethod.REFLECT); mainGraphics.drawRect(0, 0, 600, 450); mainGraphics.endFill(); }; } private function drawDecorations():void{ mainGraphics.lineStyle(2, 0, 0.2); drawRotatedParallelepiped(new Point3D(0, 225, 2000), 3000, 0, 3000, 0, 4293646000); drawParallelepiped(new Point3D(0, -450, 1220), 850, 25, 20, 4294967295); var _local1:int; while (_local1 < 9) { drawParallelepiped(new Point3D((-800 + (_local1 * 200)), -100, 1220), 20, 325, 20, 4294967295); _local1++; }; render(); drawParallelepiped(new Point3D(0, 150, 1220), 1000, 75, 20, 4294967295); render(); drawParallelepiped(new Point3D(550, 150, 630), 200, 75, 30, 4294967295); drawParallelepiped(new Point3D(510, -245, 630), 160, 20, 30, 4294967295); drawParallelepiped(new Point3D(350, -245, 630), 0, 20, 30, 4294967295); drawParallelepiped(new Point3D(510, -225, 630), 160, 0, 30, 4294967295); render(); _local1 = 0; while (_local1 < 3) { drawParallelepiped(new Point3D((390 + (_local1 * 120)), -75, 630), 20, 150, 20, 4294967295); drawParallelepiped(new Point3D((370 + (_local1 * 120)), -75, 630), 0, 150, 20, 4294967295); _local1++; }; render(); drawParallelepiped(new Point3D(-550, 150, 630), 200, 75, 30, 4294967295); drawParallelepiped(new Point3D(-510, -245, 630), 160, 20, 30, 4294967295); drawParallelepiped(new Point3D(-510, -225, 630), 160, 0, 30, 4294967295); render(); _local1 = 0; while (_local1 < 3) { drawParallelepiped(new Point3D((-390 - (_local1 * 120)), -75, 630), 20, 150, 20, 4294967295); _local1++; }; render(); drawParallelepiped(new Point3D(672, 100, 0), 30, 75, 600, 4294967295); drawParallelepiped(new Point3D(642, -400, 0), 0, 25, 598, 4294967295); drawParallelepiped(new Point3D(672, -375, 0), 30, 0, 600, 4294967295); drawParallelepiped(new Point3D(-672, 100, 0), 30, 75, 600, 4294967295); drawParallelepiped(new Point3D(-642, 100, 0), 0, 75, 600, 4294967295); drawParallelepiped(new Point3D(-642, -400, 0), 0, 25, 598, 4294967295); drawParallelepiped(new Point3D(-672, -375, 0), 30, 0, 600, 4294967295); render(); _local1 = 0; while (_local1 < 3) { drawParallelepiped(new Point3D(672, -175, (560 - (_local1 * 140))), 15, 200, 15, 4294967295); drawParallelepiped(new Point3D(657, -175, (560 - (_local1 * 140))), 0, 200, 15, 4294967295); drawParallelepiped(new Point3D(-672, -175, (560 - (_local1 * 140))), 15, 200, 15, 4294967295); drawParallelepiped(new Point3D(-657, -175, (560 - (_local1 * 140))), 0, 200, 15, 4294967295); _local1++; }; render(); courtBG.draw(mainSprite); courtBG2.draw(mainSprite); mainGraphics.clear(); } public function get messageOverlay():MessageOverlay{ return (_messageOverlay); } public function addToDisplayList():void{ TopLevel.graphicsLayer.addChild(outputBitmap); } override protected function kill():void{ super.kill(); mp = null; if (outputBitmap.parent){ TopLevel.graphicsLayer.removeChild(outputBitmap); }; _outputBitmap = null; outputBitmapData.dispose(); vectorContainer.graphics.clear(); vectorContainer = null; courtBG.dispose(); courtBG2.dispose(); strikeEffectFactory = null; effectList.clear(); effectList = null; currentEffect = null; slowMoMatrix = null; _messageOverlay.destroy(); _messageOverlay = null; } public function set pause(_arg1:Boolean):void{ _pause = _arg1; messageOverlay.pause = _arg1; } private function drawBenches(_arg1:Number):void{ drawBench(42, 6, 0, 20, _arg1, true); drawBench(38, 8, 0, 20, _arg1, true); drawBench(34, 10, 0, 20, _arg1, true); drawBench(30, 12, 0, 20, _arg1, true); drawBench(-42, 6, 0, 20, _arg1, false); drawBench(-38, 8, 0, 20, _arg1, false); drawBench(-34, 10, 0, 20, _arg1, false); drawBench(-30, 12, 0, 20, _arg1, false); } private function specialstrikeListener(_arg1:MatchEvent):void{ var _local2:IEffect = strikeEffectFactory.createEffectToReturn(StrikeEffectFactory.SPECIAL, mp.tBall.pos, Point(_arg1.special)); Effect(_local2).addEventListener(SFXEvent.SFX_UNPAUSE, sfxUnpauseListener, false, 0, true); effectList.append(_local2); dispatchEvent(new MatchEvent(MatchEvent.PAUSE_PHYSICS)); } } }//package game.match.graphics
Section 144
//MatchProjection (game.match.graphics.MatchProjection) package game.match.graphics { import flash.display.*; import Box2D.Dynamics.*; import game.match.physics.*; import game.descriptors.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import game.geom.*; public class MatchProjection extends Projection { private var localVertices:Array; private var currentDescriptor:BodyDescriptor; protected var colorsArray:Array; private var vertexCount:int; private var poly:b2PolygonShape; private var pos:Point3D; private var newPos:Point3D; private var shapeUserData:ShapeDescriptor; private var bodyUserData:BodyDescriptor; private var i:int; private var xf:b2XForm; private var currentShape:b2Shape; protected var shadowPosition:Number; private var vertices:Array; private var currentBody:b2Body; public function MatchProjection(_arg1:Sprite){ super(_arg1); colorsArray = new Array(); scale = 15; shadowPosition = 15; } public function renderWorld(_arg1:b2World, _arg2:Number):void{ currentBody = _arg1.GetBodyList(); while (currentBody) { if (currentBody.GetUserData()){ if (currentBody.GetUserData().type == "drawable"){ xf = currentBody.GetXForm(); currentShape = currentBody.GetShapeList(); while (currentShape) { if (currentShape.GetType() == 1){ poly = b2PolygonShape(currentShape); vertexCount = poly.GetVertexCount(); localVertices = poly.GetVertices(); vertices = new Array(4); i = 0; while (i < vertexCount) { vertices[i] = b2Math.b2MulX(xf, localVertices[i]); i++; }; drawExtrudedPolygon(vertices, vertexCount, _arg2, currentShape.GetUserData().halfThickness, colorsArray[currentShape.GetUserData().colorIndex]); drawRectangleShadow(vertices, vertexCount, shadowPosition, _arg2, currentShape.GetUserData().halfThickness, 3422552064); }; currentShape = currentShape.GetNext(); }; }; }; currentBody = currentBody.GetNext(); }; render(); } override protected function kill():void{ super.kill(); colorsArray = null; currentBody = null; currentShape = null; currentDescriptor = null; xf = null; pos = null; bodyUserData = null; shapeUserData = null; poly = null; while (localVertices.length > 0) { localVertices.pop(); }; localVertices = null; while (vertices.length > 0) { vertices.pop(); }; vertices = null; newPos = null; } public function drawBall(_arg1:TennisBall):void{ newPos = _arg1.pos.copy(); newPos = newPos.multiply(15); drawCircle(newPos, (15 * _arg1.radius), 4293852928); mainGraphics.lineStyle(1, 0xFFFFFF, 0); newPos.y = 225; drawCircleShadow(newPos, (_arg1.radius * 20), 3707764736); } } }//package game.match.graphics
Section 145
//Projection (game.match.graphics.Projection) package game.match.graphics { import flash.events.*; import flash.display.*; import game.geom.*; import flash.geom.*; public class Projection extends EventDispatcher { protected var z:Number; private var spriteScale:Number; protected var e:Point3D; protected var y:Number; protected var renderQueueMiddle:Array; private var faceN:int;// = -1 protected var alphaSplit:Number; protected var renderQueueMiddleLength:int; private var ellipseWidth:Number; protected var colorSplit:int; protected var renderQueueBack:Array; private var ellipseHeight:Number; protected var renderQueueBackLength:int; protected var flat3D:Boolean;// = false private var b0y:Number; private var b0x:Number; protected var poolCounter:int; protected var scale:int; protected var renderQueueFront:Array; protected var dezcz:Number; protected var renderQueueFrontLength:int; protected var mainSprite:Sprite; protected var a:Point3D; protected var c:Point3D; protected var d:Point3D; protected var b:Point; protected var mainGraphics:Graphics; private var iterator:int; protected var a0:Point3D; protected var a1:Point3D; protected var a2:Point3D; protected var a5:Point3D; protected var a6:Point3D; protected var polygonPool:Array; protected var x:Number; protected var a3:Point3D; protected var a4:Point3D; protected var a7:Point3D; public function Projection(_arg1:Sprite){ mainSprite = _arg1; mainGraphics = mainSprite.graphics; a = new Point3D(); a0 = new Point3D(); a1 = new Point3D(); a2 = new Point3D(); a3 = new Point3D(); a4 = new Point3D(); a5 = new Point3D(); a6 = new Point3D(); a7 = new Point3D(); c = new Point3D(); e = new Point3D(); d = new Point3D(); b = new Point(); renderQueueBack = new Array(); renderQueueMiddle = new Array(); renderQueueFront = new Array(); polygonPool = new Array(); var _local2:int; while (_local2 < 200) { polygonPool[_local2] = new Polygon(new Point3D(), new Point3D(), new Point3D(), new Point3D(), 0); _local2++; }; poolCounter = 0; } public function calculateScale(_arg1:Point3D):Number{ return ((dezcz / (e.z - _arg1.z))); } public function setScreen(_arg1:Point3D):void{ c.x = _arg1.x; c.y = _arg1.y; c.z = _arg1.z; dezcz = (e.z - c.z); } public function drawParallelepiped(_arg1:Point3D, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:uint=0):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; a0.x = (x - _arg2); a0.y = (y - _arg3); a0.z = (z - _arg4); a1.x = (x + _arg2); a1.y = (y - _arg3); a1.z = (z - _arg4); a2.x = (x + _arg2); a2.y = (y + _arg3); a2.z = (z - _arg4); a3.x = (x - _arg2); a3.y = (y + _arg3); a3.z = (z - _arg4); a4.copyValues(a0); a4.z = (z + _arg4); a5.copyValues(a1); a5.z = (z + _arg4); a6.copyValues(a2); a6.z = (z + _arg4); a7.copyValues(a3); a7.z = (z + _arg4); addPolyToRender(a4, a5, a6, a7, _arg5, 0); addPolyToRender(a2, a3, a7, a6, _arg5, 1); addPolyToRender(a1, a2, a6, a5, _arg5, 1); addPolyToRender(a3, a0, a4, a7, _arg5, 1); addPolyToRender(a0, a1, a5, a4, _arg5, 1); addPolyToRender(a0, a1, a2, a3, _arg5, 2); } public function drawRectangleShadow(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:uint=0):void{ a0.x = (Math.min(_arg1[0].x, _arg1[1].x, _arg1[2].x, _arg1[3].x) * scale); a1.x = (Math.max(_arg1[0].x, _arg1[1].x, _arg1[2].x, _arg1[3].x) * scale); a1.z = (a0.z = ((_arg4 - _arg5) * scale)); a2.x = a0.x; a3.x = a1.x; a3.z = (a2.z = ((_arg4 + _arg5) * scale)); a3.y = (a2.y = (a1.y = (a0.y = (_arg3 * scale)))); addPolyToRender(a0, a1, a3, a2, _arg6, 0); } public function drawCircleShadow(_arg1:Point3D, _arg2:Number, _arg3:uint=0):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; b.x = ((x * dezcz) / (e.z - z)); b.y = ((y * dezcz) / (e.z - z)); colorSplit = (_arg3 & 0xFFFFFF); alphaSplit = (((_arg3 >> 24) & 0xFF) / 0xFF); mainGraphics.beginFill(colorSplit, alphaSplit); ellipseWidth = ((((x + _arg2) * dezcz) / (e.z - z)) - b.x); ellipseHeight = (b.y - ((y * dezcz) / (e.z - (z + _arg2)))); mainGraphics.drawEllipse(((b.x + e.x) - ellipseWidth), ((b.y + e.y) - ellipseHeight), (ellipseWidth * 2), (ellipseHeight * 2)); mainGraphics.endFill(); } public function getProjectionCoordinates(_arg1:Point3D):Point{ return (new Point((((_arg1.x * dezcz) / (e.z - _arg1.z)) + e.x), (((_arg1.y * dezcz) / (e.z - _arg1.z)) + e.y))); } public function setScale(_arg1:int):void{ scale = _arg1; } public function drawDot(_arg1:Point3D):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; b.x = (((x * dezcz) / (e.z - z)) + e.x); b.y = (((y * dezcz) / (e.z - z)) + e.y); mainSprite.graphics.drawCircle(b.x, b.y, 1); } public function render():void{ iterator = 0; while (iterator < renderQueueBackLength) { renderPolygon(renderQueueBack[iterator++]); }; iterator = 0; while (iterator < renderQueueMiddleLength) { renderPolygon(renderQueueMiddle[iterator++]); }; iterator = 0; while (iterator < renderQueueFrontLength) { renderPolygon(renderQueueFront[iterator++]); }; poolCounter = 0; renderQueueBackLength = 0; renderQueueMiddleLength = 0; renderQueueFrontLength = 0; } public function addPolyToRender(_arg1:Point3D, _arg2:Point3D, _arg3:Point3D, _arg4:Point3D, _arg5:uint=0, _arg6:int=0):void{ polygonPool[poolCounter].setPoly(_arg1, _arg2, _arg3, _arg4, _arg5); if (_arg6 === 1){ var _local7 = renderQueueMiddleLength++; renderQueueMiddle[_local7] = polygonPool[poolCounter]; } else { if (_arg6 === 2){ _local7 = renderQueueFrontLength++; renderQueueFront[_local7] = polygonPool[poolCounter]; } else { _local7 = renderQueueBackLength++; renderQueueBack[_local7] = polygonPool[poolCounter]; }; }; poolCounter++; } public function lineStyle(_arg1:Number, _arg2:uint, _arg3:Number):void{ this.mainGraphics.lineStyle(_arg1, _arg2, _arg3); } public function setCamera(_arg1:Point3D):void{ e.x = _arg1.x; e.y = _arg1.y; e.z = _arg1.z; dezcz = (e.z - c.z); } public function drawCircle(_arg1:Point3D, _arg2:Number, _arg3:uint=0):void{ x = _arg1.x; y = _arg1.y; z = _arg1.z; b.x = ((x * dezcz) / (e.z - z)); b.y = ((y * dezcz) / (e.z - z)); colorSplit = (_arg3 & 0xFFFFFF); alphaSplit = (((_arg3 >> 24) & 0xFF) / 0xFF); mainGraphics.beginFill(colorSplit, alphaSplit); mainGraphics.drawCircle((b.x + e.x), (b.y + e.y), ((((x + _arg2) * dezcz) / (e.z - z)) - b.x)); mainGraphics.endFill(); } private function renderPolygon(_arg1:Polygon):void{ colorSplit = (_arg1.fill & 0xFFFFFF); alphaSplit = (((_arg1.fill >> 24) & 0xFF) / 0xFF); b0x = (((_arg1.a0.x * dezcz) / (e.z - _arg1.a0.z)) + e.x); b0y = (((_arg1.a0.y * dezcz) / (e.z - _arg1.a0.z)) + e.y); mainSprite.graphics.moveTo(b0x, b0y); mainSprite.graphics.beginFill(colorSplit, alphaSplit); b.x = (((_arg1.a1.x * dezcz) / (e.z - _arg1.a1.z)) + e.x); b.y = (((_arg1.a1.y * dezcz) / (e.z - _arg1.a1.z)) + e.y); mainSprite.graphics.lineTo(b.x, b.y); b.x = (((_arg1.a2.x * dezcz) / (e.z - _arg1.a2.z)) + e.x); b.y = (((_arg1.a2.y * dezcz) / (e.z - _arg1.a2.z)) + e.y); mainSprite.graphics.lineTo(b.x, b.y); b.x = (((_arg1.a3.x * dezcz) / (e.z - _arg1.a3.z)) + e.x); b.y = (((_arg1.a3.y * dezcz) / (e.z - _arg1.a3.z)) + e.y); mainSprite.graphics.lineTo(b.x, b.y); mainSprite.graphics.lineTo(b0x, b0y); mainSprite.graphics.endFill(); _arg1 = null; } public function positionSprite(_arg1:Point3D, _arg2:Number, _arg3:Sprite):void{ spriteScale = (dezcz / (e.z - _arg1.z)); _arg3.scaleX = spriteScale; _arg3.scaleY = spriteScale; _arg3.x = (((a0.x * dezcz) / (e.z - a0.z)) + e.x); _arg3.y = (((a0.y * dezcz) / (e.z - a0.z)) + e.y); _arg3.rotation = ((_arg2 * 180) / Math.PI); } public function drawLine(_arg1:Point3D, _arg2:Point3D):void{ b.x = (((_arg1.x * dezcz) / (e.z - _arg1.z)) + e.x); b.y = (((_arg1.y * dezcz) / (e.z - _arg1.z)) + e.y); mainSprite.graphics.moveTo(b.x, b.y); b.x = (((_arg2.x * dezcz) / (e.z - _arg2.z)) + e.x); b.y = (((_arg2.y * dezcz) / (e.z - _arg2.z)) + e.y); mainSprite.graphics.lineTo(b.x, b.y); } public function drawRotatedParallelepiped(_arg1:Point3D, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:uint=0):void{ z = _arg1.z; x = ((_arg2 * Math.cos(_arg5)) - (_arg3 * Math.sin(_arg5))); y = ((_arg2 * Math.sin(_arg5)) + (_arg3 * Math.cos(_arg5))); a0.x = (_arg1.x + x); a0.y = (_arg1.y + y); a0.z = (z - _arg4); a2.x = (_arg1.x - x); a2.y = (_arg1.y - y); a2.z = (z - _arg4); x = ((_arg2 * Math.cos(_arg5)) + (_arg3 * Math.sin(_arg5))); y = ((_arg2 * Math.sin(_arg5)) - (_arg3 * Math.cos(_arg5))); a1.x = (_arg1.x + x); a1.y = (_arg1.y + y); a1.z = (z - _arg4); a3.x = (_arg1.x - x); a3.y = (_arg1.y - y); a3.z = (z - _arg4); a4.copyValues(a0); a4.z = (z + _arg4); a5.copyValues(a1); a5.z = (z + _arg4); a6.copyValues(a2); a6.z = (z + _arg4); a7.copyValues(a3); a7.z = (z + _arg4); addPolyToRender(a4, a5, a6, a7, _arg6, 0); addPolyToRender(a0, a1, a5, a4, _arg6, 1); addPolyToRender(a1, a2, a6, a5, _arg6, 1); addPolyToRender(a2, a3, a7, a6, _arg6, 1); addPolyToRender(a3, a0, a4, a7, _arg6, 1); addPolyToRender(a0, a1, a2, a3, _arg6, 2); } protected function kill():void{ while (mainSprite.numChildren > 0) { mainSprite.removeChildAt(0); }; mainGraphics.clear(); mainGraphics = null; a = null; a0 = null; a1 = null; a2 = null; a3 = null; a4 = null; a5 = null; a6 = null; a7 = null; c = null; d = null; e = null; b = null; while (polygonPool.length > 0) { polygonPool.pop(); }; polygonPool = null; while (renderQueueBack.length > 0) { renderQueueBack.pop(); }; renderQueueBack = null; while (renderQueueMiddle.length > 0) { renderQueueMiddle.pop(); }; renderQueueMiddle = null; while (renderQueueFront.length > 0) { renderQueueFront.pop(); }; renderQueueFront = null; } public function drawExtrudedPolygon(_arg1:Array, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:uint=0):void{ a0.x = (_arg1[0].x * scale); a0.y = (_arg1[0].y * scale); a1.x = (_arg1[1].x * scale); a1.y = (_arg1[1].y * scale); a2.x = (_arg1[2].x * scale); a2.y = (_arg1[2].y * scale); a3.x = (_arg1[3].x * scale); a3.y = (_arg1[3].y * scale); a3.z = (a2.z = (a1.z = (a0.z = ((_arg3 - _arg4) * scale)))); a4.x = a0.x; a4.y = a0.y; a5.x = a1.x; a5.y = a1.y; a6.x = a2.x; a6.y = a2.y; a7.x = a3.x; a7.y = a3.y; a7.z = (a6.z = (a5.z = (a4.z = ((_arg3 + _arg4) * scale)))); if (!flat3D){ addPolyToRender(a4, a5, a6, a7, _arg5, 0); addPolyToRender(a1, a2, a6, a5, _arg5, 1); addPolyToRender(a3, a0, a4, a7, _arg5, 1); }; addPolyToRender(a0, a1, a2, a3, _arg5, 2); } } }//package game.match.graphics
Section 146
//TrainingGraphics (game.match.graphics.TrainingGraphics) package game.match.graphics { import game.match.physics.*; import game.match.graphics.messages.*; public class TrainingGraphics extends MatchGraphics { private var _statOverlay:StatOverlay; public function TrainingGraphics(_arg1:MatchPhysics, _arg2:Array){ super(_arg1); var _local3:int; while (_local3 < 7) { colorsArray[_local3] = _arg2[_local3]; _local3++; }; createBG(0); easyMode = true; _statOverlay = new StatOverlay(); } private function drawStatOverlay():void{ outputBitmapData.draw(_statOverlay); } override public function update():void{ outputBitmapData.lock(); drawBG(); draw3DObjects(); drawMessageOverlay(); drawStatOverlay(); outputBitmapData.unlock(); } public function get statOverlay():StatOverlay{ return (_statOverlay); } override protected function draw3DObjects():void{ mainGraphics.clear(); mainGraphics.lineStyle(1, 0, 0.7); drawBall(mp.tBall); drawEffects(); outputBitmapData.draw(vectorContainer); drawPlayerSide(); if ((mp.tBall.pos.z + 1) < mp.playerPositionZ){ mainGraphics.lineStyle(1, 0, 0.7); drawBall(mp.tBall); }; mainGraphics.lineStyle(1, 0, 0.4); outputBitmapData.draw(vectorContainer); mainGraphics.clear(); } } }//package game.match.graphics
Section 147
//AI (game.match.physics.AI) package game.match.physics { import Box2D.Common.Math.*; import game.geom.*; import flash.geom.*; public class AI { private var pressure:Number;// = 0 private var speedXY:Point; private var randomTargetSet:Boolean; private var _serve:Boolean; private var target:Point; private var exactTargetSet:Boolean; private var mp:CPUMatchPhysics; private var ragdoll:Ragdoll; private var frameRate:int; private var preTargetSet:Boolean; private var dS:Number; private var dT:int; private var tennisBall:TennisBall; private var defaultAiPower:int; private var aiPower:int; public function AI(_arg1:CPUMatchPhysics, _arg2:Ragdoll, _arg3:int, _arg4:TennisBall, _arg5:int){ this.mp = _arg1; this.ragdoll = _arg2; this.tennisBall = _arg4; this.defaultAiPower = _arg3; this.aiPower = defaultAiPower; this.frameRate = _arg5; speedXY = new Point(); target = new Point(); } public function destroy():void{ mp = null; ragdoll = null; tennisBall = null; target = null; } public function update():Point3D{ if (_serve){ target.x = tennisBall.pos.x; target.y = tennisBall.pos.y; if (!randomTargetSet){ dT = Math.ceil((Math.random() * aiPower)); randomTargetSet = true; }; } else { if (tennisBall.speed.z > 0){ randomTargetSet = false; dS = (40 - tennisBall.pos.z); dT = int(((dS / tennisBall.speed.z) * frameRate)); if (dS > aiPower){ if (!preTargetSet){ speedXY.x = tennisBall.speed.x; speedXY.y = tennisBall.speed.y; target.x = tennisBall.pos.x; target.y = tennisBall.pos.y; target = BallTrajectoryCalculator.calculateTrajectory(dT, target, speedXY, frameRate); target.x = (target.x + ((Math.random() * (40 - (aiPower / 2))) - ((40 - (aiPower / 2)) / 2))); target.y = (target.y + ((Math.random() * (30 - (aiPower / 2))) - ((30 - (aiPower / 2)) / 2))); preTargetSet = true; }; } else { if (!exactTargetSet){ if (dT > aiPower){ dT = ((aiPower * 2) - dT); } else { exactTargetSet = true; }; speedXY.x = tennisBall.speed.x; speedXY.y = tennisBall.speed.y; target.x = tennisBall.pos.x; target.y = tennisBall.pos.y; target = BallTrajectoryCalculator.calculateTrajectory(dT, target, speedXY, frameRate); }; }; } else { if (!randomTargetSet){ target.x = ((Math.random() * aiPower) - (aiPower / 2)); target.y = ((Math.random() * aiPower) - (aiPower / 2)); randomTargetSet = true; dT = 40; preTargetSet = false; exactTargetSet = false; }; }; }; var _local1:b2Vec2 = new b2Vec2(); if ((ragdoll.getRacketPosition().x + ((ragdoll.getRacketSpeedFromCenter().x * dT) / frameRate)) < target.x){ _local1.x = 1; }; if ((ragdoll.getRacketPosition().x + ((ragdoll.getRacketSpeedFromCenter().x * dT) / frameRate)) > target.x){ _local1.x = -1; }; if ((ragdoll.getRacketPosition().y + ((ragdoll.getRacketSpeedFromCenter().y * dT) / frameRate)) < target.y){ _local1.y = 1; }; if ((ragdoll.getRacketPosition().y + ((ragdoll.getRacketSpeedFromCenter().y * dT) / frameRate)) > target.y){ _local1.y = -1; }; mp.applyForceToCPU(_local1.x, _local1.y); return (new Point3D((target.x * 15), (target.y * 15), (40 * 15))); } public function set serve(_arg1:Boolean):void{ randomTargetSet = false; _serve = _arg1; } private function calculateTarget():void{ } private function randomizeAIPower(_arg1:Number):void{ var _local2:Number = ((((Math.random() - 0.5) * aiPower) * _arg1) / 100); aiPower = (aiPower + _local2); aiPower = Math.min(aiPower, (defaultAiPower * 2)); aiPower = Math.max(aiPower, (defaultAiPower / 2)); } public function updatePressure(_arg1:Number):void{ var _local2:Number = (Math.random() * 100); if (_local2 < _arg1){ randomizeAIPower(_arg1); }; } public function resetAI():void{ aiPower = defaultAiPower; } } }//package game.match.physics
Section 148
//BallTrajectoryCalculator (game.match.physics.BallTrajectoryCalculator) package game.match.physics { import game.geom.*; import flash.geom.*; public class BallTrajectoryCalculator { public function BallTrajectoryCalculator(_arg1:PrivateClass){ } public static function calculatePreciseTrajectory(_arg1:Point3D, _arg2:Point3D, _arg3:Number, _arg4:int):Point{ var _local5:Boolean; while (_arg1.z > _arg3) { _local5 = false; _arg1.x = (_arg1.x + (_arg2.x / _arg4)); if (_arg1.x > 20){ _arg1.x = (40 - _arg1.x); _arg2.x = (_arg2.x * -1); _local5 = true; }; if (_arg1.x < -20){ _arg1.x = (-40 - _arg1.x); _arg2.x = (_arg2.x * -1); _local5 = true; }; _arg2.y = (_arg2.y + (4 / _arg4)); _arg1.y = (_arg1.y + (_arg2.y / _arg4)); if (_arg1.y > 15){ _arg1.y = (30 - _arg1.y); _arg2.y = (_arg2.y * -1); _local5 = true; }; if (_arg1.y < -15){ _arg1.y = (-30 - _arg1.y); _arg2.y = (_arg2.y * -1); _local5 = true; }; _arg1.z = (_arg1.z + (_arg2.z / _arg4)); if (_local5){ _arg2.x = (_arg2.x * 0.85); _arg2.y = (_arg2.y * 0.85); _arg2.z = (_arg2.z * 0.98); }; if (Math.abs(_arg2.z) < 1){ break; }; }; var _local6:Point = new Point(_arg1.x, _arg1.y); return (_local6); } public static function calculateTrajectory(_arg1:Number, _arg2:Point, _arg3:Point, _arg4:int):Point{ var _local7:Boolean; var _local5:Point = new Point(_arg2.x, _arg2.y); var _local6:int; while (_local6 < _arg1) { _local7 = false; _local5.x = (_local5.x + (_arg3.x / _arg4)); if (_local5.x > 20){ _local5.x = (40 - _local5.x); _arg3.x = (_arg3.x * -1); _local7 = true; }; if (_local5.x < -20){ _local5.x = (-40 - _local5.x); _arg3.x = (_arg3.x * -1); _local7 = true; }; _arg3.y = (_arg3.y + 0.1); _local5.y = (_local5.y + (_arg3.y / _arg4)); if (_local5.y > 15){ _local5.y = (30 - _local5.y); _arg3.y = (_arg3.y * -1); _local7 = true; }; if (_local5.y < -15){ _local5.y = (-30 - _local5.y); _arg3.y = (_arg3.y * -1); _local7 = true; }; if (_local7){ _arg3.x = (_arg3.x * 0.85); _arg3.y = (_arg3.y * 0.85); }; _local6++; }; return (_local5); } } }//package game.match.physics class PrivateClass { private function PrivateClass(){ } }
Section 149
//CPUMatchPhysics (game.match.physics.CPUMatchPhysics) package game.match.physics { import game.events.*; import Box2D.Dynamics.*; import game.descriptors.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import game.geom.*; import flash.geom.*; public class CPUMatchPhysics extends MatchPhysics { protected var _cpuAI:AI; protected var cpuRagdoll:Ragdoll; public var cpuTarget:Point3D; private var _cpuPositionZ:Number; protected var cpuDescriptor:ActorDescriptor; public var cpuCourtSide:b2World; protected var cpuSideAABB:b2AABB; public function CPUMatchPhysics(_arg1:ActorDescriptor, _arg2:ActorDescriptor, _arg3:int){ super(_arg1, _arg3); this.cpuDescriptor = _arg2; setupBallCourt(); setupPlayerSide(); setupOpponentSide(); } override public function update():void{ timeMultiplier = 1; updatePlayerSide(); updateOpponentSide(); tennisBall.update((timeStep * timeMultiplier)); } private function checkOpponentServe():void{ if ((((tennisBall.pos.z > cpuDescriptor.courtControlRangeIn)) && ((tennisBall.speed.z == 0)))){ if (!ballSensorPresent){ ballSensor = cpuCourtSide.CreateBody(ballSensorBD); ballSensor.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_NON_DRAWABLE, "ball")); ballSensorShape = ballSensor.CreateShape(ballSensorDef); ballSensorShape.SetUserData(new ShapeDescriptor(0, 0, "ball")); ballSensorPresent = true; }; ballSensor.SetXForm(new b2Vec2(tennisBall.pos.x, tennisBall.pos.y), 0); if (strikeConfirmed){ dispatchEvent(new MatchEvent(MatchEvent.SERVE)); tennisBall.removeEventListener(BallEvent.FLOOR_REBOUND, floorReboundListener); _cpuAI.serve = false; strike = false; strikeConfirmed = false; ballSensorPresent = false; cpuCourtSide.DestroyBody(ballSensor); tennisBallPosition.x = tennisBall.pos.x; tennisBallPosition.y = tennisBall.pos.y; strikeSpeed = cpuRagdoll.getRacketSpeed(tennisBallPosition); tennisBall.speed.z = -(cpuDescriptor.servePower); tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); serve = false; _cpuAI.serve = false; }; }; } private function updateOpponentPosition():void{ _cpuPositionZ = tennisBall.pos.z; if (_cpuPositionZ < cpuDescriptor.courtControlRangeIn){ _cpuPositionZ = cpuDescriptor.courtControlRangeIn; }; if (_cpuPositionZ > cpuDescriptor.courtControlRangeOut){ _cpuPositionZ = cpuDescriptor.courtControlRangeOut; }; } public function get cpuPositionZ():Number{ return (_cpuPositionZ); } private function checkOpsideScore():void{ if ((((tennisBall.pos.z > cpuDescriptor.courtControlRangeOut)) && (ballSensorPresent))){ cpuCourtSide.DestroyBody(ballSensor); ballSensorPresent = false; dispatchEvent(new MatchEvent(MatchEvent.PLAYER_SCORES)); }; } public function applyForceToCPU(_arg1:Number, _arg2:Number):void{ cpuRagdoll.applyForce(new b2Vec2((_arg1 * cpuDescriptor.speed), (_arg2 * cpuDescriptor.speed))); } private function checkOpponentStrike():void{ var _local1:Point; if ((((((tennisBall.pos.z > cpuDescriptor.courtControlRangeIn)) && ((tennisBall.pos.z < cpuDescriptor.courtControlRangeOut)))) && ((tennisBall.speed.z > 0)))){ if (!ballSensorPresent){ ballSensor = cpuCourtSide.CreateBody(ballSensorBD); ballSensor.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_NON_DRAWABLE, "ball")); ballSensorShape = ballSensor.CreateShape(ballSensorDef); ballSensorShape.SetUserData(new ShapeDescriptor(0, 0, "ball")); ballSensorPresent = true; }; ballSensor.SetXForm(new b2Vec2(tennisBall.pos.x, tennisBall.pos.y), 0); if (strikeConfirmed){ strike = false; strikeConfirmed = false; ballSensorPresent = false; cpuCourtSide.DestroyBody(ballSensor); tennisBallPosition.x = tennisBall.pos.x; tennisBallPosition.y = tennisBall.pos.y; strikeSpeed = cpuRagdoll.getRacketSpeed(tennisBallPosition); if (strikeSpeed.Length() > cpuDescriptor.superDifficulty){ tennisBall.speed.z = (tennisBall.speed.z * -(cpuDescriptor.superPowerMultiplier)); if (tennisBall.speed.z > cpuDescriptor.superPowerMin){ tennisBall.speed.z = -(cpuDescriptor.superPowerMin); }; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); dispatchEvent(new MatchEvent(MatchEvent.SUPER, false, false, new Point(strikeSpeed.x, strikeSpeed.y))); } else { if (strikeSpeed.Length() > cpuDescriptor.specialDifficulty){ tennisBall.speed.z = (tennisBall.speed.z * -(cpuDescriptor.specialPowerMultiplier)); if (tennisBall.speed.z > cpuDescriptor.specialPowerMin){ tennisBall.speed.z = -(cpuDescriptor.specialPowerMin); }; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); dispatchEvent(new MatchEvent(MatchEvent.SPECIAL, false, false, new Point(strikeSpeed.x, strikeSpeed.y))); } else { if (tennisBall.speed.z < cpuDescriptor.servePower){ tennisBall.speed.z = -(cpuDescriptor.servePower); } else { if (tennisBall.speed.z > cpuDescriptor.shotPowerMaximum){ tennisBall.speed.z = (tennisBall.speed.z * -0.95); } else { tennisBall.speed.z = (tennisBall.speed.z * -(cpuDescriptor.shotPowerMultiplier)); }; }; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); _local1 = new Point(tennisBall.speed.x, tennisBall.speed.y); if (_local1.length > (cpuDescriptor.shotPowerMaximum / 2)){ _local1.normalize((cpuDescriptor.shotPowerMaximum / 2)); tennisBall.speed.x = _local1.x; tennisBall.speed.y = _local1.y; }; dispatchEvent(new MatchEvent(MatchEvent.SHOT, false, false, new Point(strikeSpeed.x, strikeSpeed.y))); if ((((Math.abs(tennisBall.speed.y) < 5)) && ((tennisBall.pos.y > 10)))){ if (strikeSpeed.y > 0){ tennisBall.speed.y = (cpuDescriptor.servePower / 2); } else { tennisBall.speed.y = (-(cpuDescriptor.servePower) / 2); }; }; }; }; }; }; } public function resetCPU(_arg1:Boolean=false):void{ cpuRagdoll.resetRagdoll(new b2Vec2(-10, 5)); if (_arg1){ _cpuAI.serve = true; _cpuPositionZ = 40; } else { _cpuPositionZ = cpuDescriptor.courtControlRangeIn; }; } override protected function kill():void{ super.kill(); _cpuAI.destroy(); _cpuAI = null; cpuCourtSide = null; cpuSideAABB = null; cpuRagdoll.killRagdoll(); cpuRagdoll = null; cpuTarget = null; } public function get cpuAI():AI{ return (_cpuAI); } protected function setupOpponentSide():void{ var _local5:b2Body; playerSideAABB = new b2AABB(); playerSideAABB.lowerBound.Set(-100, -100); playerSideAABB.upperBound.Set(100, 100); var _local1:b2Vec2 = new b2Vec2(0, 2); var _local2:Boolean; cpuCourtSide = new b2World(playerSideAABB, _local1, _local2); cpuCourtSide.SetContactListener(contactListener); var _local3:b2PolygonDef = new b2PolygonDef(); var _local4:b2BodyDef = new b2BodyDef(); _local4.position.Set(-25, 0); _local3.SetAsBox(5, 25); _local5 = cpuCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); _local4.position.Set(25, 0); _local5 = cpuCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); _local4.position.Set(0, -20); _local3.SetAsBox(25, 5); _local5 = cpuCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); _local4.position.Set(0, 20); _local5 = cpuCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); cpuRagdoll = new Ragdoll(cpuCourtSide, cpuDescriptor.weightMultiplier, false, 7); _cpuAI = new AI(this, cpuRagdoll, cpuDescriptor.aiPower, tennisBall, frameRate); } override protected function updateOpponentSide():void{ updateOpponentPosition(); if (collisionChecking){ checkOpsideScore(); if (serve){ checkOpponentServe(); } else { checkOpponentStrike(); }; }; cpuTarget = _cpuAI.update(); cpuRagdoll.updateLimbs(); ragdollMultiplier = (((timeMultiplier - 1) / 2) + 1); cpuCourtSide.Step((timeStep * ragdollMultiplier), 5, 5); } } }//package game.match.physics
Section 150
//MatchContactListener (game.match.physics.MatchContactListener) package game.match.physics { import Box2D.Dynamics.*; import Box2D.Collision.*; public class MatchContactListener extends b2ContactListener { private var mp:MatchPhysics; public function MatchContactListener(_arg1:MatchPhysics){ this.mp = _arg1; } override public function Add(_arg1:b2ContactPoint):void{ if (_arg1.shape1.GetUserData()){ if (_arg1.shape1.GetUserData().specialType == "ball"){ if (_arg1.shape2.GetUserData()){ if (_arg1.shape2.GetUserData().specialType == "racket"){ mp.reportContact(); }; }; }; if (_arg1.shape1.GetUserData().specialType == "racket"){ if (_arg1.shape2.GetUserData()){ if (_arg1.shape2.GetUserData().specialType == "ball"){ mp.reportContact(); }; }; }; }; } public function killListener():void{ mp = null; } } }//package game.match.physics
Section 151
//MatchPhysics (game.match.physics.MatchPhysics) package game.match.physics { import flash.events.*; import game.profile.*; import game.events.*; import Box2D.Dynamics.*; import game.descriptors.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import game.geom.*; import flash.geom.*; public class MatchPhysics extends EventDispatcher { private var courtWidth:Number; protected var ragdollMultiplier:Number; protected var ballSensorShape:b2Shape; protected var serve:Boolean; private var courtHeight:Number; protected var ballSensor:b2Body; protected var ballSensorBD:b2BodyDef; public var playerCourtSide:b2World; protected var rebound:Boolean; protected var ballSensorDef:b2CircleDef; protected var playerDescriptor:ActorDescriptor; protected var opr:Boolean; protected var collisionChecking:Boolean; protected var strikeSpeed:b2Vec2; protected var _playerPositionZ:Number; protected var timeStep:Number; protected var playerSideAABB:b2AABB; protected var strike:Boolean; protected var tennisBallPosition:b2Vec2; protected var strikeConfirmed:Boolean; private var courtLength:Number; protected var player:Ragdoll; protected var ballSensorPresent:Boolean; protected var frameRate:int; protected var timeMultiplier:Number; protected var tennisBall:TennisBall; protected var contactListener:MatchContactListener; public function MatchPhysics(_arg1:ActorDescriptor, _arg2:int=40){ this.frameRate = _arg2; timeStep = (1 / _arg2); this.playerDescriptor = _arg1; init(); } protected function updatePlayerSide():void{ updatePlayerPosition(); if (collisionChecking){ checkScore(); calculateSlowMo(); if (serve){ checkServe(); } else { checkStrike(); }; }; ragdollMultiplier = (((timeMultiplier - 1) / 4) + 1); player.updateLimbs(); playerCourtSide.Step((timeStep * ragdollMultiplier), 5, 5); } private function calculateSlowMo():void{ if ((((((tennisBall.pos.z < -(playerDescriptor.adrenalineStart))) && ((tennisBall.speed.z < 0)))) && ((tennisBall.pos.z > -(playerDescriptor.courtControlRangeOut))))){ timeMultiplier = (1 - (Math.sqrt((-(tBall.pos.z) - playerDescriptor.adrenalineStart)) * playerDescriptor.adrenalineBuildup)); if (timeMultiplier < playerDescriptor.adrenalineMax){ timeMultiplier = playerDescriptor.adrenalineMax; }; }; } private function checkScore():void{ if ((((tennisBall.pos.z < -(playerDescriptor.courtControlRangeOut))) && (ballSensorPresent))){ playerCourtSide.DestroyBody(ballSensor); ballSensorPresent = false; dispatchEvent(new MatchEvent(MatchEvent.OPPONENT_SCORES)); }; } public function get tBall():TennisBall{ return (tennisBall); } public function getLastStrikeSpeed():Number{ return (strikeSpeed.Length()); } public function destroy():void{ kill(); } public function init():void{ timeMultiplier = 1; ragdollMultiplier = 1; opr = false; strike = false; ballSensorPresent = false; tennisBallPosition = new b2Vec2(); contactListener = new MatchContactListener(this); collisionChecking = true; } public function startCollisionChecking():void{ collisionChecking = true; } public function resetPlayer(_arg1:Boolean=false):void{ player.resetRagdoll(new b2Vec2(10, 5)); if (_arg1){ _playerPositionZ = -40; } else { _playerPositionZ = -(playerDescriptor.courtControlRangeIn); }; } protected function setupPlayerSide():void{ var _local5:b2Body; playerSideAABB = new b2AABB(); playerSideAABB.lowerBound.Set(-100, -100); playerSideAABB.upperBound.Set(100, 100); var _local1:b2Vec2 = new b2Vec2(0, 2); var _local2:Boolean; playerCourtSide = new b2World(playerSideAABB, _local1, _local2); playerCourtSide.SetContactListener(contactListener); var _local3:b2PolygonDef = new b2PolygonDef(); var _local4:b2BodyDef = new b2BodyDef(); _local4.position.Set(-25, 0); _local3.SetAsBox(5, 25); _local5 = playerCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); _local4.position.Set(25, 0); _local5 = playerCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); _local4.position.Set(0, -20); _local3.SetAsBox(25, 5); _local5 = playerCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); _local4.position.Set(0, 20); _local5 = playerCourtSide.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); player = new Ragdoll(playerCourtSide, playerDescriptor.weightMultiplier, true, 0); } protected function updateOpponentSide():void{ throw (new Error("This function needs to be overridden.")); } public function stopCollisionChecking():void{ collisionChecking = false; } public function reportContact():void{ if (strike){ strikeConfirmed = true; }; strike = true; strikeConfirmed = true; } protected function setupBallCourt(_arg1:Number=40, _arg2:Number=30, _arg3:Number=80):void{ tennisBall = new TennisBall(new Point3D(10, 5, 0), new Point3D(10, -5, 60), 0.5, new Point3D(20, 15, 80), new Point3D(0.85, 0.85, 0.98)); ballSensorDef = new b2CircleDef(); ballSensorDef.radius = 0.5; ballSensorDef.isSensor = true; ballSensorBD = new b2BodyDef(); ballSensorBD.position.Set(0, 0); } public function update():void{ throw (new Error("This function needs to be overridden.")); } public function get timeMplier():Number{ return (timeMultiplier); } protected function floorReboundListener(_arg1:BallEvent):void{ dispatchEvent(new MatchEvent(MatchEvent.FAULT)); } protected function kill():void{ contactListener.killListener(); playerCourtSide = null; playerSideAABB = null; player.killRagdoll(); player = null; playerDescriptor = null; ballSensor = null; ballSensorBD = null; ballSensorDef = null; ballSensorShape = null; tennisBallPosition = null; strikeSpeed = null; tennisBall = null; } private function checkServe():void{ if ((((tennisBall.pos.z < -(playerDescriptor.courtControlRangeIn))) && ((tennisBall.speed.z == 0)))){ if (!ballSensorPresent){ ballSensor = playerCourtSide.CreateBody(ballSensorBD); ballSensor.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_NON_DRAWABLE, "ball")); ballSensorShape = ballSensor.CreateShape(ballSensorDef); ballSensorShape.SetUserData(new ShapeDescriptor(0, 0, "ball")); ballSensorPresent = true; }; ballSensor.SetXForm(new b2Vec2(tennisBall.pos.x, tennisBall.pos.y), 0); if (strikeConfirmed){ dispatchEvent(new MatchEvent(MatchEvent.SERVE)); tennisBall.removeEventListener(BallEvent.FLOOR_REBOUND, floorReboundListener); strike = false; strikeConfirmed = false; ballSensorPresent = false; playerCourtSide.DestroyBody(ballSensor); tennisBallPosition.x = tennisBall.pos.x; tennisBallPosition.y = tennisBall.pos.y; strikeSpeed = player.getRacketSpeed(tennisBallPosition); tennisBall.speed.z = playerDescriptor.servePower; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); serve = false; if ((((Math.abs(tennisBall.speed.y) < 5)) && ((tennisBall.pos.y > 10)))){ if (strikeSpeed.y > 0){ tennisBall.speed.y = (playerDescriptor.servePower / 2); } else { tennisBall.speed.y = (-(playerDescriptor.servePower) / 2); }; }; }; }; } private function updatePlayerPosition():void{ _playerPositionZ = tennisBall.pos.z; if (_playerPositionZ < -(playerDescriptor.courtControlRangeOut)){ _playerPositionZ = -(playerDescriptor.courtControlRangeOut); }; if (_playerPositionZ > -(playerDescriptor.courtControlRangeIn)){ _playerPositionZ = -(playerDescriptor.courtControlRangeIn); }; } public function resetBall(_arg1:Boolean=true):void{ if (ballSensorPresent){ ballSensor.GetWorld().DestroyBody(ballSensor); ballSensorPresent = false; }; strikeConfirmed = false; serve = true; if (_arg1){ tennisBall.pos = new Point3D(10, -2, -40); } else { tennisBall.pos = new Point3D(-10, -2, 40); }; tennisBall.speed = new Point3D(0, -5, 0); opr = false; tennisBall.addEventListener(BallEvent.FLOOR_REBOUND, floorReboundListener); } public function get playerPositionZ():Number{ return (_playerPositionZ); } public function applyForceToPlayer(_arg1:Number=0, _arg2:Number=0):void{ player.applyForce(new b2Vec2((_arg1 * playerDescriptor.speed), (_arg2 * playerDescriptor.speed))); } private function checkStrike():void{ var _local1:Number; var _local2:Point; if ((((((tennisBall.pos.z < (-(playerDescriptor.courtControlRangeIn) + 5))) && ((tennisBall.pos.z > -(playerDescriptor.courtControlRangeOut))))) && ((tennisBall.speed.z < 0)))){ if (!ballSensorPresent){ ballSensor = playerCourtSide.CreateBody(ballSensorBD); ballSensor.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_NON_DRAWABLE, "ball")); ballSensorShape = ballSensor.CreateShape(ballSensorDef); ballSensorShape.SetUserData(new ShapeDescriptor(0, 0, "ball")); ballSensorPresent = true; }; ballSensor.SetXForm(new b2Vec2(tennisBall.pos.x, tennisBall.pos.y), 0); if (strikeConfirmed){ strike = false; strikeConfirmed = false; ballSensorPresent = false; playerCourtSide.DestroyBody(ballSensor); tennisBallPosition.x = tennisBall.pos.x; tennisBallPosition.y = tennisBall.pos.y; strikeSpeed = player.getRacketSpeed(tennisBallPosition); _local1 = tennisBall.speed.z; if (strikeSpeed.Length() > playerDescriptor.superDifficulty){ tennisBall.speed.z = (tennisBall.speed.z * -(playerDescriptor.superPowerMultiplier)); if (tennisBall.speed.z < playerDescriptor.superPowerMin){ tennisBall.speed.z = playerDescriptor.superPowerMin; }; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); dispatchEvent(new MatchEvent(MatchEvent.SUPER, false, false, new Point(strikeSpeed.x, strikeSpeed.y))); } else { if (strikeSpeed.Length() > playerDescriptor.specialDifficulty){ tennisBall.speed.z = (tennisBall.speed.z * -(playerDescriptor.specialPowerMultiplier)); if (tennisBall.speed.z < playerDescriptor.specialPowerMin){ tennisBall.speed.z = playerDescriptor.specialPowerMin; }; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); dispatchEvent(new MatchEvent(MatchEvent.SPECIAL, false, false, new Point(strikeSpeed.x, strikeSpeed.y))); } else { tennisBall.speed.z = (tennisBall.speed.z * -1); if (tennisBall.speed.z < playerDescriptor.servePower){ tennisBall.speed.z = playerDescriptor.servePower; } else { if (tennisBall.speed.z > playerDescriptor.shotPowerMaximum){ tennisBall.speed.z = (tennisBall.speed.z * 0.95); } else { tennisBall.speed.z = (tennisBall.speed.z * playerDescriptor.shotPowerMultiplier); }; }; tennisBall.speed.x = (tennisBall.speed.x + strikeSpeed.x); tennisBall.speed.y = (tennisBall.speed.y + strikeSpeed.y); _local2 = new Point(tennisBall.speed.x, tennisBall.speed.y); if (_local2.length > (playerDescriptor.shotPowerMaximum / 2)){ _local2.normalize((playerDescriptor.shotPowerMaximum / 2)); tennisBall.speed.x = _local2.x; tennisBall.speed.y = _local2.y; }; dispatchEvent(new MatchEvent(MatchEvent.SHOT, false, false, new Point(strikeSpeed.x, strikeSpeed.y))); if ((((Math.abs(tennisBall.speed.y) < 5)) && ((tennisBall.pos.y > 10)))){ if (strikeSpeed.y > 0){ tennisBall.speed.y = (playerDescriptor.servePower / 2); } else { tennisBall.speed.y = (-(playerDescriptor.servePower) / 2); }; }; }; }; AchievementManager.getInstance().checkStrike(strikeSpeed.Length(), _local1, tennisBall.speed.z); }; }; } } }//package game.match.physics
Section 152
//Ragdoll (game.match.physics.Ragdoll) package game.match.physics { import Box2D.Dynamics.*; import game.descriptors.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; public class Ragdoll { private var torsoUpperArmRJoint:b2RevoluteJoint; protected var rightHanded:Boolean; protected var lowerArmL:b2Body; private var world:b2World; protected var lowerArmR:b2Body; protected var lowerLegL:b2Body; protected var lowerLegR:b2Body; private var upperLowerLegRJoint:b2RevoluteJoint; protected var upperArmL:b2Body; private var torsoUpperLegRJoint:b2RevoluteJoint; protected var upperArmR:b2Body; private var upperLowerArmLJoint:b2RevoluteJoint; protected var racket:b2Body; protected var upperLegL:b2Body; private var torsoUpperArmLJoint:b2RevoluteJoint; protected var upperLegR:b2Body; private var tPos:b2Vec2; private var headTorsoJoint:b2RevoluteJoint; protected var head:b2Body; private var armRacketJoint:b2RevoluteJoint; private var upperLowerLegLJoint:b2RevoluteJoint; protected var torso:b2Body; private var upperLowerArmRJoint:b2RevoluteJoint; private var torsoUpperLegLJoint:b2RevoluteJoint; public function Ragdoll(_arg1:b2World, _arg2:Number=1, _arg3:Boolean=true, _arg4:int=0){ var _local6:Number; var _local7:b2BodyDef; var _local9:b2PolygonDef; var _local10:b2RevoluteJointDef; var _local11:b2Shape; super(); this.world = _arg1; var _local5:Number = 0; _local6 = 0; var _local8:b2CircleDef = new b2CircleDef(); _local9 = new b2PolygonDef(); _local10 = new b2RevoluteJointDef(); this.rightHanded = _arg3; _local7 = new b2BodyDef(); _local7.position.Set(_local5, _local6); head = _arg1.CreateBody(_local7); _local9.density = (1.5 * _arg2); _local9.friction = 0.4; _local9.restitution = 0.3; _local9.vertexCount = 4; _local9.vertices[0].Set(-0.7, -0.3); _local9.vertices[1].Set(0.7, -0.3); _local9.vertices[2].Set(0.7, 0.7); _local9.vertices[3].Set(-0.7, 0.7); _local11 = head.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.7, (_arg4 + 1), "head")); _local9.vertices[0].Set(-0.7, -0.8); _local9.vertices[1].Set(0.7, -0.8); _local9.vertices[2].Set(0.7, -0.3); _local9.vertices[3].Set(-0.7, -0.3); _local11 = head.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.7, _arg4)); head.SetMassFromShapes(); head.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local7 = new b2BodyDef(); _local7.position.Set(_local5, (_local6 + 3)); torso = _arg1.CreateBody(_local7); _local9.density = (1.5 * _arg2); _local9.friction = 0.4; _local9.restitution = 0.3; _local9.vertexCount = 4; _local9.vertices[0].Set(-1, -2); _local9.vertices[1].Set(1, -2); _local9.vertices[2].Set(1, -1.2); _local9.vertices[3].Set(-1, -1.2); _local11 = torso.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.8, (_arg4 + 2))); _local9.vertices[0].Set(-1, -1.2); _local9.vertices[1].Set(1, -1.2); _local9.vertices[2].Set(1, -0.4); _local9.vertices[3].Set(-1, -0.4); _local11 = torso.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.8, (_arg4 + 3))); _local9.vertices[0].Set(-1, -0.4); _local9.vertices[1].Set(1, -0.4); _local9.vertices[2].Set(1, 1); _local9.vertices[3].Set(-1, 1); _local11 = torso.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.8, (_arg4 + 2))); _local9.vertices[0].Set(-1, 1); _local9.vertices[1].Set(1, 1); _local9.vertices[2].Set(1, 2); _local9.vertices[3].Set(-1, 2); _local11 = torso.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.8, (_arg4 + 4))); torso.SetMassFromShapes(); torso.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local9.density = (0.5 * _arg2); _local9.friction = 0.4; _local9.restitution = 0.1; _local9.vertexCount = 4; _local7 = new b2BodyDef(); _local7.position.Set((_local5 - 1.8), (_local6 + 1.2)); upperArmL = _arg1.CreateBody(_local7); _local9.vertices[0].Set(0.2, 0.4); _local9.vertices[1].Set(0.2, -0.4); _local9.vertices[2].Set(1, -0.4); _local9.vertices[3].Set(1, 0.4); _local11 = upperArmL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 2))); _local9.vertices[0].Set(-1, 0.3); _local9.vertices[1].Set(-1, -0.3); _local9.vertices[2].Set(0.2, -0.3); _local9.vertices[3].Set(0.2, 0.3); _local11 = upperArmL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); upperArmL.SetMassFromShapes(); upperArmL.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local7.position.Set((_local5 + 1.8), (_local6 + 1.2)); upperArmR = _arg1.CreateBody(_local7); _local9.vertices[0].Set(-1, 0.4); _local9.vertices[1].Set(-1, -0.4); _local9.vertices[2].Set(-0.2, -0.4); _local9.vertices[3].Set(-0.2, 0.4); _local11 = upperArmR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 2))); _local9.vertices[0].Set(-0.2, 0.3); _local9.vertices[1].Set(-0.2, -0.3); _local9.vertices[2].Set(1, -0.3); _local9.vertices[3].Set(1, 0.3); _local11 = upperArmR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); upperArmR.SetMassFromShapes(); upperArmR.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local9.SetAsBox(1, 0.3); _local9.density = (0.3 * _arg2); _local9.friction = 0.4; _local9.restitution = 0.1; _local7 = new b2BodyDef(); _local7.position.Set((_local5 - 3.5), (_local6 + 1.2)); lowerArmL = _arg1.CreateBody(_local7); _local11 = lowerArmL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); lowerArmL.SetMassFromShapes(); lowerArmL.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local7.position.Set((_local5 + 3.5), (_local6 + 1.2)); lowerArmR = _arg1.CreateBody(_local7); _local11 = lowerArmR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); lowerArmR.SetMassFromShapes(); lowerArmR.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local9.density = (0.5 * _arg2); _local9.friction = 0.4; _local9.restitution = 0.1; _local9.vertexCount = 4; _local7 = new b2BodyDef(); _local7.position.Set((_local5 - 0.6), (_local6 + 5.8)); upperLegL = _arg1.CreateBody(_local7); _local9.vertices[0].Set(-0.5, -1); _local9.vertices[1].Set(0.5, -1); _local9.vertices[2].Set(0.5, 0.4); _local9.vertices[3].Set(-0.5, 0.4); _local11 = upperLegL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.9, (_arg4 + 4))); _local9.vertices[0].Set(-0.4, 0.4); _local9.vertices[1].Set(0.4, 0.4); _local9.vertices[2].Set(0.4, 1); _local9.vertices[3].Set(-0.4, 1); _local11 = upperLegL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); upperLegL.SetMassFromShapes(); upperLegL.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local7.position.Set((_local5 + 0.6), (_local6 + 5.8)); upperLegR = _arg1.CreateBody(_local7); _local9.vertices[0].Set(-0.5, -1); _local9.vertices[1].Set(0.5, -1); _local9.vertices[2].Set(0.5, 0.4); _local9.vertices[3].Set(-0.5, 0.4); _local11 = upperLegR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.9, (_arg4 + 4))); _local9.vertices[0].Set(-0.4, 0.4); _local9.vertices[1].Set(0.4, 0.4); _local9.vertices[2].Set(0.4, 1); _local9.vertices[3].Set(-0.4, 1); _local11 = upperLegR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); upperLegR.SetMassFromShapes(); upperLegR.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local9.density = (0.3 * _arg2); _local9.friction = 0.4; _local9.restitution = 0.1; _local7 = new b2BodyDef(); _local9.vertexCount = 4; _local7.position.Set((_local5 - 0.6), (_local6 + 7.5)); lowerLegL = _arg1.CreateBody(_local7); _local9.vertices[0].Set(-0.4, -1); _local9.vertices[1].Set(0.4, -1); _local9.vertices[2].Set(0.4, 0.3); _local9.vertices[3].Set(-0.4, 0.3); _local11 = lowerLegL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); _local9.vertices[0].Set(-0.4, 0.3); _local9.vertices[1].Set(0.4, 0.3); _local9.vertices[2].Set(0.4, 1); _local9.vertices[3].Set(-0.4, 1); _local11 = lowerLegL.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.5, (_arg4 + 2))); lowerLegL.SetMassFromShapes(); lowerLegL.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local7.position.Set((_local5 + 0.6), (_local6 + 7.5)); lowerLegR = _arg1.CreateBody(_local7); _local9.vertices[0].Set(-0.4, -1); _local9.vertices[1].Set(0.4, -1); _local9.vertices[2].Set(0.4, 0.3); _local9.vertices[3].Set(-0.4, 0.3); _local11 = lowerLegR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.4, (_arg4 + 1))); _local9.vertices[0].Set(-0.4, 0.3); _local9.vertices[1].Set(0.4, 0.3); _local9.vertices[2].Set(0.4, 1); _local9.vertices[3].Set(-0.4, 1); _local11 = lowerLegR.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.5, (_arg4 + 2))); lowerLegR.SetMassFromShapes(); lowerLegR.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE)); _local7 = new b2BodyDef(); if (_arg3){ _local7.position.Set((_local5 + 6.5), (_local6 + 1.2)); } else { _local7.position.Set((_local5 - 6.5), (_local6 + 1.2)); }; racket = _arg1.CreateBody(_local7); _local9.SetAsBox(1.5, 1); _local9.density = (2 * _arg2); _local11 = racket.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.2, (_arg4 + 6), "racket")); _local9.vertexCount = 4; if (_arg3){ _local9.vertices[0].Set(-2.5, -0.3); _local9.vertices[1].Set(-1.5, -0.3); _local9.vertices[2].Set(-1.5, 0.3); _local9.vertices[3].Set(-2.5, 0.3); } else { _local9.vertices[0].Set(1.5, -0.3); _local9.vertices[1].Set(2.5, -0.3); _local9.vertices[2].Set(2.5, 0.3); _local9.vertices[3].Set(1.5, 0.3); }; _local11 = racket.CreateShape(_local9); _local11.SetUserData(new ShapeDescriptor(0.3, (_arg4 + 5))); racket.SetMassFromShapes(); racket.SetUserData(new BodyDescriptor(BodyDescriptor.BODY_TYPE_DRAWABLE, "racket")); _local10.enableLimit = true; _local10.maxMotorTorque = 30; _local10.motorSpeed = 0; _local10.enableMotor = true; _local10.lowerAngle = (-45 / (180 / Math.PI)); _local10.upperAngle = (45 / (180 / Math.PI)); _local10.Initialize(torso, head, new b2Vec2(_local5, (_local6 + 1))); headTorsoJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-50 / (180 / Math.PI)); _local10.upperAngle = (50 / (180 / Math.PI)); _local10.Initialize(torso, upperArmL, new b2Vec2((_local5 - 1), (_local6 + 1.2))); torsoUpperArmLJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-130 / (180 / Math.PI)); _local10.upperAngle = (85 / (180 / Math.PI)); _local10.Initialize(torso, upperArmR, new b2Vec2((_local5 + 1), (_local6 + 1.2))); torsoUpperArmRJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-130 / (180 / Math.PI)); _local10.upperAngle = (10 / (180 / Math.PI)); _local10.Initialize(upperArmL, lowerArmL, new b2Vec2((_local5 - 2.5), (_local6 + 1.2))); upperLowerArmLJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-10 / (180 / Math.PI)); _local10.upperAngle = (130 / (180 / Math.PI)); _local10.Initialize(upperArmR, lowerArmR, new b2Vec2((_local5 + 2.5), (_local6 + 1.2))); upperLowerArmRJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-25 / (180 / Math.PI)); _local10.upperAngle = (45 / (180 / Math.PI)); _local10.Initialize(torso, upperLegL, new b2Vec2((_local5 - 0.6), (_local6 + 5))); torsoUpperLegLJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-45 / (180 / Math.PI)); _local10.upperAngle = (25 / (180 / Math.PI)); _local10.Initialize(torso, upperLegR, new b2Vec2((_local5 + 0.6), (_local6 + 5))); torsoUpperLegRJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-25 / (180 / Math.PI)); _local10.upperAngle = (115 / (180 / Math.PI)); _local10.Initialize(upperLegL, lowerLegL, new b2Vec2((_local5 - 0.6), (_local6 + 6.8))); upperLowerLegLJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.lowerAngle = (-115 / (180 / Math.PI)); _local10.upperAngle = (25 / (180 / Math.PI)); _local10.Initialize(upperLegR, lowerLegR, new b2Vec2((_local5 + 0.6), (_local6 + 6.8))); upperLowerLegRJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); _local10.maxMotorTorque = 40; if (_arg3){ _local10.lowerAngle = (-90 / (180 / Math.PI)); _local10.upperAngle = (45 / (180 / Math.PI)); _local10.Initialize(lowerArmR, racket, new b2Vec2((_local5 + 4.4), (_local6 + 1.2))); } else { _local10.lowerAngle = (-45 / (180 / Math.PI)); _local10.upperAngle = (90 / (180 / Math.PI)); _local10.Initialize(lowerArmL, racket, new b2Vec2((_local5 - 4.4), (_local6 + 1.2))); }; armRacketJoint = (_arg1.CreateJoint(_local10) as b2RevoluteJoint); } public function updateLimbs():void{ headTorsoJoint.SetMotorSpeed((-(headTorsoJoint.GetJointAngle()) * 100)); if (Math.abs(headTorsoJoint.GetMotorSpeed()) < 10){ headTorsoJoint.SetMotorSpeed(0); }; torsoUpperArmLJoint.SetMotorSpeed(((-1 - torsoUpperArmLJoint.GetJointAngle()) * 100)); if (Math.abs(torsoUpperArmLJoint.GetMotorSpeed()) < 10){ torsoUpperArmLJoint.SetMotorSpeed(0); }; torsoUpperArmRJoint.SetMotorSpeed(((1 - torsoUpperArmRJoint.GetJointAngle()) * 100)); if (Math.abs(torsoUpperArmRJoint.GetMotorSpeed()) < 10){ torsoUpperArmRJoint.SetMotorSpeed(0); }; upperLowerArmLJoint.SetMotorSpeed((-(upperLowerArmLJoint.GetJointAngle()) * 100)); if (Math.abs(upperLowerArmLJoint.GetMotorSpeed()) < 10){ upperLowerArmLJoint.SetMotorSpeed(0); }; upperLowerArmRJoint.SetMotorSpeed((-(upperLowerArmRJoint.GetJointAngle()) * 100)); if (Math.abs(upperLowerArmRJoint.GetMotorSpeed()) < 10){ upperLowerArmRJoint.SetMotorSpeed(0); }; torsoUpperLegLJoint.SetMotorSpeed(((0.2 - torsoUpperLegLJoint.GetJointAngle()) * 100)); if (Math.abs(torsoUpperLegLJoint.GetMotorSpeed()) < 10){ torsoUpperLegLJoint.SetMotorSpeed(0); }; torsoUpperLegRJoint.SetMotorSpeed(((-0.2 - torsoUpperLegRJoint.GetJointAngle()) * 100)); if (Math.abs(torsoUpperLegRJoint.GetMotorSpeed()) < 10){ torsoUpperLegRJoint.SetMotorSpeed(0); }; upperLowerLegLJoint.SetMotorSpeed((-(upperLowerLegLJoint.GetJointAngle()) * 100)); if (Math.abs(upperLowerLegLJoint.GetMotorSpeed()) < 10){ upperLowerLegLJoint.SetMotorSpeed(0); }; upperLowerLegRJoint.SetMotorSpeed((-(upperLowerLegRJoint.GetJointAngle()) * 100)); if (Math.abs(upperLowerLegRJoint.GetMotorSpeed()) < 10){ upperLowerLegRJoint.SetMotorSpeed(0); }; if (rightHanded){ armRacketJoint.SetMotorSpeed(((-0.5 - armRacketJoint.GetJointAngle()) * 100)); } else { armRacketJoint.SetMotorSpeed(((0.5 - armRacketJoint.GetJointAngle()) * 100)); }; if (Math.abs(armRacketJoint.GetMotorSpeed()) < 10){ armRacketJoint.SetMotorSpeed(0); }; } public function resetRagdoll(_arg1:b2Vec2):void{ var _local2:b2Vec2 = new b2Vec2(); tPos = new b2Vec2(); tPos.Set(_arg1.x, _arg1.y); head.SetXForm(tPos, 0); head.SetAngularVelocity(0); head.SetLinearVelocity(_local2); tPos.Set(_arg1.x, (_arg1.y + 3)); torso.SetXForm(tPos, 0); torso.SetAngularVelocity(0); torso.SetLinearVelocity(_local2); tPos.Set((_arg1.x - 1.8), (_arg1.y + 1.2)); upperArmL.SetXForm(tPos, 0); upperArmL.SetAngularVelocity(0); upperArmL.SetLinearVelocity(_local2); tPos.Set((_arg1.x + 1.8), (_arg1.y + 1.2)); upperArmR.SetXForm(tPos, 0); upperArmR.SetAngularVelocity(0); upperArmR.SetLinearVelocity(_local2); tPos.Set((_arg1.x - 3.5), (_arg1.y + 1.2)); lowerArmL.SetXForm(tPos, 0); lowerArmL.SetAngularVelocity(0); lowerArmL.SetLinearVelocity(_local2); tPos.Set((_arg1.x + 3.5), (_arg1.y + 1.2)); lowerArmR.SetXForm(tPos, 0); lowerArmR.SetAngularVelocity(0); lowerArmR.SetLinearVelocity(_local2); tPos.Set((_arg1.x - 0.6), (_arg1.y + 5.8)); upperLegL.SetXForm(tPos, 0); upperLegL.SetAngularVelocity(0); upperLegL.SetLinearVelocity(_local2); tPos.Set((_arg1.x + 0.6), (_arg1.y + 5.8)); upperLegR.SetXForm(tPos, 0); upperLegR.SetAngularVelocity(0); upperLegR.SetLinearVelocity(_local2); tPos.Set((_arg1.x - 0.6), (_arg1.y + 7.5)); lowerLegL.SetXForm(tPos, 0); lowerLegL.SetAngularVelocity(0); lowerLegL.SetLinearVelocity(_local2); tPos.Set((_arg1.x + 0.6), (_arg1.y + 7.5)); lowerLegR.SetXForm(tPos, 0); lowerLegR.SetAngularVelocity(0); lowerLegR.SetLinearVelocity(_local2); if (rightHanded){ tPos.Set((_arg1.x + 6.5), (_arg1.y + 1.2)); } else { tPos.Set((_arg1.x - 6.5), (_arg1.y + 1.2)); }; racket.SetXForm(tPos, 0); racket.SetAngularVelocity(0); racket.SetLinearVelocity(_local2); } public function applyForce(_arg1:b2Vec2):void{ racket.ApplyForce(_arg1, racket.GetWorldCenter()); } public function killRagdoll():void{ world = null; head = null; torso = null; upperArmL = null; upperArmR = null; lowerArmL = null; lowerArmR = null; upperLegL = null; upperLegR = null; lowerLegL = null; lowerLegR = null; racket = null; headTorsoJoint = null; torsoUpperArmLJoint = null; torsoUpperArmRJoint = null; upperLowerArmLJoint = null; upperLowerArmRJoint = null; torsoUpperLegLJoint = null; torsoUpperLegRJoint = null; upperLowerLegLJoint = null; upperLowerLegRJoint = null; armRacketJoint = null; } public function getRacketPosition():b2Vec2{ return (racket.GetWorldCenter().Copy()); } public function getRacketSpeed(_arg1:b2Vec2):b2Vec2{ return (racket.GetLinearVelocityFromWorldPoint(_arg1)); } public function getRacketSpeedFromCenter():b2Vec2{ return (racket.GetLinearVelocity()); } } }//package game.match.physics
Section 153
//TennisBall (game.match.physics.TennisBall) package game.match.physics { import flash.events.*; import game.events.*; import game.geom.*; public class TennisBall extends EventDispatcher { private var rx:Number; public var speed:Point3D; private var rz:Number; private var czc:Boolean; private var cxc:Boolean; public var radius:Number; public var pos:Point3D; private var ry:Number; private var gravity:Number; private var rebound:Boolean; private var cyc:Boolean; private var cx:Number; private var cy:Number; private var cz:Number; public function TennisBall(_arg1:Point3D, _arg2:Point3D, _arg3:Number, _arg4:Point3D, _arg5:Point3D){ this.pos = new Point3D(_arg1.x, _arg1.y, _arg1.z); this.speed = new Point3D(_arg2.x, _arg2.y, _arg2.z); this.radius = _arg3; cx = _arg4.x; cxc = ((cx)==0) ? false : true; cy = _arg4.y; cyc = ((cy)==0) ? false : true; cz = _arg4.z; czc = ((cz)==0) ? false : true; rx = _arg5.x; ry = _arg5.y; rz = _arg5.z; gravity = 4; } public function update(_arg1:Number):void{ speed.y = (speed.y + (gravity * _arg1)); pos.x = (pos.x + (speed.x * _arg1)); pos.y = (pos.y + (speed.y * _arg1)); pos.z = (pos.z + (speed.z * _arg1)); rebound = false; if (cxc){ if (pos.x < (-(cx) + radius)){ speed.x = -(speed.x); pos.x = (-(cx) + radius); rebound = true; }; if (pos.x > (cx - radius)){ speed.x = -(speed.x); pos.x = (cx - radius); rebound = true; }; }; if (cyc){ if (pos.y < (-(cy) + radius)){ speed.y = -(speed.y); pos.y = (-(cy) + radius); rebound = true; }; if (pos.y > (cy - radius)){ speed.y = -(speed.y); pos.y = (cy - radius); rebound = true; dispatchEvent(new BallEvent(BallEvent.FLOOR_REBOUND)); }; }; if (czc){ if (pos.z < (-(cz) + radius)){ speed.z = (-(speed.z) * 0.2); speed.y = (speed.y * 0.2); speed.x = (speed.x * 0.2); pos.z = (-(cz) + radius); rebound = true; }; if (pos.z > (cz - radius)){ speed.z = (-(speed.z) * 0.2); speed.y = (speed.y * 0.2); speed.x = (speed.x * 0.2); pos.z = (cz - radius); rebound = true; }; }; if (rebound){ speed.x = (speed.x * rx); speed.y = (speed.y * ry); speed.z = (speed.z * rz); }; } } }//package game.match.physics
Section 154
//TrainingPhysics (game.match.physics.TrainingPhysics) package game.match.physics { import game.descriptors.*; import Box2D.Common.Math.*; public class TrainingPhysics extends MatchPhysics { public function TrainingPhysics(_arg1:ActorDescriptor){ super(_arg1); setupBallCourt(); setupPlayerSide(); resetBall(); strikeSpeed = new b2Vec2(); } override public function update():void{ timeMultiplier = 1; updatePlayerSide(); updateOpponentSide(); tBall.update((timeStep * timeMultiplier)); } override protected function updateOpponentSide():void{ if (tBall.pos.z > 40){ tBall.pos.z = 40; tBall.speed.z = (tBall.speed.z * -1); }; } } }//package game.match.physics
Section 155
//CPUMatch (game.match.CPUMatch) package game.match { import flash.events.*; import game.profile.*; import game.sound.*; import game.events.*; import com.gskinner.motion.*; import flash.text.*; import game.match.physics.*; import game.descriptors.*; import game.match.graphics.messages.*; import game.match.graphics.*; import game.match.graphics.intro.*; import caurina.transitions.*; public class CPUMatch extends Match { private var scoreOpponentString:String; private var scorePlayerString:String; private var currentGame:int; private var scoreOpponent:int;// = 0 private var scorePlayer:int;// = 0 private var soundManager:SoundManager; private var introManager:IntroManager; private var fault:Boolean; private var _pressure:Number; private var physicsTotalMedian:Number;// = 0 private var graphicsLastMedian:Number; private var opponentDescriptor:ActorDescriptor; private var tt:int; private var playerServe:Boolean; private var playerDescriptor:ActorDescriptor; private var physicsTime:Array; private var gamePointsPlayer:int;// = 0 private var scoreString:String; private var messageOverlay:MessageOverlay; private var matchScore:Array; private var cpuAI:AI; private var matchResult:MatchResult; private var aiField:TextField; private var nextFunction:Function; private var physicsLastMedian:Number; private var matchGraphics:CPUMatchGraphics; private var gamePointsOpponent:int;// = 0 private var graphicsTime:Array; private var graphicsTotalMedian:Number;// = 0 private var _flawlessVictory:Boolean; public function CPUMatch(_arg1:ActorDescriptor, _arg2:ActorDescriptor){ physicsTime = new Array(); graphicsTime = new Array(); super(); this.playerDescriptor = _arg1; this.opponentDescriptor = _arg2; introManager = new IntroManager(_arg1, _arg2); matchPhysics = new CPUMatchPhysics(_arg1, _arg2, frameRate); cpuAI = CPUMatchPhysics(matchPhysics).cpuAI; matchGraphics = new CPUMatchGraphics(matchPhysics, _arg1.colors, _arg2.colors, ((_arg2.aiPower - 10) / 22)); matchScore = new Array(); messageOverlay = matchGraphics.messageOverlay; preMatchRoutine(); } override protected function togglePause():void{ super.togglePause(); matchGraphics.pause = pause; } override protected function startMatch(_arg1:Event=null):void{ super.startMatch(); pressure = 0; _flawlessVictory = true; super.addPauseListener(); introManager.removeEventListener(Event.COMPLETE, startMatch); if (!ProfileController.getInstance().profile.tournament[0]){ messageOverlay.addInstructions(); }; if (playerServe){ messageOverlay.addTextMessage((playerDescriptor.name + " is serving!")); } else { messageOverlay.addTextMessage((opponentDescriptor.name + " is serving!")); }; nextFunction = nextServe; messageOverlay.addEventListener(MessageEvent.QUEUE_EMPTY, emptyQueueListener); messageOverlay.playMessages(); } override protected function preMatchRoutine():void{ soundManager = SoundManager.getInstance(); playerServe = true; physicsPause = true; matchPhysics.resetPlayer(playerServe); CPUMatchPhysics(matchPhysics).resetCPU(!(playerServe)); matchPhysics.resetBall(playerServe); matchPhysics.update(); matchGraphics.update(); introManager.addEventListener(Event.INIT, prepareGraphics); introManager.addEventListener(Event.COMPLETE, startMatch); introManager.startIntro(); matchResult = new MatchResult(); matchResult.easyMode = ProfileController.getInstance().profile.easyMode; if ((((opponentDescriptor.tournamentLevel == 1)) && (!(ProfileController.getInstance().profile.tournament[1])))){ matchResult.easyMode = false; matchGraphics.forceEasyMode(); }; matchResult.playerWon = false; matchResult.tournamentLevel = opponentDescriptor.tournamentLevel; matchResult.tournamentNum = opponentDescriptor.tournamentNum; } private function unpausePhysics():void{ physicsPause = false; } private function pauseRequestListener(_arg1:MatchEvent):void{ if (_arg1.type == MatchEvent.PAUSE_PHYSICS){ physicsPause = true; } else { physicsPause = false; }; } private function playRacketSound():void{ var _local1:int = Math.floor((Math.random() * 2)); if (_local1 == 0){ soundManager.playSound(SFXLibrary.SFX_RACKET1); }; if (_local1 == 1){ soundManager.playSound(SFXLibrary.SFX_RACKET2); }; } private function emptyQueueListener(_arg1:MessageEvent):void{ nextFunction(); } public function set pressure(_arg1:Number):void{ _pressure = _arg1; _pressure = Math.min(100, _pressure); cpuAI.updatePressure(_pressure); soundManager.updatePressure(_arg1); updateAI(); } override protected function createFrameTimeTracker():void{ super.createFrameTimeTracker(); aiField = new TextField(); aiField.textColor = 0xFFFFFF; aiField.y = 25; fpsTracker.addChild(aiField); } private function updateAI():void{ } private function prepareGraphics(_arg1:Event):void{ introManager.removeEventListener(Event.INIT, prepareGraphics); matchGraphics.addToDisplayList(); soundManager.playSound(SFXLibrary.SFX_LONG_CHEER1); pressure = 0; soundManager.startCrowd(); } private function opponentScoresListener(_arg1:MatchEvent):void{ _flawlessVictory = false; soundManager.playCheer(((pressure * 2) + 20)); messageOverlay.addTextMessage((opponentDescriptor.name + " scores!")); scoreOpponent++; updateScores(); } private function playerScoresListener(_arg1:MatchEvent):void{ soundManager.playCheer(((pressure * 2) + 30)); messageOverlay.addTextMessage((playerDescriptor.name + " scores!")); scorePlayer++; updateScores(); } override protected function updatePhysics():void{ matchResult.matchTime = (matchResult.matchTime + (1 / frameRate)); matchPhysics.update(); } public function getResults():MatchResult{ return (matchResult); } private function superstrikeListener(_arg1:MatchEvent):void{ matchResult.shots++; matchResult.superStrikes++; soundManager.playSound(SFXLibrary.SFX_REVERSE_EXPLOSION); soundManager.playSound(SFXLibrary.SFX_EXPLOSION, 3); pressure = (pressure + 20); soundManager.playCheer(((pressure * 4) + 40), 3); soundManager.stopCrowd(); soundManager.startCrowd(3); } public function get pressure():Number{ return (_pressure); } private function updateScores():void{ matchPhysics.removeEventListener(MatchEvent.PLAYER_SCORES, playerScoresListener); matchPhysics.removeEventListener(MatchEvent.OPPONENT_SCORES, opponentScoresListener); matchPhysics.removeEventListener(MatchEvent.FAULT, faultListener); matchPhysics.stopCollisionChecking(); var _local1:Boolean; var _local2:Boolean; if ((((scorePlayer > 3)) && ((scorePlayer > (scoreOpponent + 1))))){ soundManager.playSound(SFXLibrary.SFX_LONG_CHEER1); matchScore[currentGame] = true; gamePointsPlayer++; nextFunction = nextSet; } else { if ((((scoreOpponent > 3)) && ((scoreOpponent > (scorePlayer + 1))))){ soundManager.playSound(SFXLibrary.SFX_LONG_CHEER1); matchScore[currentGame] = false; gamePointsOpponent++; nextFunction = nextSet; } else { if ((((scorePlayer >= 3)) && ((scorePlayer == scoreOpponent)))){ pressure = 40; scoreString = "Deuce"; nextFunction = nextServe; scorePlayer = (scoreOpponent = 3); messageOverlay.addTextMessage(scoreString); nextFunction = nextServe; } else { if ((((scorePlayer > 3)) && ((scoreOpponent == 3)))){ _local1 = true; nextFunction = nextServe; scorePlayerString = "Adv"; scoreOpponentString = "40"; scoreString = ((scorePlayerString + "/") + scoreOpponentString); messageOverlay.addTextMessage(scoreString); nextFunction = nextServe; } else { if ((((scoreOpponent > 3)) && ((scorePlayer == 3)))){ pressure = 60; _local2 = true; nextFunction = nextServe; scoreOpponentString = "Adv"; scorePlayerString = "40"; scoreString = ((scorePlayerString + "/") + scoreOpponentString); messageOverlay.addTextMessage(scoreString); nextFunction = nextServe; } else { if (scorePlayer == 0){ scorePlayerString = " 0"; pressure = 10; } else { if (scorePlayer < 3){ pressure = 20; scorePlayerString = String((scorePlayer * 15)); } else { if ((((scorePlayer == 3)) && ((scoreOpponent < 3)))){ scorePlayerString = String(40); _local1 = true; }; }; }; if (scoreOpponent == 0){ pressure = 0; scoreOpponentString = "0 "; } else { if (scoreOpponent < 3){ pressure = 10; scoreOpponentString = String((scoreOpponent * 15)); } else { if ((((scoreOpponent == 3)) && ((scorePlayer < 3)))){ scoreOpponentString = String(40); _local2 = true; }; }; }; scoreString = ((scorePlayerString + "/") + scoreOpponentString); messageOverlay.addTextMessage(scoreString); nextFunction = nextServe; }; }; }; }; }; if (_local1){ if (gamePointsPlayer > 0){ messageOverlay.addTextMessage("Match point"); pressure = 80; } else { messageOverlay.addTextMessage("Game point"); pressure = 50; }; }; if (_local2){ if (gamePointsOpponent > 0){ messageOverlay.addTextMessage("Match point"); pressure = 95; } else { messageOverlay.addTextMessage("Game point"); pressure = 60; }; }; messageOverlay.playMessages(); } private function shotListener(_arg1:MatchEvent):void{ matchResult.shots++; playRacketSound(); pressure = (pressure + 4); soundManager.playCheer((pressure - 10)); } private function nextServe():void{ physicsPause = true; matchPhysics.resetPlayer(playerServe); CPUMatchPhysics(matchPhysics).resetCPU(!(playerServe)); matchPhysics.addEventListener(MatchEvent.PLAYER_SCORES, playerScoresListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.OPPONENT_SCORES, opponentScoresListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SHOT, shotListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SERVE, serveListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SUPER, superstrikeListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SPECIAL, specialstrikeListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.FAULT, faultListener, false, 0, true); matchGraphics.addEventListener(MatchEvent.PAUSE_PHYSICS, pauseRequestListener, false, 0, true); matchGraphics.addEventListener(MatchEvent.UNPAUSE_PHYSICS, pauseRequestListener, false, 0, true); matchPhysics.resetBall(playerServe); nextFunction = unpausePhysics; messageOverlay.playMessages(); matchPhysics.startCollisionChecking(); } private function serveListener(_arg1:MatchEvent):void{ playRacketSound(); fault = false; } override protected function kill():void{ super.kill(); soundManager.stopCrowd(); matchPhysics.removeEventListener(MatchEvent.PLAYER_SCORES, playerScoresListener); matchPhysics.removeEventListener(MatchEvent.OPPONENT_SCORES, opponentScoresListener); matchPhysics.removeEventListener(MatchEvent.SERVE, serveListener); matchPhysics.removeEventListener(MatchEvent.SHOT, shotListener); matchPhysics.removeEventListener(MatchEvent.SUPER, superstrikeListener); matchPhysics.removeEventListener(MatchEvent.SPECIAL, specialstrikeListener); matchPhysics.removeEventListener(MatchEvent.FAULT, faultListener); matchGraphics.removeEventListener(MatchEvent.PAUSE_PHYSICS, pauseRequestListener); matchGraphics.removeEventListener(MatchEvent.UNPAUSE_PHYSICS, pauseRequestListener); messageOverlay.removeEventListener(MessageEvent.QUEUE_EMPTY, emptyQueueListener); playerDescriptor = null; opponentDescriptor = null; matchPhysics.destroy(); matchPhysics = null; matchGraphics.destroy(); matchGraphics = null; messageOverlay = null; soundManager = null; } private function nextSet():void{ cpuAI.resetAI(); currentGame++; messageOverlay.addMatchScore(playerDescriptor.name, opponentDescriptor.name, matchScore, currentGame); if (gamePointsPlayer > 1){ messageOverlay.addTextMessage(String((playerDescriptor.name + "\n has won the match!"))); if (((!(ProfileController.getInstance().profile.tournament[1])) && ((opponentDescriptor.tournamentNum == 1)))){ messageOverlay.addTCOffText(); }; nextFunction = finishMatch; matchResult.playerWon = true; soundManager.stopCrowd(); soundManager.playSound(SFXLibrary.SFX_LONG_CHEER2); } else { if (gamePointsOpponent > 1){ messageOverlay.addTextMessage(String((opponentDescriptor.name + "\n has won the match!"))); nextFunction = finishMatch; soundManager.stopCrowd(); } else { scorePlayer = 0; scoreOpponent = 0; playerServe = !(playerServe); if (playerServe){ messageOverlay.addTextMessage((playerDescriptor.name + " is serving!")); } else { messageOverlay.addTextMessage((opponentDescriptor.name + " is serving!")); }; nextFunction = nextServe; }; }; pressure = 0; messageOverlay.playMessages(); } private function finishTweenListener(_arg1:Event):void{ kill(); } override protected function updateGraphics():void{ matchGraphics.update(); } private function faultListener(_arg1:MatchEvent):void{ if (fault){ if (playerServe){ messageOverlay.addTextMessage((playerDescriptor.name + " fails the serve!")); scoreOpponent++; updateScores(); } else { messageOverlay.addTextMessage((opponentDescriptor.name + " fails the serve!")); scorePlayer++; updateScores(); }; } else { messageOverlay.addTextMessage("Fault!"); messageOverlay.playMessages(); fault = true; matchPhysics.removeEventListener(MatchEvent.FAULT, faultListener); matchPhysics.stopCollisionChecking(); nextFunction = nextServe; }; } private function finishMatch():void{ var _local1:GTween = new GTween(matchGraphics.outputBitmap, 1, {y:450}, {ease:Equations.easeInCubic}); _local1.addEventListener(Event.COMPLETE, finishTweenListener); pause = true; AchievementManager.getInstance().checkFlawless(_flawlessVictory); } private function specialstrikeListener(_arg1:MatchEvent):void{ matchResult.shots++; matchResult.specialStrikes++; soundManager.playSound(SFXLibrary.SFX_RACKET2, 0.1); soundManager.playSound(SFXLibrary.SFX_SLASH); pressure = (pressure + 10); soundManager.playCheer((pressure * 2)); } } }//package game.match
Section 156
//Match (game.match.Match) package game.match { import flash.events.*; import game.profile.*; import game.ui.*; import flash.display.*; import game.events.*; import flash.text.*; import game.match.physics.*; import game.match.graphics.messages.*; import flash.utils.*; import com.senocular.*; import flash.system.*; public class Match extends EventDispatcher { private var _beforeTime:int;// = 0 private var wog:Boolean; private var graphicsAverageField:TextField; private var _excess:int;// = 0 private var timestamp:int; protected var fpsTracker:Sprite; private var physicsTimes:Array; protected var matchPhysics:MatchPhysics; private var _sleepTime:int;// = 0 private var _afterTime:int;// = 0 private var physicsAverageField:TextField; private var _timeDiff:int;// = 0 private var avg:Number; private var _overSleepTime:int;// = 0 private var _period:Number; private var _frameskipWatch:Boolean; private var _performanceWarning:PerformanceWarning; protected var frameRate:int;// = 40 protected var physicsPause:Boolean; private var gameTimer:Timer; private var pauseMenu:PauseMenu; protected var pause:Boolean; private var graphicsTimes:Array; private var _frameskip:int;// = 0 public function Match(){ _period = (1000 / frameRate); super(); if (ProfileController.getInstance().profile.lowFPS){ frameRate = 25; _period = (1000 / frameRate); } else { frameRate = 40; _period = (1000 / frameRate); }; gameTimer = new Timer(_period, 1); gameTimer.addEventListener(TimerEvent.TIMER, gameLoop); gameTimer.start(); createFrameTimeTracker(); pauseMenu = (MenuFactory.getInstance().createPauseMenu() as PauseMenu); TopLevel.overlayLayer.addChild(pauseMenu); pauseMenu.visible = false; } protected function preMatchRoutine():void{ } protected function startMatch(_arg1:Event=null):void{ _frameskip = 0; if (!ProfileController.getInstance().profile.performanceWarningShown){ _frameskipWatch = true; }; } protected function togglePause():void{ pause = !(pause); if (pause){ pauseMenu.visible = true; pauseMenu.addEventListener(UIEvent.BUTTON_CLICK, pauseMenuListener); _frameskipWatch = false; } else { pauseMenu.visible = false; pauseMenu.removeEventListener(UIEvent.BUTTON_CLICK, pauseMenuListener); if (_performanceWarning){ TopLevel.overlayLayer.removeChild(_performanceWarning); _performanceWarning = null; }; }; } private function keyDownListener(_arg1:KeyboardEvent):void{ if ((((_arg1.keyCode == 80)) || ((_arg1.keyCode == 27)))){ togglePause(); }; } protected function scanKeys():void{ if (((Key.isDown(37)) || (Key.isDown(65)))){ matchPhysics.applyForceToPlayer(-1, 0); }; if (((Key.isDown(38)) || (Key.isDown(87)))){ matchPhysics.applyForceToPlayer(0, -1); }; if (((Key.isDown(39)) || (Key.isDown(68)))){ matchPhysics.applyForceToPlayer(1, 0); }; if (((Key.isDown(40)) || (Key.isDown(83)))){ matchPhysics.applyForceToPlayer(0, 1); }; } protected function createFrameTimeTracker():void{ fpsTracker = new Sprite(); fpsTracker.graphics.beginFill(0, 0.8); fpsTracker.graphics.drawRect(0, 0, 100, 60); fpsTracker.graphics.endFill(); physicsAverageField = new TextField(); physicsAverageField.textColor = 4294967295; physicsAverageField.y = -5; fpsTracker.addChild(physicsAverageField); graphicsAverageField = new TextField(); graphicsAverageField.textColor = 4294967295; graphicsAverageField.y = 10; fpsTracker.addChild(graphicsAverageField); physicsTimes = new Array(); graphicsTimes = new Array(); } private function loopFunction(_arg1:TimerEvent, _arg2:Boolean=false):void{ if (!pause){ if (!physicsPause){ scanKeys(); updatePhysics(); }; if (!_arg2){ updateGraphics(); _arg1.updateAfterEvent(); _frameskip = (_frameskip - ((_frameskip)>0) ? 1 : 0); } else { _frameskip = (_frameskip + 40); }; }; if (_frameskipWatch){ if (_frameskip > 200){ showPerformanceWarning(); }; }; } private function updatePhysicsTime(_arg1:int):void{ var _local2:int; if (physicsTimes.push(_arg1) > 39){ avg = 0; _local2 = 0; while (_local2 < 40) { avg = (avg + physicsTimes[_local2]); _local2++; }; avg = (avg * 0.025); avg = (Math.round((avg * 100)) / 100); physicsAverageField.text = ("Mem:" + (Math.round((((System.totalMemory * 100) / 0x0400) / 0x0400)) / 100)); physicsTimes.length = 0; }; } protected function addPauseListener():void{ TopLevel.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); } private function gameLoop(_arg1:TimerEvent):void{ _beforeTime = getTimer(); _overSleepTime = ((_beforeTime - _afterTime) - _sleepTime); loopFunction(_arg1); _afterTime = getTimer(); _timeDiff = (_afterTime - _beforeTime); _sleepTime = ((_period - _timeDiff) - _overSleepTime); if (_sleepTime <= 0){ _excess = (_excess - _sleepTime); _sleepTime = 1; }; gameTimer.reset(); gameTimer.delay = _sleepTime; gameTimer.start(); while (_excess > _period) { loopFunction(_arg1, true); _excess = (_excess - _period); }; } private function showPerformanceWarning():void{ ProfileController.getInstance().profile.performanceWarningShown = true; _frameskipWatch = false; togglePause(); _performanceWarning = new PerformanceWarning(); TopLevel.overlayLayer.addChild(_performanceWarning); _performanceWarning.addEventListener(MouseEvent.CLICK, hideWarning, false, 0, true); } protected function updatePhysics():void{ throw (new Error("Function needs to be overridden")); } private function pauseMenuListener(_arg1:UIEvent):void{ if (_arg1.actionType == PauseMenu.UNPAUSE){ togglePause(); } else { if (_arg1.actionType == PauseMenu.RESTART){ dispatchEvent(new GameEvent(GameEvent.RESTART_MATCH)); kill(); } else { if (_arg1.actionType == PauseMenu.QUIT){ dispatchEvent(new GameEvent(GameEvent.QUIT_MATCH)); kill(); }; }; }; } protected function kill():void{ if (pauseMenu.parent){ pauseMenu.parent.removeChild(pauseMenu); }; TopLevel.stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); gameTimer.stop(); gameTimer = null; dispatchEvent(new GameEvent(GameEvent.END_MATCH)); } private function updateGraphicsTime(_arg1:int):void{ var _local2:int; if (graphicsTimes.push(_arg1) > 39){ avg = 0; _local2 = 0; while (_local2 < 40) { avg = (avg + graphicsTimes[_local2]); _local2++; }; avg = (avg * 0.025); avg = (Math.round((avg * 100)) / 100); graphicsAverageField.text = (("Gph avg: " + avg) + "ms"); graphicsTimes.length = 0; }; } protected function updateGraphics():void{ throw (new Error("Function needs to be overridden")); } private function hideWarning(_arg1:MouseEvent):void{ _performanceWarning.removeEventListener(MouseEvent.CLICK, hideWarning); TopLevel.overlayLayer.removeChild(_performanceWarning); _performanceWarning = null; } } }//package game.match
Section 157
//MatchController (game.match.MatchController) package game.match { import game.profile.*; import game.ui.*; import game.sound.*; import game.events.*; import game.*; import game.descriptors.*; public class MatchController { private var match:Match; private var returnTo:String; private var opponentDescriptor:ActorDescriptor; private var playerDescriptor:ActorDescriptor; private var trainingType:String; public static const SINGLEMATCH_AMATEUR:String = "randomAmateur"; public static const SINGLEMATCH_GRANDBASH:String = "randomGrandbash"; public static const TOURNAMENT_MATCH:String = "tournamentMatch"; public static const SINGLEMATCH_WORLD:String = "randomWC"; public static const TRAINING:String = "training"; public static const SINGLEMATCH_SEMIPRO:String = "randomSemipro"; private static var instance:MatchController; public function MatchController(_arg1:PrivateClass){ } public function startMatch(_arg1:String, _arg2:String):void{ var _local4:ActorDescriptor; this.returnTo = _arg2; var _local3:ActorDescriptor = ActorConverter.getInstance().makeActorFromProfile(ProfileController.getInstance().profile); playerDescriptor = _local3; if ((_arg1 == TRAINING)){ match = new TrainingMatch(_local3); match.addEventListener(GameEvent.RESTART_MATCH, trainingMatchRestartListener, false, 0, true); match.addEventListener(GameEvent.END_MATCH, trainingMatchEndedListener, false, 0, true); trainingType = TrainingMatch.TRAINING_BASIC; } else { _local4 = ActorConverter.getInstance().makeActorFromXMLList(XMLReader.getInstance().readOpponent(_arg1)); opponentDescriptor = _local4; match = new CPUMatch(_local3, _local4); match.addEventListener(GameEvent.RESTART_MATCH, tournamentMatchRestartListener, false, 0, true); match.addEventListener(GameEvent.END_MATCH, tournamentMatchEndedListener, false, 0, true); }; TopLevel.stage.focus = TopLevel.stage; SoundManager.getInstance().stopMusic(); } private function tournamentMatchRestartListener(_arg1:GameEvent):void{ match.removeEventListener(GameEvent.END_MATCH, tournamentMatchEndedListener); match.removeEventListener(GameEvent.RESTART_MATCH, tournamentMatchRestartListener); match = new CPUMatch(playerDescriptor, opponentDescriptor); match.addEventListener(GameEvent.RESTART_MATCH, tournamentMatchRestartListener, false, 0, true); match.addEventListener(GameEvent.END_MATCH, tournamentMatchEndedListener, false, 0, true); TopLevel.stage.focus = TopLevel.stage; } private function tournamentMatchEndedListener(_arg1:GameEvent):void{ var _local2:MatchResult = (match as CPUMatch).getResults(); var _local3:Profile = ProfileController.getInstance().profile; _local2.oldExperience = _local3.experience; _local2.oldLevel = _local3.experienceLevel; _local2.newExperience = _local3.addExperience(_local2.experience); if (_local2.playerWon){ _local3.tournament[_local2.tournamentNum] = true; if (!_local2.easyMode){ AchievementManager.getInstance().checkCups(_local2.tournamentNum); }; }; MenuController.getInstance().showResults(_local2, returnTo); BackgroundManager.getInstance().play(); match.removeEventListener(GameEvent.RESTART_MATCH, tournamentMatchRestartListener); match.removeEventListener(GameEvent.END_MATCH, tournamentMatchEndedListener); match = null; SoundManager.getInstance().playMusic(); } public function trainingMatchEndedListener(_arg1:GameEvent):void{ match.removeEventListener(GameEvent.END_MATCH, trainingMatchEndedListener); match.removeEventListener(GameEvent.RESTART_MATCH, trainingMatchRestartListener); MenuController.getInstance().callMenu(returnTo); SoundManager.getInstance().playMusic(); BackgroundManager.getInstance().play(); match = null; } public function trainingMatchRestartListener(_arg1:GameEvent):void{ match.removeEventListener(GameEvent.END_MATCH, trainingMatchEndedListener); match.removeEventListener(GameEvent.RESTART_MATCH, trainingMatchRestartListener); match = new TrainingMatch(playerDescriptor); match.addEventListener(GameEvent.RESTART_MATCH, trainingMatchRestartListener, false, 0, true); match.addEventListener(GameEvent.END_MATCH, trainingMatchEndedListener, false, 0, true); TopLevel.stage.focus = TopLevel.stage; } public static function getInstance():MatchController{ if (!instance){ instance = new MatchController(new PrivateClass()); }; return (instance); } } }//package game.match class PrivateClass { private function PrivateClass(){ } }
Section 158
//MatchResult (game.match.MatchResult) package game.match { public class MatchResult { public var shots:int; public var easyMode:Boolean; public var superStrikes:int; public var specialStrikes:int; private var _experience:int; public var tournamentLevel:int; public var tournamentNum:int; public var oldLevel:int; public var newExperience:int; public var matchTime:Number; public var playerWon:Boolean; public var oldExperience:int; public function MatchResult(){ playerWon = false; tournamentNum = -1; tournamentLevel = 0; shots = 0; specialStrikes = 0; superStrikes = 0; matchTime = 0; } public function get experience():int{ _experience = 0; var _local1:int = adjustTL(); _experience = (_experience + (((playerWon) ? 100 : 0 * (tournamentNum + 1)) * Math.pow(10, _local1))); _experience = (_experience + (shots * Math.pow(10, _local1))); _experience = (_experience + ((specialStrikes * 4) * Math.pow(10, _local1))); _experience = (_experience + ((superStrikes * 10) * Math.pow(10, _local1))); return (_experience); } public function get shotExp():int{ return (shots); } private function adjustTL():int{ if (easyMode){ return ((tournamentLevel - 1)); }; return (tournamentLevel); } public function get mulitplier():int{ return (Math.pow(10, adjustTL())); } public function get matchReward():int{ return (((playerWon) ? 100 : 0 * (tournamentNum + 1))); } public function get specExp():int{ return ((specialStrikes * 4)); } public function get supExp():int{ return ((superStrikes * 10)); } public function toString():String{ var _local1 = ""; if (playerWon){ _local1 = (_local1 + "player won; "); } else { _local1 = (_local1 + "opponent won; "); }; _local1 = (_local1 + (("match time: " + String(int(matchTime))) + " seconds; ")); _local1 = (_local1 + (("multiplier x" + String(mulitplier)) + "; ")); _local1 = (_local1 + ((((("shots: " + String(shots)) + "; specials: ") + String(specialStrikes)) + "; supers: ") + String(superStrikes))); return (_local1); } } }//package game.match
Section 159
//TrainingMatch (game.match.TrainingMatch) package game.match { import flash.events.*; import game.profile.*; import flash.display.*; import game.sound.*; import game.events.*; import com.gskinner.motion.*; import game.match.physics.*; import game.descriptors.*; import game.match.graphics.messages.*; import game.match.graphics.*; import caurina.transitions.*; public class TrainingMatch extends Match { private var messageOverlay:MessageOverlay; private var specialStreak:int; private var shotStreak:int; private var superStreak:int; private var statOverlay:StatOverlay; private var soundManager:SoundManager; private var nextFunction:Function; private var playerDescriptor:ActorDescriptor; private var introPic:Bitmap; private var matchGraphics:TrainingGraphics; public static const TRAINING_SPECIAL:String = "specialTraining"; public static const TRAINING_SUPER:String = "superTraining"; public static const TRAINING_BASIC:String = "basicTraining"; public function TrainingMatch(_arg1:ActorDescriptor){ this.playerDescriptor = _arg1; matchPhysics = new TrainingPhysics(_arg1); matchGraphics = new TrainingGraphics(matchPhysics, _arg1.colors); messageOverlay = matchGraphics.messageOverlay; statOverlay = matchGraphics.statOverlay; statOverlay.setStrikeSpeeds(_arg1.specialDifficulty, _arg1.superDifficulty); statOverlay.updateStats(0, 0, 0, 0); shotStreak = 0; specialStreak = 0; superStreak = 0; preMatchRoutine(); } private function superstrikeListener(_arg1:MatchEvent):void{ shotStreak++; specialStreak++; superStreak++; AchievementManager.getInstance().checkTrainingStreak(shotStreak, specialStreak, superStreak); soundManager.playSound(SFXLibrary.SFX_REVERSE_EXPLOSION); soundManager.playSound(SFXLibrary.SFX_EXPLOSION, 3); updateStreaks(); } override protected function preMatchRoutine():void{ super.preMatchRoutine(); soundManager = SoundManager.getInstance(); physicsPause = true; matchPhysics.resetPlayer(true); matchPhysics.resetBall(true); matchPhysics.update(); matchGraphics.update(); introPic = new Bitmap(matchGraphics.makeScreenShot()); introPic.y = 900; TopLevel.graphicsLayer.addChild(introPic); var _local1:GTween = new GTween(introPic, 2, {y:0}, Equations.easeInQuad); _local1.addEventListener(Event.COMPLETE, startMatch, false, 0, true); } override protected function startMatch(_arg1:Event=null):void{ super.startMatch(); _arg1.target.removeEventListener(Event.COMPLETE, startMatch); super.addPauseListener(); matchGraphics.addToDisplayList(); TopLevel.graphicsLayer.removeChild(introPic); nextFunction = nextServe; messageOverlay.addEventListener(MessageEvent.QUEUE_EMPTY, emptyQueueListener); messageOverlay.addTextMessage("Training session\nPress \"Esc\" to exit"); messageOverlay.playMessages(); } override protected function updatePhysics():void{ matchPhysics.update(); } private function specialstrikeListener(_arg1:MatchEvent):void{ shotStreak++; specialStreak++; AchievementManager.getInstance().checkTrainingStreak(shotStreak, specialStreak, superStreak); soundManager.playSound(SFXLibrary.SFX_RACKET2, 0.1); soundManager.playSound(SFXLibrary.SFX_SLASH); updateStreaks(); } private function unpausePhysics():void{ physicsPause = false; } private function pauseRequestListener(_arg1:MatchEvent):void{ if (_arg1.type == MatchEvent.PAUSE_PHYSICS){ physicsPause = true; } else { physicsPause = false; }; } private function shotListener(_arg1:MatchEvent):void{ shotStreak++; AchievementManager.getInstance().checkTrainingStreak(shotStreak, specialStreak, superStreak); playRacketSound(); updateStreaks(); } private function playRacketSound():void{ var _local1:int = Math.floor((Math.random() * 2)); if (_local1 == 0){ soundManager.playSound(SFXLibrary.SFX_RACKET1); }; if (_local1 == 1){ soundManager.playSound(SFXLibrary.SFX_RACKET2); }; } private function emptyQueueListener(_arg1:MessageEvent):void{ nextFunction(); } private function nextServe():void{ physicsPause = true; shotStreak = 0; specialStreak = 0; superStreak = 0; updateStreaks(); matchPhysics.resetPlayer(true); matchPhysics.addEventListener(MatchEvent.OPPONENT_SCORES, opponentScoresListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SHOT, shotListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SERVE, serveListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SUPER, superstrikeListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.SPECIAL, specialstrikeListener, false, 0, true); matchPhysics.addEventListener(MatchEvent.FAULT, faultListener, false, 0, true); matchGraphics.addEventListener(MatchEvent.PAUSE_PHYSICS, pauseRequestListener, false, 0, true); matchGraphics.addEventListener(MatchEvent.UNPAUSE_PHYSICS, pauseRequestListener, false, 0, true); matchPhysics.resetBall(true); physicsPause = false; matchPhysics.startCollisionChecking(); nextFunction = unpausePhysics; messageOverlay.playMessages(); } override protected function kill():void{ super.kill(); matchPhysics.removeEventListener(MatchEvent.OPPONENT_SCORES, opponentScoresListener); matchPhysics.removeEventListener(MatchEvent.SERVE, serveListener); matchPhysics.removeEventListener(MatchEvent.SHOT, shotListener); matchPhysics.removeEventListener(MatchEvent.SUPER, superstrikeListener); matchPhysics.removeEventListener(MatchEvent.SPECIAL, specialstrikeListener); matchPhysics.removeEventListener(MatchEvent.FAULT, faultListener); matchGraphics.removeEventListener(MatchEvent.PAUSE_PHYSICS, pauseRequestListener); matchGraphics.removeEventListener(MatchEvent.UNPAUSE_PHYSICS, pauseRequestListener); messageOverlay.removeEventListener(MessageEvent.QUEUE_EMPTY, emptyQueueListener); playerDescriptor = null; matchPhysics.destroy(); matchPhysics = null; matchGraphics.destroy(); matchGraphics = null; messageOverlay = null; soundManager = null; } private function serveListener(_arg1:MatchEvent):void{ playRacketSound(); } private function updateStreaks():void{ statOverlay.updateStats(matchPhysics.getLastStrikeSpeed(), shotStreak, specialStreak, superStreak); } override protected function updateGraphics():void{ matchGraphics.update(); } private function faultListener(_arg1:MatchEvent):void{ messageOverlay.addTextMessage("Fault!"); matchPhysics.removeEventListener(MatchEvent.FAULT, faultListener); matchPhysics.stopCollisionChecking(); nextFunction = nextServe; messageOverlay.playMessages(); } private function opponentScoresListener(_arg1:MatchEvent):void{ messageOverlay.addTextMessage("Streak ended\nPrepare for next serve\nor press \"Esc\" to exit"); matchPhysics.removeEventListener(MatchEvent.OPPONENT_SCORES, opponentScoresListener); matchPhysics.removeEventListener(MatchEvent.FAULT, faultListener); matchPhysics.stopCollisionChecking(); nextFunction = nextServe; messageOverlay.playMessages(); } } }//package game.match
Section 160
//BigPortraitGenerator (game.portrait.BigPortraitGenerator) package game.portrait { import flash.display.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import game.geom.*; import game.match.graphics.*; public class BigPortraitGenerator extends MatchProjection { private var vectorContainer:Sprite; private var portraitWorld:b2World; private var portraitRagdoll:PortraitRagdoll; private static var instance:BigPortraitGenerator; public function BigPortraitGenerator(_arg1:PrivateClass){ vectorContainer = new Sprite(); super(vectorContainer); setScreen(new Point3D(0, 0, 1000)); setCamera(new Point3D(0, 280, -700)); var _local2:b2AABB = new b2AABB(); _local2.lowerBound.Set(-10, -10); _local2.upperBound.Set(10, 10); var _local3:b2Vec2 = new b2Vec2(0, 0); var _local4:Boolean; portraitWorld = new b2World(_local2, _local3, _local4); portraitRagdoll = new PortraitRagdoll(portraitWorld, false); shadowPosition = 4.5; } public function generateBackdrop():BitmapData{ var _local1:BitmapData = new BitmapData(800, 450, true, 2730978); _local1.lock(); mainGraphics.clear(); setCamera(new Point3D(0, 380, -600)); setCamera(new Point3D(400, 380, -600)); vectorContainer.graphics.lineStyle(2, 0, 0.5); drawParallelepiped(new Point3D(0, 60, 2000), 1000, 10, 2000, 4293646000); render(); drawParallelepiped(new Point3D(0, 0, 2000), 1000, 60, 20, 4294967295); render(); var _local2:Number = 1800; vectorContainer.graphics.lineStyle(2, 0, 0); var _local3 = -1; while (_local3 < 12) { drawParallelepiped(new Point3D((-400 + (_local3 * 80)), 20, _local2), 30, 40, 30, 4278216192); drawParallelepiped(new Point3D((-400 + (_local3 * 80)), -50, _local2), 25, 30, 25, 4278216192); render(); drawParallelepiped(new Point3D((-400 + (_local3 * 80)), -110, _local2), 20, 30, 20, 4278216192); drawParallelepiped(new Point3D((-400 + (_local3 * 80)), -180, _local2), 10, 40, 10, 4278216192); render(); _local3++; }; vectorContainer.graphics.lineStyle(2, 0, 0.5); drawParallelepiped(new Point3D(0, 40, 1000), 200, 10, 800, 4294967295); render(); _local2 = 1500; drawParallelepiped(new Point3D(-120, 25, _local2), 12, 5, 12, 4294967295); drawParallelepiped(new Point3D(-40, 25, _local2), 12, 5, 12, 4294967295); drawParallelepiped(new Point3D(40, 25, _local2), 12, 5, 12, 4294967295); drawParallelepiped(new Point3D(120, 25, _local2), 12, 5, 12, 4294967295); render(); drawParallelepiped(new Point3D(0, -150, _local2), 140, 10, 40, 4294967295); render(); drawParallelepiped(new Point3D(0, -140, _local2), 140, 0, 40, 4294967295); render(); drawParallelepiped(new Point3D(-120, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(-40, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(40, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(120, -60, _local2), 10, 80, 10, 4294967295); render(); _local2 = 1000; drawParallelepiped(new Point3D(-11, -165, (_local2 + 15)), 4, 40, 4, 4294967295); drawParallelepiped(new Point3D(11, -165, (_local2 + 15)), 4, 40, 4, 4294967295); render(); drawParallelepiped(new Point3D(-7, -215, (_local2 + 10)), 4, 30, 4, 4294967295); drawParallelepiped(new Point3D(7, -215, (_local2 + 10)), 4, 30, 4, 4294967295); render(); drawParallelepiped(new Point3D(0, -145, _local2), 15, 5, 15, 4294967295); render(); drawParallelepiped(new Point3D(0, -265, _local2), 5, 40, 15, 4294967295); render(); drawParallelepiped(new Point3D(-8, -215, (_local2 - 15)), 4, 30, 4, 4294967295); drawParallelepiped(new Point3D(8, -215, (_local2 - 15)), 4, 30, 4, 4294967295); render(); drawParallelepiped(new Point3D(-14, -165, (_local2 - 15)), 4, 40, 4, 4294967295); drawParallelepiped(new Point3D(14, -165, (_local2 - 15)), 4, 40, 4, 4294967295); render(); drawParallelepiped(new Point3D(0, -115, _local2), 5, 25, 5, 4294967295); render(); drawParallelepiped(new Point3D(0, -85, _local2), 15, 5, 35, 4294967295); render(); drawParallelepiped(new Point3D(0, -70, _local2), 20, 10, 45, 4294967295); render(); drawParallelepiped(new Point3D(0, -20, _local2), 30, 40, 45, 4294967295); render(); drawParallelepiped(new Point3D(0, 20, _local2), 35, 10, 50, 4294967295); render(); _local2 = 340; drawParallelepiped(new Point3D(-120, 25, _local2), 12, 5, 12, 4294967295); drawParallelepiped(new Point3D(-50, 25, _local2), 12, 5, 12, 4294967295); drawParallelepiped(new Point3D(50, 25, _local2), 12, 5, 12, 4294967295); drawParallelepiped(new Point3D(120, 25, _local2), 12, 5, 12, 4294967295); render(); drawParallelepiped(new Point3D(-85, -150, _local2), 60, 10, 40, 4294967295); drawParallelepiped(new Point3D(-85, -140, _local2), 60, 0, 40, 4294967295); drawParallelepiped(new Point3D(-25, -150, _local2), 0, 10, 40, 4294967295); render(); drawParallelepiped(new Point3D(85, -150, _local2), 60, 10, 40, 4294967295); drawParallelepiped(new Point3D(85, -140, _local2), 60, 0, 40, 4294967295); drawParallelepiped(new Point3D(25, -150, _local2), 0, 10, 40, 4294967295); render(); drawParallelepiped(new Point3D(-120, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(-110, -60, _local2), 0, 80, 10, 4294967295); drawParallelepiped(new Point3D(-50, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(50, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(120, -60, _local2), 10, 80, 10, 4294967295); drawParallelepiped(new Point3D(110, -60, _local2), 0, 80, 10, 4294967295); render(); drawParallelepiped(new Point3D(0, 50, 160), 400, 10, 20, 4294967295); render(); drawParallelepiped(new Point3D(0, 55, 120), 400, 5, 20, 4294967295); render(); _local1.draw(vectorContainer); _local1.unlock(); return (_local1); } public function generatePortrait(_arg1:Array, _arg2:Number=0, _arg3:Boolean=true):BitmapData{ var _local4:BitmapData; _local4 = new BitmapData(300, 450, true, 0); _local4.lock(); mainGraphics.clear(); colorsArray = _arg1; setCamera(new Point3D(0, 380, -600)); setCamera(new Point3D((150 - getProjectionCoordinates(new Point3D((_arg2 * 15), 0, 0)).x), 380, -600)); vectorContainer.graphics.lineStyle(2, 0, 0.5); portraitRagdoll.setPose(new b2Vec2(_arg2, -4), _arg3); vectorContainer.graphics.lineStyle(2, 0, 0.5); renderWorld(portraitWorld, 0); vectorContainer.graphics.lineStyle(2, 0, 0); _local4.draw(vectorContainer); _local4.unlock(); return (_local4); } public static function getInstance():BigPortraitGenerator{ if (!instance){ instance = new BigPortraitGenerator(new PrivateClass()); }; return (instance); } } }//package game.portrait class PrivateClass { private function PrivateClass(){ } }
Section 161
//PortraitGenerator (game.portrait.PortraitGenerator) package game.portrait { import flash.display.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import game.geom.*; import game.match.graphics.*; public class PortraitGenerator extends MatchProjection { private var vectorContainer:Sprite; private var portraitWorld:b2World; private var portraitRagdoll:PortraitRagdoll; private static var instance:PortraitGenerator; public function PortraitGenerator(_arg1:PrivateClass){ vectorContainer = new Sprite(); super(vectorContainer); var _local2:b2AABB = new b2AABB(); _local2.lowerBound.Set(-10, -10); _local2.upperBound.Set(10, 10); var _local3:b2Vec2 = new b2Vec2(0, 0); var _local4:Boolean; portraitWorld = new b2World(_local2, _local3, _local4); portraitRagdoll = new PortraitRagdoll(portraitWorld, false); } public function generateBigAvatar(_arg1:Array, _arg2:Boolean=true):BitmapData{ setScreen(new Point3D(0, 0, 200)); setCamera(new Point3D(90, 115, -280)); var _local3:BitmapData = new BitmapData(180, 200, true, 29116); _local3.lock(); mainGraphics.clear(); colorsArray = _arg1; portraitRagdoll.setPose(new b2Vec2(0, -2), _arg2); vectorContainer.graphics.lineStyle(2, 0, 0.5); renderWorld(portraitWorld, 0); vectorContainer.graphics.lineStyle(2, 0, 0); _local3.draw(vectorContainer); _local3.unlock(); return (_local3); } public function generateMainPortrait(_arg1:Array, _arg2:Boolean=true):BitmapData{ setScreen(new Point3D(0, 0, 600)); setCamera(new Point3D(80, 175, -900)); var _local3:BitmapData = new BitmapData(160, 180, false, 4278219196); _local3.lock(); mainGraphics.clear(); colorsArray = _arg1; portraitRagdoll.setPose(new b2Vec2(0, -4), _arg2); vectorContainer.graphics.lineStyle(2, 0, 0.5); renderWorld(portraitWorld, 0); vectorContainer.graphics.lineStyle(2, 0, 0); _local3.draw(vectorContainer); _local3.unlock(); return (_local3); } public function generateSmallAvatar(_arg1:Array, _arg2:Boolean=true):BitmapData{ setScreen(new Point3D(0, 0, 0)); setCamera(new Point3D(40, 85, -2000)); var _local3:BitmapData = new BitmapData(80, 80, true, 29116); _local3.lock(); mainGraphics.clear(); colorsArray = _arg1; portraitRagdoll.setPose(new b2Vec2(0, -4), _arg2); vectorContainer.graphics.lineStyle(2, 0, 0.5); renderWorld(portraitWorld, 0); vectorContainer.graphics.lineStyle(2, 0, 0); _local3.draw(vectorContainer); _local3.unlock(); return (_local3); } public function generateSmallPortrait(_arg1:Array, _arg2:Boolean=true):BitmapData{ var _local3:BitmapData; setScreen(new Point3D(0, 0, 100)); setCamera(new Point3D(((Math.random() * 40) + 15), ((Math.random() * 40) + 85), ((Math.random() * 500) - 600))); _local3 = new BitmapData(70, 70, false, 4278219196); _local3.lock(); mainGraphics.clear(); colorsArray = _arg1; portraitRagdoll.setPose(new b2Vec2(0, -4), _arg2); vectorContainer.graphics.lineStyle(2, 0, 0.5); renderWorld(portraitWorld, 0); vectorContainer.graphics.lineStyle(2, 0, 0); _local3.draw(vectorContainer); _local3.unlock(); return (_local3); } public function updateBigAvatarColors(_arg1:Array):BitmapData{ var _local2:BitmapData = new BitmapData(180, 200, true, 29116); _local2.lock(); mainGraphics.clear(); colorsArray = _arg1; vectorContainer.graphics.lineStyle(2, 0, 0.5); renderWorld(portraitWorld, 0); vectorContainer.graphics.lineStyle(2, 0, 0); _local2.draw(vectorContainer); _local2.unlock(); return (_local2); } public static function getInstance():PortraitGenerator{ if (!instance){ instance = new PortraitGenerator(new PrivateClass()); }; return (instance); } } }//package game.portrait class PrivateClass { private function PrivateClass(){ } }
Section 162
//PortraitRagdoll (game.portrait.PortraitRagdoll) package game.portrait { import Box2D.Dynamics.*; import game.match.physics.*; import Box2D.Common.Math.*; public class PortraitRagdoll extends Ragdoll { private var tPos:b2Vec2; public function PortraitRagdoll(_arg1:b2World, _arg2:Boolean=true){ super(_arg1, 1, _arg2, 0); setPose(new b2Vec2(0, -4)); } public function setPose(_arg1:b2Vec2, _arg2:Boolean=true):void{ var _local3:int; tPos = new b2Vec2(); tPos.Set(_arg1.x, (_arg1.y + 0.1)); head.SetXForm(tPos, 0); tPos.Set(_arg1.x, (_arg1.y + 3)); torso.SetXForm(tPos, 0); if (_arg2){ _local3 = Math.floor((Math.random() * 4)); if (_local3 == 0){ tPos.Set((_arg1.x - 1.6), (_arg1.y + 0.7)); upperArmL.SetXForm(tPos, (Math.PI / 4)); tPos.Set((_arg1.x - 2.45), (_arg1.y - 0.7)); lowerArmL.SetXForm(tPos, ((Math.PI * 2) / 5)); tPos.Set((_arg1.x - 1), (_arg1.y - 2.6)); racket.SetXForm(tPos, ((Math.PI * 4) / 5)); } else { if (_local3 == 1){ tPos.Set((_arg1.x - 1.6), (_arg1.y + 0.7)); upperArmL.SetXForm(tPos, (Math.PI / 4)); tPos.Set((_arg1.x - 1.95), (_arg1.y - 0.6)); lowerArmL.SetXForm(tPos, ((Math.PI * 4) / 7)); tPos.Set((_arg1.x + 0.3), (_arg1.y - 2)); racket.SetXForm(tPos, ((Math.PI * 9) / 10)); } else { if (_local3 == 2){ tPos.Set((_arg1.x - 1.9), (_arg1.y + 1)); upperArmL.SetXForm(tPos, (Math.PI / 10)); tPos.Set((_arg1.x - 2.45), (_arg1.y - 0.05)); lowerArmL.SetXForm(tPos, ((Math.PI * 5) / 9)); tPos.Set((_arg1.x - 0.3), (_arg1.y - 1.4)); racket.SetXForm(tPos, ((Math.PI * 10) / 11)); } else { if (_local3 == 3){ tPos.Set((_arg1.x - 1.5), (_arg1.y + 1.8)); upperArmL.SetXForm(tPos, (-(Math.PI) / 3)); tPos.Set((_arg1.x - 2.4), (_arg1.y + 1.8)); lowerArmL.SetXForm(tPos, ((Math.PI * 2) / 7)); tPos.Set((_arg1.x - 1.2), (_arg1.y - 0.1)); racket.SetXForm(tPos, ((Math.PI * 7) / 9)); }; }; }; }; _local3 = Math.floor((Math.random() * 2)); if (_local3 == 0){ tPos.Set((_arg1.x + 1.6), (_arg1.y + 1.8)); upperArmR.SetXForm(tPos, (Math.PI / 4)); tPos.Set((_arg1.x + 1.7), (_arg1.y + 2.9)); lowerArmR.SetXForm(tPos, ((Math.PI * 7) / 10)); } else { if (_local3 == 1){ tPos.Set((_arg1.x + 1.6), (_arg1.y + 0.7)); upperArmR.SetXForm(tPos, (-(Math.PI) / 4)); tPos.Set((_arg1.x + 1.8), (_arg1.y - 0.5)); lowerArmR.SetXForm(tPos, ((-(Math.PI) * 9) / 14)); } else { if (_local3 == 2){ tPos.Set((_arg1.x + 1.6), (_arg1.y + 0.7)); upperArmR.SetXForm(tPos, (-(Math.PI) / 4)); tPos.Set((_arg1.x + 2.45), (_arg1.y - 0.7)); lowerArmR.SetXForm(tPos, ((-(Math.PI) * 2) / 5)); }; }; }; } else { if (Math.floor((Math.random() * 2)) == 0){ tPos.Set((_arg1.x + 1.6), (_arg1.y + 0.7)); upperArmL.SetXForm(tPos, ((-(Math.PI) * 5) / 4)); tPos.Set((_arg1.x + 2.45), (_arg1.y - 0.7)); lowerArmL.SetXForm(tPos, ((-(Math.PI) * 7) / 5)); tPos.Set((_arg1.x + 0.8), (_arg1.y - 2.8)); racket.SetXForm(tPos, ((-(Math.PI) * 9) / 5)); } else { tPos.Set((_arg1.x + 1.5), (_arg1.y + 1.8)); upperArmL.SetXForm(tPos, ((Math.PI * 4) / 3)); tPos.Set((_arg1.x + 2.3), (_arg1.y + 1.7)); lowerArmL.SetXForm(tPos, ((-(Math.PI) * 4) / 3)); tPos.Set((_arg1.x + 0.8), (_arg1.y + 0.3)); racket.SetXForm(tPos, ((-(Math.PI) * 15) / 8)); }; if (Math.floor((Math.random() * 2)) == 0){ tPos.Set((_arg1.x - 1.6), (_arg1.y + 1.8)); upperArmR.SetXForm(tPos, ((-(Math.PI) * 5) / 4)); tPos.Set((_arg1.x - 1.7), (_arg1.y + 2.9)); lowerArmR.SetXForm(tPos, ((-(Math.PI) * 17) / 10)); } else { tPos.Set((_arg1.x - 1.6), (_arg1.y + 0.7)); upperArmR.SetXForm(tPos, ((Math.PI * 5) / 4)); tPos.Set((_arg1.x - 2.45), (_arg1.y - 0.7)); lowerArmR.SetXForm(tPos, ((Math.PI * 7) / 5)); }; }; tPos.Set((_arg1.x - 0.6), (_arg1.y + 5.8)); upperLegL.SetXForm(tPos, 0); tPos.Set((_arg1.x + 0.6), (_arg1.y + 5.8)); upperLegR.SetXForm(tPos, 0); tPos.Set((_arg1.x - 0.6), (_arg1.y + 7.5)); lowerLegL.SetXForm(tPos, 0); tPos.Set((_arg1.x + 0.6), (_arg1.y + 7.5)); lowerLegR.SetXForm(tPos, 0); } public function getLowerArmLPosition():b2Vec2{ return (lowerArmR.GetWorldCenter().Copy()); } public function getLowerArmRPosition():b2Vec2{ return (lowerArmR.GetWorldCenter().Copy()); } public function getStripePosition():b2Vec2{ return (torso.GetWorldCenter().Copy()); } } }//package game.portrait
Section 163
//AchievementManager (game.profile.AchievementManager) package game.profile { import game.ui.*; public class AchievementManager { private var achievementOverlay:AchievementOverlay; private var profile:Profile; private static var _instance:AchievementManager; public function AchievementManager(_arg1:PrivateClass){ achievementOverlay = new AchievementOverlay(); TopLevel.overlayLayer.addChild(achievementOverlay); } public function checkTrainingStreak(_arg1:int, _arg2:int, _arg3:int):void{ updateProfile(); if ((((_arg1 >= 30)) && (!(profile.achievements[8])))){ profile.achievements[8] = true; achievementOverlay.addAchivementNotification("Wall Master"); achievementOverlay.playMessages(); }; } public function checkFlawless(_arg1:Boolean):void{ updateProfile(); if (((_arg1) && (!(profile.achievements[9])))){ profile.achievements[9] = true; achievementOverlay.addAchivementNotification("Flawless Victory"); achievementOverlay.playMessages(); }; } private function updateProfile():void{ profile = ProfileController.getInstance().profile; } public function checkStrike(_arg1:Number, _arg2:Number, _arg3:Number):void{ updateProfile(); if ((((_arg1 > 50)) && (!(profile.achievements[5])))){ profile.achievements[5] = true; achievementOverlay.addAchivementNotification("Rocket Racket"); achievementOverlay.playMessages(); }; if ((((Math.abs(_arg2) > 80)) && (!(profile.achievements[6])))){ profile.achievements[6] = true; achievementOverlay.addAchivementNotification("Defender"); achievementOverlay.playMessages(); }; if ((((Math.abs(_arg3) > 100)) && (!(profile.achievements[7])))){ profile.achievements[7] = true; achievementOverlay.addAchivementNotification("Jet Ball"); achievementOverlay.playMessages(); }; } public function checkCups(_arg1:int):void{ updateProfile(); if ((((_arg1 == 4)) && (!(profile.achievements[0])))){ profile.achievements[0] = true; achievementOverlay.addAchivementNotification("Amateur Cup"); achievementOverlay.playMessages(); }; if ((((_arg1 == 9)) && (!(profile.achievements[1])))){ profile.achievements[1] = true; achievementOverlay.addAchivementNotification("Semi-pro Trophy"); achievementOverlay.playMessages(); }; if ((((_arg1 == 14)) && (!(profile.achievements[2])))){ profile.achievements[2] = true; achievementOverlay.addAchivementNotification("World Cup"); achievementOverlay.playMessages(); }; if ((((_arg1 == 19)) && (!(profile.achievements[3])))){ profile.achievements[3] = true; achievementOverlay.addAchivementNotification("Grand Bash Trophy"); achievementOverlay.playMessages(); }; } public static function getInstance():AchievementManager{ if (!_instance){ _instance = new AchievementManager(new PrivateClass()); }; return (_instance); } } }//package game.profile class PrivateClass { private function PrivateClass(){ } }
Section 164
//Profile (game.profile.Profile) package game.profile { import game.ui.*; import game.sound.*; public class Profile { public var soundVolume:int; public var name:String; public var nextLevelExp:int; public var graphics:int; public var musicVolume:int; public var newPlayer:Boolean; public var statistics:Statistics; public var achievements:Array; public var performanceWarningShown:Boolean; public var skillSpecial:int; public var skillWeight:int; public var experienceLevel:int; public var skillCourtControl:int; public var easyMode:Boolean; public var colorsUpdatedByLevel:Array; public var muteAll:Boolean; public var skillShotPower:int; public var freeStatPoints:int; public var tournament:Array; public var experience:int; public var skillAdrenaline:int; public var colors:Array; public var lowFPS:Boolean; public var skillSpeed:int; public var buttonFlashed:Boolean; public function Profile(_arg1:String=""){ name = _arg1; newPlayer = true; tournament = new Array(); experienceLevel = 1; experience = 0; nextLevelExp = XMLReader.getInstance().readLevels((experienceLevel + 1)).experience; freeStatPoints = 2; colors = new Array(7); colors = new Array(4278190080, 4294303949, 4294967295, 4278229503, 4279724774, 4284495891, 2583691263); statistics = new Statistics(); achievements = new Array(); skillWeight = 0; skillSpeed = 0; skillShotPower = 0; skillCourtControl = 0; skillAdrenaline = 0; skillSpecial = 0; lowFPS = false; graphics = 5; colorsUpdatedByLevel = new Array(); soundVolume = 5; musicVolume = 5; } public function updateBoolParameter(_arg1:String):Boolean{ if (_arg1 == "lowFPS"){ lowFPS = !(lowFPS); if (lowFPS){ TopLevel.stage.frameRate = 25; } else { TopLevel.stage.frameRate = 40; }; } else { if (_arg1 == "muteAll"){ muteAll = !(muteAll); SoundManager.getInstance().updateParameters(); } else { this[_arg1] = !((this[_arg1] as Boolean)); return ((this[_arg1] as Boolean)); }; }; ProfileController.getInstance().saveProfile(); return ((this[_arg1] as Boolean)); } private function updateGraphicsSettings():void{ if (lowFPS){ TopLevel.stage.frameRate = 25; } else { TopLevel.stage.frameRate = 40; }; if (graphics == 5){ TopLevel.stage.quality = "high"; }; if (graphics == 4){ TopLevel.stage.quality = "medium"; }; if (graphics == 3){ TopLevel.stage.quality = "low"; }; if (graphics == 2){ TopLevel.stage.quality = "high"; }; if (graphics == 1){ TopLevel.stage.quality = "high"; }; if (graphics == 0){ TopLevel.stage.quality = "low"; }; } public function addExperience(_arg1:int):int{ if (experienceLevel < 15){ experience = (experience + _arg1); while (experience >= nextLevelExp) { experienceLevel++; freeStatPoints = (freeStatPoints + 2); if (experienceLevel < 15){ nextLevelExp = XMLReader.getInstance().readLevels((experienceLevel + 1)).experience; } else { nextLevelExp = XMLReader.getInstance().readLevels(experienceLevel).experience; experience = nextLevelExp; break; }; }; }; ProfileController.getInstance().saveProfile(); return (experience); } public function updateIntParameter(_arg1:String, _arg2:Boolean=true):int{ if (_arg1.indexOf("skill") != -1){ if (_arg2){ if ((((freeStatPoints > 0)) && ((this[_arg1] < 5)))){ var _local3 = this; var _local4 = _arg1; var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; freeStatPoints--; }; } else { if (this[_arg1] > 0){ _local3 = this; _local4 = _arg1; _local5 = (_local3[_local4] - 1); _local3[_local4] = _local5; freeStatPoints++; }; }; if (this[_arg1] < 0){ this[_arg1] = 0; }; } else { if (_arg2){ _local3 = this; _local4 = _arg1; _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; } else { _local3 = this; _local4 = _arg1; _local5 = (_local3[_local4] - 1); _local3[_local4] = _local5; }; if (this[_arg1] > 5){ this[_arg1] = 5; }; if (this[_arg1] < 0){ this[_arg1] = 0; }; }; if (_arg1 == "graphics"){ updateGraphicsSettings(); }; ProfileController.getInstance().saveProfile(); SoundManager.getInstance().updateParameters(); return ((this[_arg1] as int)); } public function checkConsistency():void{ var _local1:int; if (!name){ name = "Restored profile"; }; if (!tournament){ tournament = new Array(); }; if (!colorsUpdatedByLevel){ trace("restoring color update array"); colorsUpdatedByLevel = new Array(); _local1 = 0; while (_local1 < 16) { colorsUpdatedByLevel[_local1] = false; _local1++; }; }; if (!achievements){ trace("restoring achievements"); achievements = new Array(); }; } public function updateGameToSettings():void{ updateGraphicsSettings(); SoundManager.getInstance().updateParameters(); } } }//package game.profile
Section 165
//ProfileController (game.profile.ProfileController) package game.profile { import flash.net.*; public class ProfileController { private var loadedProfile:Profile; private var activeSlot:int; private var profilesArray:Array; private var sharedObject:SharedObject; private static var instance:ProfileController; public function ProfileController(_arg1:PrivateClass){ registerClassAlias("Profile", Profile); registerClassAlias("Statistics", Statistics); var _local2:SharedObject = SharedObject.getLocal("RagdollTennis", "/"); if ((_local2.data.profilesArray is Array)){ profilesArray = (_local2.data.profilesArray as Array); } else { profilesArray = new Array(); _local2.data.profilesArray = profilesArray; _local2.data.lastSlot = -1; _local2.flush(); }; } public function loadProfile(_arg1:int):void{ loadedProfile = profilesArray[_arg1]; loadedProfile.checkConsistency(); activeSlot = _arg1; saveProfile(); profile.updateGameToSettings(); } public function getProfilesList():Array{ var _local1:Array = new Array(5); var _local2:int; while (_local2 < 5) { if (profilesArray[_local2]){ _local1[_local2] = profilesArray[_local2].name; } else { _local1[_local2] = "empty slot"; }; _local2++; }; return (_local1); } public function setActiveSlot(_arg1:int):void{ activeSlot = _arg1; } public function get profile():Profile{ return (loadedProfile); } public function saveProfile():void{ sharedObject = SharedObject.getLocal("RagdollTennis", "/"); sharedObject.data.lastSlot = activeSlot; sharedObject.data.profilesArray = profilesArray; sharedObject.flush(); } public function createProfile(_arg1:String):void{ var _local2:int = activeSlot; profilesArray[_local2] = new Profile(_arg1); loadProfile(_local2); saveProfile(); } public function loadLastProfile():Boolean{ sharedObject = SharedObject.getLocal("RagdollTennis", "/"); if (sharedObject.data.lastSlot != -1){ loadProfile(sharedObject.data.lastSlot); return (true); }; return (false); } public function purgeProfiles():void{ sharedObject = SharedObject.getLocal("RagdollTennis", "/"); profilesArray = new Array(5); activeSlot = -1; saveProfile(); } public function deleteProfile(_arg1:int):Boolean{ loadedProfile = null; profilesArray[_arg1] = null; activeSlot = -1; saveProfile(); return (false); } public function checkIfProflesExist():Boolean{ var _local1:Boolean; var _local2:int; while (_local2 < 5) { if (profilesArray[_local2]){ return (true); }; _local2++; }; return (false); } public static function getInstance():ProfileController{ if (instance){ return (instance); }; instance = new ProfileController(new PrivateClass()); return (instance); } } }//package game.profile class PrivateClass { private function PrivateClass(){ } }
Section 166
//Statistics (game.profile.Statistics) package game.profile { public class Statistics { } }//package game.profile
Section 167
//SFXLibrary (game.sound.SFXLibrary) package game.sound { import flash.media.*; public class SFXLibrary { public static const SFX_SLASH:String = "SFXSlash"; public static const ACHIEVEMENT:String = "achievement"; public static const MUSIC_INTRO:String = "introMusic"; public static const SFX_EXPLOSION:String = "SFXExplosion"; public static const BUTTON:String = "button"; public static const SFX_WOOSH1:String = "SFXWoosh1"; public static const SFX_WOOSH2:String = "SFXWoosh2"; public static const SFX_WOOSH3:String = "SFXWoosh3"; public static const SFX_CHEER1:String = "SFXCheer1"; public static const SFX_CHEER2:String = "SFXCheer2"; public static const SFX_CHEER3:String = "SFXCheer3"; public static const SFX_CHEER4:String = "SFXCheer4"; public static const ROLLOVER:String = "rollover"; public static const SFX_RACKET2:String = "SFXRacket2"; public static const SFX_RACKET1:String = "SFXRacket1"; public static const SFX_REVERSE_EXPLOSION:String = "SFXReverseExplosion"; public static const SFX_CROWD2:String = "SFXCrowd2"; public static const SFX_CROWD3:String = "SFXCrowd3"; public static const SFX_CROWD1:String = "SFXCrowd1"; public static const MUSIC_TRACK1:String = "musicTrack1"; public static const SFX_LONG_CHEER1:String = "SFXLongCheer1"; public static const SFX_LONG_CHEER2:String = "SFXLongCheer2"; public static const SFX_FLASH:String = "SFXFlash"; private static var button:Class = SFXLibrary_button; private static var rollover:Class = SFXLibrary_rollover; private static var SFXFlash:Class = SFXLibrary_SFXFlash; private static var SFXRacket1:Class = SFXLibrary_SFXRacket1; private static var SFXRacket2:Class = SFXLibrary_SFXRacket2; private static var instance:SFXLibrary; private static var SFXSlash:Class = SFXLibrary_SFXSlash; private static var introMusic:Class = SFXLibrary_introMusic; private static var achievement:Class = SFXLibrary_achievement; private static var SFXCheer1:Class = SFXLibrary_SFXCheer1; private static var SFXWoosh1:Class = SFXLibrary_SFXWoosh1; private static var SFXWoosh2:Class = SFXLibrary_SFXWoosh2; private static var SFXWoosh3:Class = SFXLibrary_SFXWoosh3; private static var SFXCheer4:Class = SFXLibrary_SFXCheer4; private static var SFXCheer2:Class = SFXLibrary_SFXCheer2; private static var SFXExplosion:Class = SFXLibrary_SFXExplosion; private static var SFXCheer3:Class = SFXLibrary_SFXCheer3; private static var SFXLongCheer2:Class = SFXLibrary_SFXLongCheer2; private static var SFXCrowd1:Class = SFXLibrary_SFXCrowd1; private static var SFXCrowd2:Class = SFXLibrary_SFXCrowd2; private static var SFXCrowd3:Class = SFXLibrary_SFXCrowd3; private static var SFXReverseExplosion:Class = SFXLibrary_SFXReverseExplosion; private static var SFXLongCheer1:Class = SFXLibrary_SFXLongCheer1; private static var musicTrack1:Class = SFXLibrary_musicTrack1; public function SFXLibrary(_arg1:PrivateClass){ } public static function getSound(_arg1:String):Sound{ var _local2:Sound; var _local3:Class = (SFXLibrary[_arg1] as Class); _local2 = (new (_local3) as Sound); return (_local2); } } }//package game.sound class PrivateClass { private function PrivateClass(){ } }
Section 168
//SFXLibrary_achievement (game.sound.SFXLibrary_achievement) package game.sound { import mx.core.*; public class SFXLibrary_achievement extends SoundAsset { } }//package game.sound
Section 169
//SFXLibrary_button (game.sound.SFXLibrary_button) package game.sound { import mx.core.*; public class SFXLibrary_button extends SoundAsset { } }//package game.sound
Section 170
//SFXLibrary_introMusic (game.sound.SFXLibrary_introMusic) package game.sound { import mx.core.*; public class SFXLibrary_introMusic extends SoundAsset { } }//package game.sound
Section 171
//SFXLibrary_musicTrack1 (game.sound.SFXLibrary_musicTrack1) package game.sound { import mx.core.*; public class SFXLibrary_musicTrack1 extends SoundAsset { } }//package game.sound
Section 172
//SFXLibrary_rollover (game.sound.SFXLibrary_rollover) package game.sound { import mx.core.*; public class SFXLibrary_rollover extends SoundAsset { } }//package game.sound
Section 173
//SFXLibrary_SFXCheer1 (game.sound.SFXLibrary_SFXCheer1) package game.sound { import mx.core.*; public class SFXLibrary_SFXCheer1 extends SoundAsset { } }//package game.sound
Section 174
//SFXLibrary_SFXCheer2 (game.sound.SFXLibrary_SFXCheer2) package game.sound { import mx.core.*; public class SFXLibrary_SFXCheer2 extends SoundAsset { } }//package game.sound
Section 175
//SFXLibrary_SFXCheer3 (game.sound.SFXLibrary_SFXCheer3) package game.sound { import mx.core.*; public class SFXLibrary_SFXCheer3 extends SoundAsset { } }//package game.sound
Section 176
//SFXLibrary_SFXCheer4 (game.sound.SFXLibrary_SFXCheer4) package game.sound { import mx.core.*; public class SFXLibrary_SFXCheer4 extends SoundAsset { } }//package game.sound
Section 177
//SFXLibrary_SFXCrowd1 (game.sound.SFXLibrary_SFXCrowd1) package game.sound { import mx.core.*; public class SFXLibrary_SFXCrowd1 extends SoundAsset { } }//package game.sound
Section 178
//SFXLibrary_SFXCrowd2 (game.sound.SFXLibrary_SFXCrowd2) package game.sound { import mx.core.*; public class SFXLibrary_SFXCrowd2 extends SoundAsset { } }//package game.sound
Section 179
//SFXLibrary_SFXCrowd3 (game.sound.SFXLibrary_SFXCrowd3) package game.sound { import mx.core.*; public class SFXLibrary_SFXCrowd3 extends SoundAsset { } }//package game.sound
Section 180
//SFXLibrary_SFXExplosion (game.sound.SFXLibrary_SFXExplosion) package game.sound { import mx.core.*; public class SFXLibrary_SFXExplosion extends SoundAsset { } }//package game.sound
Section 181
//SFXLibrary_SFXFlash (game.sound.SFXLibrary_SFXFlash) package game.sound { import mx.core.*; public class SFXLibrary_SFXFlash extends SoundAsset { } }//package game.sound
Section 182
//SFXLibrary_SFXLongCheer1 (game.sound.SFXLibrary_SFXLongCheer1) package game.sound { import mx.core.*; public class SFXLibrary_SFXLongCheer1 extends SoundAsset { } }//package game.sound
Section 183
//SFXLibrary_SFXLongCheer2 (game.sound.SFXLibrary_SFXLongCheer2) package game.sound { import mx.core.*; public class SFXLibrary_SFXLongCheer2 extends SoundAsset { } }//package game.sound
Section 184
//SFXLibrary_SFXRacket1 (game.sound.SFXLibrary_SFXRacket1) package game.sound { import mx.core.*; public class SFXLibrary_SFXRacket1 extends SoundAsset { } }//package game.sound
Section 185
//SFXLibrary_SFXRacket2 (game.sound.SFXLibrary_SFXRacket2) package game.sound { import mx.core.*; public class SFXLibrary_SFXRacket2 extends SoundAsset { } }//package game.sound
Section 186
//SFXLibrary_SFXReverseExplosion (game.sound.SFXLibrary_SFXReverseExplosion) package game.sound { import mx.core.*; public class SFXLibrary_SFXReverseExplosion extends SoundAsset { } }//package game.sound
Section 187
//SFXLibrary_SFXSlash (game.sound.SFXLibrary_SFXSlash) package game.sound { import mx.core.*; public class SFXLibrary_SFXSlash extends SoundAsset { } }//package game.sound
Section 188
//SFXLibrary_SFXWoosh1 (game.sound.SFXLibrary_SFXWoosh1) package game.sound { import mx.core.*; public class SFXLibrary_SFXWoosh1 extends SoundAsset { } }//package game.sound
Section 189
//SFXLibrary_SFXWoosh2 (game.sound.SFXLibrary_SFXWoosh2) package game.sound { import mx.core.*; public class SFXLibrary_SFXWoosh2 extends SoundAsset { } }//package game.sound
Section 190
//SFXLibrary_SFXWoosh3 (game.sound.SFXLibrary_SFXWoosh3) package game.sound { import mx.core.*; public class SFXLibrary_SFXWoosh3 extends SoundAsset { } }//package game.sound
Section 191
//SoundManager (game.sound.SoundManager) package game.sound { import flash.events.*; import game.profile.*; import flash.media.*; import flash.utils.*; public class SoundManager { private const MAX_VOLUME:int = 5; private var delayedCheerDictionary:Dictionary; private var delayedSoundDictionary:Dictionary; private var soundVolume:int; private var currentTrack:String; private var crowdChannel:SoundChannel; private var crowdTimer:Timer; private var mute:Boolean; private var musicChannel:SoundChannel; private var musicVolume:int; private var soundChannel:SoundChannel; private var cheerChannel:SoundChannel; private static var instance:SoundManager; public function SoundManager(_arg1:PrivateClass){ soundChannel = new SoundChannel(); cheerChannel = new SoundChannel(); musicChannel = new SoundChannel(); crowdChannel = new SoundChannel(); crowdTimer = new Timer(1500, 0); crowdTimer.addEventListener(TimerEvent.TIMER, crowdTimerHandler); delayedSoundDictionary = new Dictionary(true); delayedCheerDictionary = new Dictionary(true); soundVolume = 5; musicVolume = 5; } public function playCheer(_arg1:int, _arg2:Number=0):void{ var _local3:Timer; var _local4:SoundTransform; var _local5:int; var _local6:String; if (_arg1 > 30){ if (_arg2 > 0){ _local3 = new Timer((_arg2 * 1000)); _local3.addEventListener(TimerEvent.TIMER, playDelayedCheer); delayedCheerDictionary[_local3] = _arg1; _local3.start(); } else { _local4 = cheerChannel.soundTransform; if (_arg1 > 100){ _arg1 = 100; }; _local4.volume = (((_arg1 / 100) * soundVolume) / MAX_VOLUME); _local5 = Math.floor((Math.random() * 3)); switch (_local5){ case 0: _local6 = SFXLibrary.SFX_CHEER1; break; case 1: _local6 = SFXLibrary.SFX_CHEER2; break; case 2: _local6 = SFXLibrary.SFX_CHEER3; break; default: _local6 = SFXLibrary.SFX_CHEER1; break; }; soundChannel = SFXLibrary.getSound(_local6).play(); soundChannel.soundTransform = _local4; }; }; } public function stopMusic():void{ musicChannel.stop(); musicChannel.removeEventListener(Event.SOUND_COMPLETE, musicFinishedHandler); } public function stopCrowd():void{ crowdTimer.stop(); crowdChannel.stop(); } public function playMusic(_arg1:String=""):void{ updateParameters(); var _local2:SoundTransform = musicChannel.soundTransform; _local2.volume = (musicVolume / MAX_VOLUME); musicChannel = SFXLibrary.getSound(SFXLibrary.MUSIC_TRACK1).play(); musicChannel.addEventListener(Event.SOUND_COMPLETE, musicFinishedHandler, false, 0, true); musicChannel.soundTransform = _local2; } public function updateParameters():void{ var _local2:SoundTransform; var _local1:Profile = ProfileController.getInstance().profile; if (_local1){ mute = _local1.muteAll; if (mute){ soundVolume = 0; musicVolume = 0; } else { soundVolume = _local1.soundVolume; musicVolume = _local1.musicVolume; }; _local2 = soundChannel.soundTransform; _local2.volume = (soundVolume / MAX_VOLUME); soundChannel.soundTransform = _local2; _local2 = musicChannel.soundTransform; _local2.volume = (musicVolume / MAX_VOLUME); musicChannel.soundTransform = _local2; }; } private function musicFinishedHandler(_arg1:Event):void{ playMusic(); } private function playDelayedCheer(_arg1:TimerEvent):void{ playCheer(delayedCheerDictionary[_arg1.target]); Timer(_arg1.target).stop(); } public function startCrowd(_arg1:Number=0):void{ crowdTimer.delay = (_arg1 * 1000); crowdTimer.start(); } public function updatePressure(_arg1:int):void{ var _local2:SoundTransform = crowdChannel.soundTransform; _local2.volume = (((((_arg1 / 6) + 5) / 100) * soundVolume) / MAX_VOLUME); crowdChannel.soundTransform = _local2; } private function playDelayedSound(_arg1:TimerEvent):void{ playSound(delayedSoundDictionary[_arg1.target]); Timer(_arg1.target).stop(); } public function playSound(_arg1:String, _arg2:Number=0):void{ var _local3:SoundTransform; var _local4:Timer; if (_arg2 == 0){ _local3 = soundChannel.soundTransform; _local3.volume = (soundVolume / MAX_VOLUME); soundChannel = SFXLibrary.getSound(_arg1).play(28); soundChannel.soundTransform = _local3; } else { _local4 = new Timer((_arg2 * 1000)); _local4.addEventListener(TimerEvent.TIMER, playDelayedSound); delayedSoundDictionary[_local4] = _arg1; _local4.start(); }; } private function crowdTimerHandler(_arg1:TimerEvent):void{ var _local4:String; crowdTimer.delay = 1500; var _local2:SoundTransform = crowdChannel.soundTransform; var _local3:Number = Math.random(); if (_local3 > 0.66){ _local4 = SFXLibrary.SFX_CROWD1; } else { if (_local3 > 0.33){ _local4 = SFXLibrary.SFX_CROWD2; } else { _local4 = SFXLibrary.SFX_CROWD3; }; }; crowdChannel = SFXLibrary.getSound(_local4).play(); crowdChannel.soundTransform = _local2; } public static function getInstance():SoundManager{ if (!instance){ instance = new SoundManager(new PrivateClass()); }; return (instance); } } }//package game.sound class PrivateClass { private function PrivateClass(){ } }
Section 192
//CharacterSheet (game.ui.charsheet.CharacterSheet) package game.ui.charsheet { import flash.events.*; import game.profile.*; import game.ui.*; import flash.display.*; import game.portrait.*; import flash.geom.*; import com.dimonte.ui.*; public class CharacterSheet extends Sprite { private var experienceStripeMask:Sprite; private var freePointsLabel:FreePointsLabel; private var nameLabel:MenuNameLabel; private var experienceLabel:ExperienceLabel; private var closeButton:MenuButton; private var colorSelectors:Array; private var experienceStripe:Sprite; private var portrait:Bitmap; private var statSliders:Array; public function CharacterSheet(){ var _local9:ColorSelector; var _local10:StatSliderButton; super(); applyDecor(); portrait = new Bitmap(); portrait.x = 10; portrait.y = 50; addChild(portrait); experienceStripe = new Sprite(); var _local1:Matrix = new Matrix(); _local1.createGradientBox(10, 20, (Math.PI / 2)); experienceStripe.graphics.beginGradientFill("linear", [2863346, 31961], [1, 1], [0, 0xFF], _local1); experienceStripe.graphics.drawRect(0, 0, 560, 20); experienceStripe.graphics.endFill(); experienceStripe.y = 410; addChild(experienceStripe); experienceStripeMask = new Sprite(); experienceStripeMask.graphics.beginFill(0, 1); experienceStripeMask.graphics.moveTo(0, 0); experienceStripeMask.graphics.lineTo(180, 0); experienceStripeMask.graphics.curveTo(180, 10, 190, 10); experienceStripeMask.graphics.lineTo(560, 10); experienceStripeMask.graphics.curveTo(560, 20, 550, 20); experienceStripeMask.graphics.lineTo(10, 20); experienceStripeMask.graphics.curveTo(0, 20, 0, 10); experienceStripeMask.graphics.lineTo(0, 0); experienceStripeMask.graphics.endFill(); experienceStripeMask.y = 410; addChild(experienceStripeMask); experienceStripe.mask = experienceStripeMask; experienceLabel = new ExperienceLabel(); experienceLabel.x = 160; experienceLabel.y = 417; experienceLabel.text = ""; addChild(experienceLabel); freePointsLabel = new FreePointsLabel(); freePointsLabel.x = 15; freePointsLabel.y = 407; addChild(freePointsLabel); colorSelectors = new Array(); var _local2:Array = ["Hair", "Skin", "Shirt", "Stripe", "Pants", "Racket handle", "Racket mesh"]; var _local3 = 210; var _local4 = 70; var _local5:int; while (_local5 < 7) { _local9 = new ColorSelector(_local2[_local5], _local5, XMLReader.getInstance().readColors(_local5)); _local9.x = _local3; _local9.y = (_local4 + (_local5 * 30)); addChild(_local9); colorSelectors.push(_local9); _local9.addEventListener(MouseEvent.CLICK, colorSelectHandler); _local5++; }; _local9.x = (_local3 + 180); _local9.y = (_local4 + (5 * 30)); var _local6:Array = ["Shot power", "Speed", "Weight", "Court control", "Adrenaline", "Special"]; var _local7:Array = ["skillShotPower", "skillSpeed", "skillWeight", "skillCourtControl", "skillAdrenaline", "skillSpecial"]; var _local8:Array = new Array(); _local8.push("Makes your serves and basic shots more powerful, giving opponent less time to react."); _local8.push("Makes your racket more nimble. The body inertia is not affected by this skill."); _local8.push("Makes your body lighter thus reducing inertia and generally mproving control."); _local8.push("Allows you to cover more court area, giving you more room for maneuver."); _local8.push("Improves adrenaline effects - the strength of slow-mo mode and its trigger position."); _local8.push("Improves power of special and super strikes, but makes them a little harder to pull off."); statSliders = new Array(); _local5 = 0; while (_local5 < 6) { _local10 = new StatSliderButton(_local6[_local5], _local7[_local5], _local8[_local5]); _local10.x = ((_local5)<3) ? 10 : 290; _local10.y = ((280 + (_local5 * 50)) - ((_local5)<3) ? 0 : 150); _local10.addEventListener(UIEvent.SLIDER_MINUS, uiSliderHandler); _local10.addEventListener(UIEvent.SLIDER_PLUS, uiSliderHandler); addChild(_local10); statSliders.push(_local10); _local5++; }; closeButton = ButtonFactory.getInstance().createFunctionalButton("Close", MenuView.CLOSE_CHARSHEET, ""); closeButton.x = 440; closeButton.y = 415; addChild(closeButton); } private function colorSelectHandler(_arg1:MouseEvent):void{ portrait.bitmapData = PortraitGenerator.getInstance().updateBigAvatarColors(ProfileController.getInstance().profile.colors); } private function applyDecor():void{ var _local1:Matrix = new Matrix(); nameLabel = new MenuNameLabel(); nameLabel.align = "center"; nameLabel.width = 560; nameLabel.x = 0; nameLabel.y = -2; addChild(nameLabel); graphics.lineStyle(4, 0xFFFFFF, 1); graphics.drawRect(0, 10, 560, 410); graphics.lineStyle(4, 0xFFFFFF, 0); graphics.beginFill(29116, 1); graphics.drawRect(0, 10, 560, 410); graphics.endFill(); graphics.lineStyle(4, 0xFFFFFF, 1); graphics.moveTo(0, 10); graphics.curveTo(0, 0, 10, 0); graphics.lineTo(550, 0); graphics.curveTo(560, 0, 560, 10); graphics.lineTo(560, 40); graphics.lineTo(0, 40); graphics.lineTo(0, 10); _local1.createGradientBox(10, 40, (Math.PI / 2)); graphics.lineStyle(4, 0xFFFFFF, 0); graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local1); graphics.curveTo(0, 0, 10, 0); graphics.lineTo(550, 0); graphics.curveTo(560, 0, 560, 10); graphics.lineTo(560, 40); graphics.lineTo(0, 40); graphics.lineTo(0, 10); graphics.endFill(); graphics.lineStyle(4, 0xFFFFFF, 1); graphics.moveTo(0, 410); graphics.lineTo(180, 410); graphics.curveTo(180, 420, 190, 420); graphics.lineTo(560, 420); graphics.curveTo(560, 430, 550, 430); graphics.lineTo(10, 430); graphics.curveTo(0, 430, 0, 420); graphics.lineTo(0, 410); _local1.createGradientBox(10, 20, (Math.PI / 2), 0, 410); graphics.lineStyle(4, 0xFFFFFF, 0); graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local1); graphics.lineTo(180, 410); graphics.curveTo(180, 420, 190, 420); graphics.lineTo(560, 420); graphics.curveTo(560, 430, 550, 430); graphics.lineTo(10, 430); graphics.curveTo(0, 430, 0, 420); graphics.lineTo(0, 410); graphics.endFill(); graphics.lineStyle(2, 0xFFFFFF, 1); graphics.drawRect(10, 50, 180, 200); _local1.createGradientBox(10, 200, (Math.PI / 2), 0, 50); graphics.lineStyle(4, 0xFFFFFF, 0); graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local1); graphics.drawRect(10, 50, 180, 200); graphics.endFill(); } public function update():void{ var _local1:Profile = ProfileController.getInstance().profile; nameLabel.text = ProfileController.getInstance().profile.name; portrait.bitmapData = PortraitGenerator.getInstance().generateBigAvatar(_local1.colors); freePointsLabel.text = ("Free points: " + _local1.freeStatPoints); var _local2:int; while (_local2 < statSliders.length) { statSliders[_local2].update(_local1[statSliders[_local2].actionTarget]); _local2++; }; _local2 = 0; while (_local2 < colorSelectors.length) { colorSelectors[_local2].update(); _local2++; }; var _local3:int = XMLReader.getInstance().readLevels((_local1.experienceLevel + 1)).experience; if (_local1.experienceLevel == 15){ trace("15"); _local3 = XMLReader.getInstance().readLevels(_local1.experienceLevel).experience; }; var _local4:int = XMLReader.getInstance().readLevels(_local1.experienceLevel).experience; var _local5:int = _local1.experience; experienceStripe.scaleX = ((_local5 - _local4) / (_local3 - _local4)); experienceLabel.text = ((_local5 + "/") + _local3); if (_local1.experienceLevel == 15){ experienceStripe.scaleX = 1; }; } private function uiSliderHandler(_arg1:UIEvent):void{ var _local2:Profile = ProfileController.getInstance().profile; if (_arg1.type == UIEvent.SLIDER_PLUS){ _arg1.target.update(_local2.updateIntParameter(_arg1.actionTarget, true)); }; if (_arg1.type == UIEvent.SLIDER_MINUS){ _arg1.target.update(_local2.updateIntParameter(_arg1.actionTarget, false)); }; freePointsLabel.text = ("Free points: " + ProfileController.getInstance().profile.freeStatPoints); } } }//package game.ui.charsheet
Section 193
//CharsheetButton (game.ui.charsheet.CharsheetButton) package game.ui.charsheet { import game.profile.*; import flash.display.*; import com.gskinner.motion.*; import game.portrait.*; import flash.geom.*; public class CharsheetButton extends SimpleButton { private var blinkTweenTimeLine:GTweenTimeline; private var nameLabel:NameLabel; private var portraitArray:Array; public function CharsheetButton(){ var _local4:Sprite; var _local5:Bitmap; var _local6:Sprite; var _local7:GTween; var _local8:GTween; super(); var _local1:BitmapData = new BitmapData(80, 80); portraitArray = new Array(); var _local2:Matrix = new Matrix(); _local2.createGradientBox(1, 20, (Math.PI / 2), 0, 80); var _local3:int; while (_local3 < 3) { _local4 = new Sprite(); _local4.graphics.lineStyle(4, 0xFFFFFF, 1); _local4.graphics.lineTo(80, 0); _local4.graphics.lineTo(80, 90); _local4.graphics.curveTo(80, 100, 70, 100); _local4.graphics.lineTo(10, 100); _local4.graphics.curveTo(0, 100, 0, 90); _local4.graphics.lineTo(0, 0); _local4.graphics.lineStyle(4, 0xFFFFFF, 0); if (_local3 == 0){ _local4.graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local2); upState = _local4; _local6 = new Sprite(); _local6.graphics.beginGradientFill("linear", [16576033, 16494651], [1, 1], [0, 0xFF], _local2); _local6.graphics.moveTo(0, 80); _local6.graphics.moveTo(80, 80); _local6.graphics.lineTo(80, 90); _local6.graphics.curveTo(80, 100, 70, 100); _local6.graphics.lineTo(10, 100); _local6.graphics.curveTo(0, 100, 0, 90); _local6.graphics.lineTo(0, 80); _local6.graphics.endFill(); _local6.alpha = 0; _local4.addChild(_local6); _local7 = new GTween(_local6, 0.01, {alpha:1}); _local8 = new GTween(_local6, 0.01, {alpha:0}); blinkTweenTimeLine = new GTweenTimeline(_local6, 1, null, {repeat:-1}); blinkTweenTimeLine.addTween(0, _local7); blinkTweenTimeLine.addTween(0.5, _local8); blinkTweenTimeLine.play(); }; if (_local3 == 1){ _local4.graphics.beginGradientFill("linear", [2863346, 31961], [1, 1], [0, 0xFF], _local2); hitTestState = _local4; overState = _local4; }; if (_local3 == 2){ _local4.graphics.beginGradientFill("linear", [31961, 2863346], [1, 1], [0, 0xFF], _local2); downState = _local4; }; _local4.graphics.lineTo(80, 0); _local4.graphics.lineTo(80, 90); _local4.graphics.curveTo(80, 100, 70, 100); _local4.graphics.lineTo(10, 100); _local4.graphics.curveTo(0, 100, 0, 90); _local4.graphics.lineTo(0, 0); _local4.graphics.endFill(); _local4.graphics.lineStyle(2, 0xFFFFFF, 1); _local4.graphics.moveTo(0, 80); _local4.graphics.lineTo(80, 80); nameLabel = new NameLabel(); nameLabel.text = "Character"; nameLabel.x = 0; nameLabel.y = 80; _local4.addChild(nameLabel); _local5 = new Bitmap(_local1); portraitArray.push(_local5); _local5.x = 0; _local4.addChild(_local5); _local3++; }; } public function update():void{ var _local1:BitmapData = PortraitGenerator.getInstance().generateSmallAvatar(ProfileController.getInstance().profile.colors); var _local2:int; while (_local2 < 3) { portraitArray[_local2].bitmapData.dispose(); portraitArray[_local2].bitmapData = _local1; _local2++; }; if (ProfileController.getInstance().profile.freeStatPoints > 0){ blinkTweenTimeLine.gotoAndPlay(0); } else { blinkTweenTimeLine.gotoAndStop(0); }; } } }//package game.ui.charsheet
Section 194
//ColorBox (game.ui.charsheet.ColorBox) package game.ui.charsheet { import flash.display.*; import flash.geom.*; public class ColorBox extends SimpleButton { private var colorLayersArray:Array; private var _active:Boolean; public function ColorBox(_arg1:uint){ var _local3:Sprite; var _local5:Sprite; var _local6:Sprite; var _local7:Sprite; super(); colorLayersArray = new Array(); var _local2:Matrix = new Matrix(); _local2.createGradientBox(1, 10, (Math.PI / 2)); _arg1 = (_arg1 & 0xFFFFFF); var _local4:int; while (_local4 < 3) { _local3 = new Sprite(); _local5 = new Sprite(); _local5.graphics.lineStyle(2, 0xFFFFFF, 1); _local5.graphics.drawRect(0, 0, 20, 10); _local5.graphics.lineStyle(4, 0xFFFFFF, 0); _local5.graphics.beginFill(0x999999); _local5.graphics.drawRect(0, 0, 20, 10); _local5.graphics.endFill(); _local3.addChild(_local5); _local6 = new Sprite(); _local6.graphics.beginFill(_arg1, 1); _local6.graphics.drawRect(0, 0, 20, 10); _local6.graphics.endFill(); _local3.addChild(_local6); colorLayersArray.push(_local6); _local7 = new Sprite(); if (_local4 == 0){ _local7.graphics.beginGradientFill("linear", [0xFFFFFF, 0], [0.5, 0.2], [0, 0xFF], _local2); upState = _local3; }; if (_local4 == 1){ _local7.graphics.beginGradientFill("linear", [0xFFFFFF, 0], [0.7, 0.2], [0, 0xFF], _local2); hitTestState = _local3; overState = _local3; }; if (_local4 == 2){ _local7.graphics.beginGradientFill("linear", [0, 0xFFFFFF], [0.2, 0.5], [0, 0xFF], _local2); downState = _local3; }; _local7.blendMode = BlendMode.HARDLIGHT; _local7.graphics.drawRect(0, 0, 20, 10); _local7.graphics.endFill(); _local3.addChild(_local7); _local4++; }; } public function get active():Boolean{ return (_active); } public function set active(_arg1:Boolean):void{ var _local2:int; _active = _arg1; if (_active){ _local2 = 0; while (_local2 < 3) { enabled = true; colorLayersArray[_local2].alpha = 1; _local2++; }; } else { _local2 = 0; while (_local2 < 3) { enabled = false; colorLayersArray[_local2].alpha = 0; _local2++; }; }; } } }//package game.ui.charsheet
Section 195
//ColorNameLabel (game.ui.charsheet.ColorNameLabel) package game.ui.charsheet { import flash.text.*; import game.*; import com.dimonte.ui.*; public class ColorNameLabel extends Label { public function ColorNameLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 14, 0xFFFFFF, true, true); textField.embedFonts = true; } override protected function kill():void{ } } }//package game.ui.charsheet
Section 196
//ColorSelector (game.ui.charsheet.ColorSelector) package game.ui.charsheet { import flash.events.*; import game.profile.*; import flash.display.*; import flash.utils.*; public class ColorSelector extends Sprite { private var colorBoxesColorDictionary:Dictionary; private var selectorSprite:Sprite; private var colorBoxesLevelDictionary:Dictionary; private var colorNumber:int; private var colorBoxes:Array; public function ColorSelector(_arg1:String, _arg2:int, _arg3:XMLList){ var _local6:ColorNameLabel; var _local7:uint; var _local8:ColorBox; super(); this.colorNumber = _arg2; var _local4:Profile = ProfileController.getInstance().profile; colorBoxesColorDictionary = new Dictionary(true); colorBoxesLevelDictionary = new Dictionary(true); selectorSprite = new Sprite(); selectorSprite.graphics.lineStyle(2, 0xFFFFFF, 1); selectorSprite.graphics.drawRect(0, 0, 20, 10); colorBoxes = new Array(); var _local5:int; while (_local5 < _arg3.children().length()) { _local7 = _arg3.children()[_local5]; _local8 = new ColorBox(_local7); _local8.x = (20 * _local5); addChild(_local8); colorBoxesColorDictionary[_local8] = uint(_arg3.children()[_local5]); colorBoxesLevelDictionary[_local8] = int(_arg3.children()[_local5].@level); _local8.addEventListener(MouseEvent.CLICK, colorClickHandler); colorBoxes.push(_local8); _local5++; }; _local6 = new ColorNameLabel(); _local6.text = _arg1; _local6.y = -18; addChild(_local6); addChild(selectorSprite); } private function colorClickHandler(_arg1:MouseEvent):void{ if ((_arg1.target as ColorBox).enabled){ ProfileController.getInstance().profile.colors[colorNumber] = colorBoxesColorDictionary[_arg1.target]; trace(("0x" + colorBoxesColorDictionary[_arg1.target].toString(16))); selectorSprite.x = (_arg1.target as ColorBox).x; }; } public function update():void{ var _local3:ColorBox; var _local1:Profile = ProfileController.getInstance().profile; var _local2:int; while (_local2 < colorBoxes.length) { _local3 = colorBoxes[_local2]; if (_local1.experienceLevel < colorBoxesLevelDictionary[_local3]){ _local3.active = false; } else { _local3.active = true; }; if (_local1.colors[colorNumber] == colorBoxesColorDictionary[_local3]){ selectorSprite.x = _local3.x; }; _local2++; }; } } }//package game.ui.charsheet
Section 197
//ExperienceLabel (game.ui.charsheet.ExperienceLabel) package game.ui.charsheet { import flash.text.*; import game.*; import com.dimonte.ui.*; public class ExperienceLabel extends Label { public function ExperienceLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textField.autoSize = TextFieldAutoSize.CENTER; textField.width = 200; textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 11, 0xFFFFFF, true, true, null, null, null, "center"); } } }//package game.ui.charsheet
Section 198
//FreePointsLabel (game.ui.charsheet.FreePointsLabel) package game.ui.charsheet { import flash.text.*; import game.*; import com.dimonte.ui.*; public class FreePointsLabel extends Label { public function FreePointsLabel(){ textField.embedFonts = true; textField.wordWrap = false; Font.registerFont(FontManager.LiberationSansBoldItalic); textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 20, 0xFFFFFF, true, true); } } }//package game.ui.charsheet
Section 199
//NameLabel (game.ui.charsheet.NameLabel) package game.ui.charsheet { import flash.display.*; import flash.text.*; import game.*; public class NameLabel extends Sprite { private var _text:String; protected var textField:TextField; public function NameLabel(){ textField = new TextField(); this.addChild(textField); textField.width = 80; textField.autoSize = TextFieldAutoSize.CENTER; textField.selectable = false; textField.embedFonts = true; Font.registerFont(FontManager.LiberationSansBoldItalic); textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 14, 0xFFFFFF, true, true, null, null, null, "center"); } public function set text(_arg1:String):void{ _text = _arg1; textField.text = _text; } public function get text():String{ return (_text); } } }//package game.ui.charsheet
Section 200
//StatSliderButton (game.ui.charsheet.StatSliderButton) package game.ui.charsheet { import flash.events.*; import game.ui.*; import flash.display.*; import flash.geom.*; public class StatSliderButton extends Sprite { private var tooltip:Tooltip; public var actionTarget:String; private var minusButton:SimpleButton; private var plusButton:SimpleButton; private var fullBars:Array; public var value:int; public function StatSliderButton(_arg1:String, _arg2:String, _arg3:String=""){ var _local6:Sprite; var _local7:StatSliderButtonLabel; var _local9:Sprite; var _local10:Sprite; super(); this.actionTarget = _arg2; fullBars = new Array(5); var _local4:Matrix = new Matrix(); _local4.createGradientBox(1, 20, (Math.PI / 2)); var _local5:int; while (_local5 < 5) { _local9 = new Sprite(); _local9.graphics.lineStyle(4, 0xFFFFFF, 1); _local9.graphics.drawRect(0, 0, 40, 20); _local9.graphics.lineStyle(4, 0xFFFFFF, 0); _local9.graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local4); _local9.graphics.drawRect(0, 0, 40, 20); _local9.graphics.endFill(); _local9.x = (30 + (_local5 * 40)); addChild(_local9); _local10 = new Sprite(); _local10.graphics.lineStyle(4, 0xFFFFFF, 1); _local10.graphics.drawRect(0, 0, 40, 20); _local10.graphics.lineStyle(4, 0xFFFFFF, 0); _local10.graphics.beginGradientFill("linear", [0xFFFFFF, 0xCCCCCC], [1, 1], [0, 0xFF], _local4); _local10.graphics.drawRect(0, 0, 40, 20); _local10.graphics.endFill(); _local10.x = (30 + (_local5 * 40)); addChild(_local10); fullBars[_local5] = _local10; _local5++; }; _local5 = 0; while (_local5 < 5) { if (_local5 < value){ fullBars[_local5].visible = true; } else { fullBars[_local5].visible = false; }; _local5++; }; minusButton = new SimpleButton(); _local5 = 0; while (_local5 < 3) { _local6 = new Sprite(); _local6.graphics.lineStyle(4, 0xFFFFFF, 1); _local6.graphics.lineTo(30, 0); _local6.graphics.lineTo(30, 20); _local6.graphics.lineTo(10, 20); _local6.graphics.curveTo(0, 20, 0, 10); _local6.graphics.lineTo(0, 0); _local6.graphics.lineStyle(4, 0xFFFFFF, 0); if (_local5 == 0){ _local6.graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local4); minusButton.upState = _local6; }; if (_local5 == 1){ _local6.graphics.beginGradientFill("linear", [2863346, 31961], [1, 1], [0, 0xFF], _local4); minusButton.hitTestState = _local6; minusButton.overState = _local6; }; if (_local5 == 2){ _local6.graphics.beginGradientFill("linear", [31961, 2863346], [1, 1], [0, 0xFF], _local4); minusButton.downState = _local6; }; _local6.graphics.lineTo(30, 0); _local6.graphics.lineTo(30, 20); _local6.graphics.lineTo(10, 20); _local6.graphics.curveTo(0, 20, 0, 10); _local6.graphics.lineTo(0, 0); _local6.graphics.endFill(); _local7 = new StatSliderButtonLabel(); _local7.text = "-"; _local7.x = 9; _local7.y = -8; _local6.addChild(_local7); _local5++; }; minusButton.addEventListener(MouseEvent.CLICK, minusHandler); addChild(minusButton); plusButton = new SimpleButton(); _local5 = 0; while (_local5 < 3) { _local6 = new Sprite(); _local6.graphics.lineStyle(4, 0xFFFFFF, 1); _local6.graphics.lineTo(30, 0); _local6.graphics.lineTo(30, 10); _local6.graphics.curveTo(30, 20, 20, 20); _local6.graphics.lineTo(0, 20); _local6.graphics.lineTo(0, 0); _local6.graphics.lineStyle(4, 0xFFFFFF, 0); if (_local5 == 0){ _local6.graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local4); plusButton.upState = _local6; }; if (_local5 == 1){ _local6.graphics.beginGradientFill("linear", [2863346, 31961], [1, 1], [0, 0xFF], _local4); plusButton.hitTestState = _local6; plusButton.overState = _local6; }; if (_local5 == 2){ _local6.graphics.beginGradientFill("linear", [31961, 2863346], [1, 1], [0, 0xFF], _local4); plusButton.downState = _local6; }; _local6.graphics.lineTo(30, 0); _local6.graphics.lineTo(30, 10); _local6.graphics.curveTo(30, 20, 20, 20); _local6.graphics.lineTo(0, 20); _local6.graphics.lineTo(0, 0); _local6.graphics.endFill(); _local7 = new StatSliderButtonLabel(); _local7.text = "+"; _local7.x = 5; _local7.y = -6; _local6.addChild(_local7); _local5++; }; plusButton.x = 230; plusButton.addEventListener(MouseEvent.CLICK, plusHandler); addChild(plusButton); var _local8:StatSliderButtonLabel = new StatSliderButtonLabel(); _local8.text = _arg1; _local8.y = -30; addChild(_local8); tooltip = new Tooltip(); tooltip.text = _arg3; addEventListener(MouseEvent.ROLL_OVER, showTooltip, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, hideTooltip, false, 0, true); TopLevel.overlayLayer.addChild(tooltip); } private function hideTooltip(_arg1:MouseEvent):void{ tooltip.hide(); } private function barClickListener(_arg1:MouseEvent):void{ var _local2:UIEvent = new UIEvent(UIEvent.SPECIAL, "setTo", actionTarget, _arg1.target.name.split(/(\d)/)[1]); } private function showTooltip(_arg1:MouseEvent):void{ tooltip.show(); } private function plusHandler(_arg1:MouseEvent):void{ dispatchEvent(new UIEvent(UIEvent.SLIDER_PLUS, "", actionTarget, "", true)); } public function update(_arg1:int):void{ this.value = _arg1; var _local2:int; while (_local2 < 5) { if (_local2 < _arg1){ fullBars[_local2].visible = true; } else { fullBars[_local2].visible = false; }; _local2++; }; } private function minusHandler(_arg1:MouseEvent):void{ dispatchEvent(new UIEvent(UIEvent.SLIDER_MINUS, "", actionTarget, "", true)); } } }//package game.ui.charsheet
Section 201
//StatSliderButtonLabel (game.ui.charsheet.StatSliderButtonLabel) package game.ui.charsheet { import flash.text.*; import game.*; import com.dimonte.ui.*; public class StatSliderButtonLabel extends Label { public function StatSliderButtonLabel(){ textField.embedFonts = true; textField.wordWrap = false; textField.width = 10; textField.autoSize = TextFieldAutoSize.LEFT; Font.registerFont(FontManager.LiberationSansBoldItalic); textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 24, 0xFFFFFF, true, true); } override public function set text(_arg1:String):void{ super.text = _arg1; } override public function get text():String{ return (super.text); } override protected function kill():void{ } } }//package game.ui.charsheet
Section 202
//Tooltip (game.ui.charsheet.Tooltip) package game.ui.charsheet { import flash.events.*; import flash.display.*; import flash.text.*; import game.*; import com.dimonte.ui.*; public class Tooltip extends Sprite { protected var label:Label; public function Tooltip(){ Font.registerFont(FontManager.LiberationSansBoldItalic); label = new Label(); addChild(label); drawBG(); setupLabel(); visible = false; addEventListener(Event.REMOVED_FROM_STAGE, removedHandler); } protected function removedHandler(_arg1:Event):void{ removeChild(label); label = null; } public function set text(_arg1:String):void{ label.text = _arg1; } public function hide(_arg1:Event=null):void{ visible = false; TopLevel.stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener); } protected function setupLabel():void{ label.x = 4; label.y = 4; label.width = 192; label.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 13, 0xFFFFFF); } protected function drawBG():void{ graphics.beginFill(2730978, 0.9); graphics.lineStyle(1, 0xFFFFFF, 1, true); graphics.drawRoundRect(0, 0, 200, 55, 10, 10); graphics.endFill(); } private function mouseMoveListener(_arg1:MouseEvent):void{ x = (TopLevel.overlayLayer.mouseX + 10); if ((x + width) > TopLevel.stage.stageWidth){ x = (TopLevel.stage.stageWidth - width); }; y = (TopLevel.overlayLayer.mouseY + 10); if ((y + height) > TopLevel.stage.stageHeight){ y = (y = ((TopLevel.overlayLayer.mouseY - height) - 10)); }; } public function get text():String{ return (label.text); } public function show(_arg1:Event=null):void{ visible = true; TopLevel.overlayLayer.setChildIndex(this, (TopLevel.overlayLayer.numChildren - 1)); TopLevel.stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener, false, 0, true); mouseMoveListener(null); } } }//package game.ui.charsheet
Section 203
//AchievementDescription (game.ui.AchievementDescription) package game.ui { import flash.events.*; import flash.display.*; import flash.text.*; import game.*; import game.ui.charsheet.*; public class AchievementDescription extends Tooltip { public function attachToDisplayObject(_arg1:DisplayObject):void{ _arg1.addEventListener(MouseEvent.ROLL_OVER, show, false, 0, true); _arg1.addEventListener(MouseEvent.ROLL_OUT, hide, false, 0, true); } override public function set text(_arg1:String):void{ super.text = _arg1; fitGraphicsToText(); } private function fitGraphicsToText():void{ var _local1:Number = label.getBounds(this).height; graphics.clear(); graphics.beginFill(2730978, 0.9); graphics.lineStyle(1, 0xFFFFFF, 1, true); graphics.drawRoundRect(0, 0, 300, (_local1 + 8), 10, 10); graphics.endFill(); } override protected function setupLabel():void{ label.x = 4; label.y = 4; label.width = 292; label.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 13, 0xFFFFFF); } override protected function drawBG():void{ graphics.beginFill(2730978, 0.9); graphics.lineStyle(1, 0xFFFFFF, 1, true); graphics.drawRoundRect(0, 0, 300, 60, 10, 10); graphics.endFill(); } override protected function removedHandler(_arg1:Event):void{ super.removedHandler(_arg1); } } }//package game.ui
Section 204
//AchievementOverlay (game.ui.AchievementOverlay) package game.ui { import flash.display.*; import game.sound.*; import game.events.*; import com.gskinner.motion.*; import flash.text.*; import game.*; import flash.geom.*; import com.dimonte.ui.*; import caurina.transitions.*; public class AchievementOverlay extends Sprite { private const delay:Number = 2; private const tweenTime:Number = 0.3; private var message:Sprite; private var tweenOut:GTween; private var tweenTimeline:GTweenTimeline; private var messageQueue:Array; private var block:Boolean; private var tweenIn:GTween; public function AchievementOverlay(){ messageQueue = new Array(); message = new Sprite(); tweenIn = new GTween(message, tweenTime); tweenIn.ease = Equations.easeOutSine; tweenOut = new GTween(message, tweenTime); tweenOut.ease = Equations.easeInSine; tweenTimeline = new GTweenTimeline(message, ((tweenTime * 2) + delay)); tweenTimeline.addTween(0, tweenIn); tweenTimeline.addTween((tweenTime + delay), tweenOut); tweenTimeline.addCallback(((tweenTime * 2) + delay), messageDisplayed); tweenTimeline.pause(); this.addChild(message); } private function messageDisplayed():void{ tweenTimeline.gotoAndStop(0); tweenTimeline.pause(); removeChild(message); while (message.numChildren > 0) { message.removeChildAt(0); }; block = false; displayNext(); } public function destroy():void{ message = null; tweenTimeline.pause(); tweenTimeline = null; tweenIn.pause(); tweenIn = null; tweenOut.pause(); tweenOut = null; do { } while (messageQueue.pop()); messageQueue = null; } public function playMessages():void{ displayNext(); } private function displayNext():void{ if (!block){ if (messageQueue.length > 0){ block = true; addChild(message); message.addChild(messageQueue.shift()); message.y = 440; message.x = (300 - (message.width / 2)); message.alpha = 0; tweenIn.setProperty("y", 420); tweenIn.setProperty("alpha", 1); tweenOut.setProperty("y", 440); tweenOut.setProperty("alpha", 0); tweenTimeline.play(); SoundManager.getInstance().playSound(SFXLibrary.ACHIEVEMENT); } else { dispatchEvent(new MessageEvent(MessageEvent.QUEUE_EMPTY)); }; }; } public function addAchivementNotification(_arg1:String):void{ var _local2:Sprite = new Sprite(); var _local3:Label = new Label(); _local3.autoSize = TextFieldAutoSize.LEFT; _local3.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 16, 0xFFFFFF, true, true); _local3.tField.wordWrap = false; _local3.text = ("Achievement unlocked: " + _arg1); var _local4:Number = _local3.getBounds(this).width; _local3.x = 20; _local3.y = -1; _local2.graphics.beginFill(2730978, 1); var _local5:Matrix = new Matrix(); _local5.createGradientBox(10, 20, (Math.PI / 2)); _local2.graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local5); _local2.graphics.lineStyle(2, 0xEEEEEE, 1); _local2.graphics.drawRoundRect(0, 0, (_local4 + 40), 20, 20, 20); _local2.graphics.endFill(); _local2.addChild(_local3); messageQueue.push(_local2); } } }//package game.ui
Section 205
//AchievementPane (game.ui.AchievementPane) package game.ui { import game.profile.*; import flash.display.*; public class AchievementPane extends Sprite { public function AchievementPane(){ var _local3:Sprite; super(); var _local1:Profile = ProfileController.getInstance().profile; var _local2:AwardSpriteSheet = new AwardSpriteSheet(); _local3 = Sprite(_local2.getChildByName("shadow")); addChild(_local3); _local3 = Sprite(_local2.getChildByName("amateurCup")); if (!_local1.achievements[0]){ _local3.visible = false; }; setupDescription(_local3, "AMATEUR CUP\nAwarded for beating the best amateur player."); addChild(_local3); _local3 = Sprite(_local2.getChildByName("semiproCup")); if (!_local1.achievements[1]){ _local3.visible = false; }; setupDescription(_local3, "SEMI-PRO TROPHY\nAwarded for beating the best semi-pro player."); addChild(_local3); _local3 = Sprite(_local2.getChildByName("worldCup")); if (!_local1.achievements[2]){ _local3.visible = false; }; setupDescription(_local3, "WORLD CHAMPIONSHIP CUP\nAwarded for beating the current world champion."); addChild(_local3); _local3 = Sprite(_local2.getChildByName("grandbashCup")); if (!_local1.achievements[3]){ _local3.visible = false; }; setupDescription(_local3, "GRAND BASH TROPHY\nAwarded for beating the best player there ever was. That is, until you came along. Congratulations!"); addChild(_local3); _local3 = Sprite(_local2.getChildByName("rocketRacket")); if (!_local1.achievements[5]){ _local3.visible = false; }; setupDescription(_local3, "ROCKET RACKET\nAwarded for striking a ball with a mind-blowing speed of more than 50 m/s."); addChild(_local3); _local3 = Sprite(_local2.getChildByName("defender")); if (!_local1.achievements[6]){ _local3.visible = false; }; setupDescription(_local3, "DEFENDER\nAwarded for not letting the air-scorching,\n 80 meters per second topping ball past you."); addChild(_local3); _local3 = Sprite(_local2.getChildByName("jetBall")); if (!_local1.achievements[7]){ _local3.visible = false; }; setupDescription(_local3, "JET BALL\nAwarded for sending a nice little and very very fast present to the opponent."); addChild(_local3); _local3 = Sprite(_local2.getChildByName("wallMaster")); if (!_local1.achievements[8]){ _local3.visible = false; }; setupDescription(_local3, "WALL MASTER\nAwarded for succefully deflecting 30 balls coming from that sneaky wall, one after another. Now be a good chap, go and win some tournaments. "); addChild(_local3); _local3 = Sprite(_local2.getChildByName("flawlessVictory")); if (!_local1.achievements[9]){ _local3.visible = false; }; setupDescription(_local3, "FLAWLESS VICTORY\nYou made your opponent cry like a little girl. You must be very proud of yourself."); addChild(_local3); } private function setupDescription(_arg1:Sprite, _arg2:String):void{ var _local3:AchievementDescription = new AchievementDescription(); _local3.text = _arg2; _local3.attachToDisplayObject(_arg1); TopLevel.overlayLayer.addChild(_local3); } } }//package game.ui
Section 206
//BigExperienceLabel (game.ui.BigExperienceLabel) package game.ui { import flash.text.*; import game.*; import com.dimonte.ui.*; public class BigExperienceLabel extends Label { public function BigExperienceLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textField.autoSize = TextFieldAutoSize.CENTER; textField.width = 200; textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, true, true, null, null, null, "center"); } } }//package game.ui
Section 207
//ButtonFactory (game.ui.ButtonFactory) package game.ui { import flash.display.*; import flash.text.*; import game.*; public class ButtonFactory { private var label:TextField; private var sourceSheet:UISpriteSheet; private var labelFormat:TextFormat; private var toggleButton:ToggleButton; private var downState:Sprite; private var menuButton:MenuButton; private var sliderButton:SliderButton; private var upState:Sprite; private var overState:Sprite; private static const SPRITE_OVER_STATE:String = "OverState"; private static const TOGGLE_OFF:String = "toggleOff"; private static const SPRITE_UP_STATE:String = "UpState"; private static const SPRITE_DOWN_STATE:String = "DownState"; private static const SPRITE_F_UP_STATE:String = "functionalUpState"; private static const TOGGLE_ON:String = "toggleOn"; private static const SPRITE_DISABLED:String = "Disabled"; private static const SPRITE_F_OVER_STATE:String = "functionalOverState"; private static const SPRITE_F_DOWN_STATE:String = "functionalDownState"; private static var instance:ButtonFactory; public function ButtonFactory(_arg1:PrivateClass){ Font.registerFont(FontManager.LiberationSansBoldItalic); labelFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 4294967295, true, true); } public function createSliderButton(_arg1:String, _arg2:String):SliderButton{ sourceSheet = new UISpriteSheet(); sliderButton = new SliderButton((sourceSheet.getChildByName("sliderButton") as Sprite), _arg2); sliderButton.addChild(createLabel(_arg1, 180)); return (sliderButton); } public function createToggleButton(_arg1:String, _arg2:String, _arg3:String):ToggleButton{ sourceSheet = new UISpriteSheet(); upState = (sourceSheet.getChildByName((_arg1 + SPRITE_UP_STATE)) as Sprite); upState.x = 0; upState.y = 0; upState.addChild(createLabel(_arg2, 280)); overState = (sourceSheet.getChildByName((_arg1 + SPRITE_OVER_STATE)) as Sprite); overState.x = 0; overState.y = 0; overState.addChild(createLabel(_arg2, 280)); downState = (sourceSheet.getChildByName((_arg1 + SPRITE_DOWN_STATE)) as Sprite); downState.x = 0; downState.y = 0; downState.addChild(createLabel(_arg2, 280)); var _local4:Sprite = (sourceSheet.getChildByName(TOGGLE_ON) as Sprite); _local4.x = 0; _local4.y = 0; var _local5:Sprite = (sourceSheet.getChildByName(TOGGLE_OFF) as Sprite); _local5.x = 0; _local5.y = 0; toggleButton = new ToggleButton(upState, overState, downState, _local4, _local5, _arg3); return (toggleButton); } public function createMenuButton(_arg1:String, _arg2:String, _arg3:String="", _arg4:String="", _arg5:Boolean=true):MenuButton{ sourceSheet = new UISpriteSheet(); if (_arg5){ upState = (sourceSheet.getChildByName((_arg1 + SPRITE_UP_STATE)) as Sprite); upState.x = 0; upState.y = 0; upState.addChild(createLabel(_arg2, 280)); overState = (sourceSheet.getChildByName((_arg1 + SPRITE_OVER_STATE)) as Sprite); overState.x = 0; overState.y = 0; overState.addChild(createLabel(_arg2, 280)); downState = (sourceSheet.getChildByName((_arg1 + SPRITE_DOWN_STATE)) as Sprite); downState.x = 0; downState.y = 0; downState.addChild(createLabel(_arg2, 280)); menuButton = new MenuButton(upState, overState, downState, _arg3, _arg4); } else { upState = (sourceSheet.getChildByName((_arg1 + SPRITE_DISABLED)) as Sprite); upState.x = 0; upState.y = 0; upState.addChild(createLabel(_arg2, 280)); menuButton = new MenuButton(upState, null, null, null, null, false); }; return (menuButton); } public function createFunctionalButton(_arg1:String, _arg2:String, _arg3:String):MenuButton{ sourceSheet = new UISpriteSheet(); upState = new Sprite(); overState = new Sprite(); downState = new Sprite(); upState = (sourceSheet.getChildByName(SPRITE_F_UP_STATE) as Sprite); upState.x = 0; upState.y = 0; upState.addChild(createLabel(_arg1)); overState = (sourceSheet.getChildByName(SPRITE_F_OVER_STATE) as Sprite); overState.x = 0; overState.y = 0; overState.addChild(createLabel(_arg1)); downState = (sourceSheet.getChildByName(SPRITE_F_DOWN_STATE) as Sprite); downState.x = 0; downState.y = 0; downState.addChild(createLabel(_arg1)); menuButton = new MenuButton(upState, overState, downState, _arg2, _arg3); return (menuButton); } private function createLabel(_arg1:String, _arg2:int=80, _arg3:int=12):TextField{ label = new TextField(); label.defaultTextFormat = labelFormat; label.embedFonts = true; label.antiAliasType = AntiAliasType.ADVANCED; label.text = _arg1; label.selectable = false; label.multiline = false; label.x = _arg3; label.y = -2; label.width = _arg2; label.height = 20; return (label); } public static function getInstance():ButtonFactory{ if (instance){ return (instance); }; instance = new ButtonFactory(new PrivateClass()); return (instance); } } }//package game.ui class PrivateClass { private function PrivateClass(){ } }
Section 208
//ButtonLabel (game.ui.ButtonLabel) package game.ui { import flash.text.*; import game.*; import com.dimonte.ui.*; public class ButtonLabel extends Label { public function ButtonLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textField.autoSize = TextFieldAutoSize.LEFT; textField.width = 260; textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, true, true, null, null, null, "left"); } public function forceKill():void{ super.kill(); } override protected function kill():void{ } } }//package game.ui
Section 209
//CreditsPane (game.ui.CreditsPane) package game.ui { import flash.events.*; import flash.display.*; import flash.text.*; import game.*; import flash.net.*; import com.dimonte.ui.*; public class CreditsPane extends Sprite { public function CreditsPane(){ var _local1:int; var _local6:Label; super(); _local1 = 230; var _local2 = 260; var _local3 = 300; var _local4:TextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 14, 4294967295); _local4.align = "right"; var _local5:Label = new Label(); _local5.width = _local1; _local5.x = 20; _local5.y = 10; _local5.textFormat = _local4; _local5.text = "developed by"; addChild(_local5); _local6 = new Label(); _local6.width = _local1; _local6.x = 20; _local6.y = 40; _local6.textFormat = _local4; _local6.text = "sponsored by"; addChild(_local6); var _local7:Label = new Label(); _local7.width = _local1; _local7.x = 20; _local7.y = 70; _local7.textFormat = _local4; _local7.text = "programming & artwork"; addChild(_local7); var _local8:Label = new Label(); _local8.width = _local1; _local8.x = 20; _local8.y = 100; _local8.textFormat = _local4; _local8.text = "ragdoll physics"; addChild(_local8); var _local9:Label = new Label(); _local9.width = _local1; _local9.x = 20; _local9.y = 130; _local9.textFormat = _local4; _local9.text = "music"; addChild(_local9); var _local10:Label = new Label(); _local10.width = _local1; _local10.x = 20; _local10.y = 160; _local10.textFormat = _local4; _local10.text = "special thanks"; addChild(_local10); _local4.align = "left"; var _local11:Label = new Label(); _local11.width = 300; _local11.x = _local2; _local11.y = 10; _local11.textFormat = _local4; _local11.text = "Sphaera Obscura"; addChild(_local11); _local11.buttonMode = true; _local11.useHandCursor = true; _local11.addEventListener(MouseEvent.CLICK, sphaeraClick, false, 0, true); var _local12:Label = new Label(); _local12.width = 300; _local12.x = _local2; _local12.y = 40; _local12.textFormat = _local4; _local12.text = "Gamesfree.com"; addChild(_local12); _local12.buttonMode = true; _local12.useHandCursor = true; _local12.addEventListener(MouseEvent.CLICK, gamesfreeClick, false, 0, true); var _local13:Label = new Label(); _local13.width = 300; _local13.x = _local2; _local13.y = 70; _local13.textFormat = _local4; _local13.text = "Dmitriy Barabanschikov"; addChild(_local13); var _local14:Label = new Label(); _local14.width = 300; _local14.x = _local2; _local14.y = 100; _local14.textFormat = _local4; _local14.text = "Box2D"; addChild(_local14); var _local15:Label = new Label(); _local15.width = 300; _local15.x = _local2; _local15.y = 130; _local15.textFormat = _local4; _local15.text = "LIQUID LOUNGE by rooks"; addChild(_local15); var _local16:Label = new Label(); _local16.width = 300; _local16.x = _local2; _local16.y = 160; _local16.textFormat = _local4; _local16.text = "Binsentsu, Funteru, Gadzhi, NeiTto\nNikita \"Punnyo\" Razuev, Samaerro"; addChild(_local16); } private function sphaeraClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.sphaeraobscura.com"), "_blank"); } private function gamesfreeClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamesfree.com"), "_blank"); } } }//package game.ui
Section 210
//DeleteButtonLabel (game.ui.DeleteButtonLabel) package game.ui { import flash.text.*; import game.*; import com.dimonte.ui.*; public class DeleteButtonLabel extends Label { public function DeleteButtonLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textField.autoSize = TextFieldAutoSize.CENTER; textField.width = 80; textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 0xFFFFFF, true, true, null, null, null, "center"); } public function forceKill():void{ super.kill(); } override protected function kill():void{ } } }//package game.ui
Section 211
//LevelLabel (game.ui.LevelLabel) package game.ui { import flash.text.*; import game.*; import com.dimonte.ui.*; public class LevelLabel extends Label { public function LevelLabel(){ Font.registerFont(FontManager.LiberationSansBoldItalic); textField.autoSize = TextFieldAutoSize.CENTER; textField.width = 200; textField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 24, 0xFFFFFF, true, true, null, null, null, "center"); } } }//package game.ui
Section 212
//Menu (game.ui.Menu) package game.ui { import flash.events.*; import flash.display.*; public class Menu extends Sprite { public function Menu(){ this.addEventListener(Event.REMOVED_FROM_STAGE, removeHandler); } public function addButton(_arg1:DisplayObject):void{ this.addChild(_arg1); } protected function removeHandler(_arg1:Event):void{ this.removeEventListener(Event.REMOVED_FROM_STAGE, removeHandler); while (numChildren > 0) { removeChildAt(0); }; } } }//package game.ui
Section 213
//MenuButton (game.ui.MenuButton) package game.ui { import flash.events.*; import flash.display.*; import game.sound.*; public class MenuButton extends SimpleButton { public var actionType:String; public var actionTarget:String; public function MenuButton(_arg1:Sprite, _arg2:Sprite, _arg3:Sprite, _arg4:String, _arg5:String, _arg6:Boolean=true){ this.upState = _arg1; this.overState = _arg2; this.downState = _arg3; this.hitTestState = this.overState; this.actionType = _arg4; this.actionTarget = _arg5; this.enabled = _arg6; this.addEventListener(Event.REMOVED_FROM_STAGE, removalHandler, false, 0, true); this.addEventListener(MouseEvent.CLICK, clickHandler, false, 0, true); this.addEventListener(MouseEvent.ROLL_OVER, rollOverHandler, false, 0, true); } private function clickHandler(_arg1:MouseEvent):void{ if (this.enabled){ dispatchEvent(new UIEvent(UIEvent.BUTTON_CLICK, actionType, actionTarget, "", true)); SoundManager.getInstance().playSound(SFXLibrary.BUTTON); }; } protected function removalHandler(_arg1:Event):void{ this.removeEventListener(Event.REMOVED_FROM_STAGE, removalHandler); this.removeEventListener(MouseEvent.CLICK, clickHandler); this.upState = null; this.overState = null; this.downState = null; this.hitTestState = null; } private function rollOverHandler(_arg1:MouseEvent):void{ } } }//package game.ui
Section 214
//MenuController (game.ui.MenuController) package game.ui { import flash.display.*; import game.match.*; public class MenuController { private var menuView:MenuView; private static var instance:MenuController; public function MenuController(_arg1:PrivateClass){ menuView = new MenuView(); } public function showResults(_arg1:MatchResult, _arg2:String):void{ menuView.returnTo = _arg2; menuView.showResultMenu(_arg1); } public function callMenu(_arg1:String):void{ menuView.showMenuByName(_arg1); } public function addViewToContainer(_arg1:DisplayObjectContainer):void{ _arg1.addChild(menuView); } public static function getInstance():MenuController{ if (!instance){ instance = new MenuController(new PrivateClass()); }; return (instance); } } }//package game.ui class PrivateClass { private function PrivateClass(){ } }
Section 215
//MenuFactory (game.ui.MenuFactory) package game.ui { import game.profile.*; import flash.display.*; import flash.text.*; import game.*; import game.descriptors.*; import flash.geom.*; import com.dimonte.ui.*; public class MenuFactory { private var enabled:Boolean; private var menuElementsList:XMLList; private var restriction:XMLList; private var actionType:String; private var curX:Number; private var curY:Number; private var menu:Menu; private var profile:Profile; private var actionTarget:String; private var altState:XMLList; private var label:String; private var buttonFactory:ButtonFactory; private var button:DisplayObject; private var xmlReader:XMLReader; private var spriteName:String; private static const RTYPE_BOOLEAN:String = "boolean"; private static const ELEMENT_TOGGLE_BUTTON:String = "toggleButton"; private static const START_X:int = 145; private static const ADD_X:int = 0; private static const START_Y:int = 210; private static const ELEMENT_SLIDER:String = "sliderButton"; public static const MAIN_MENU:String = "main"; private static const ELEMENT_BACK_BUTTON:String = "backButton"; private static const RTYPE_BOOLARRAY:String = "boolArray"; private static const ADD_Y:int = 5; private static const ELEMENT_BUTTON:String = "button"; private static var instance:MenuFactory; public function MenuFactory(_arg1:PrivateClass){ xmlReader = XMLReader.getInstance(); profile = ProfileController.getInstance().profile; } public function createStartMenu(_arg1:String, _arg2:String):Menu{ menu = new Menu(); var _local3:ActorDescriptor = ActorConverter.getInstance().makeActorFromXMLList(xmlReader.readOpponent(_arg1)); if (_arg1 == "training"){ _local3 = ActorConverter.getInstance().makeActorFromProfile(ProfileController.getInstance().profile); _local3.name = "Training mode"; _local3.description = "Practice with a simple rebounding wall. Bottom pane will show your shot streaks while the top pane will show your last strike speed."; }; applyMenuDecor(menu, _local3.name); var _local4:OpponentDescriptionField = new OpponentDescriptionField(_local3); menu.addChild(_local4); button = buttonFactory.createFunctionalButton("Back", MenuView.OPEN_MENU, _arg2); button.y = 420; button.x = 10; menu.addButton(button); button = buttonFactory.createFunctionalButton("Start", MenuView.CONFIRM_START, _arg1); button.y = 420; button.x = 470; menu.addButton(button); return (menu); } private function applyMenuDecor(_arg1:Menu, _arg2:String):void{ var _local3:Sprite = (new UISpriteSheet() as Sprite); var _local4:DisplayObject = _local3.getChildByName("nameStripe"); _local4.x = 0; _local4.y = 150; _arg1.addChild(_local4); _local4 = _local3.getChildByName("bottomStripe"); _local4.x = 0; _local4.y = 425; _arg1.addChild(_local4); _local4 = null; var _local5:MenuNameLabel = new MenuNameLabel(); _local5.align = "center"; _local5.text = _arg2; _local5.width = 600; _local5.x = 0; _local5.y = 147; _arg1.addChild(_local5); _local5 = null; _local3 = null; } public function createMenu(_arg1:String):Menu{ var _local2:XML; var _local3:MenuButton; profile = ProfileController.getInstance().profile; menu = new Menu(); menuElementsList = xmlReader.readMenu(_arg1).child("element"); curY = START_Y; curX = START_X; applyMenuDecor(menu, xmlReader.readMenu(_arg1).@name); for each (_local2 in menuElementsList) { if (_local2.type == ELEMENT_BUTTON){ label = _local2.label; enabled = true; if (_local2.child("sprite").length() > 0){ spriteName = _local2.sprite; } else { spriteName = "button"; }; if (_local2.child("altState").length() > 0){ altState = (_local2.child("altState") as XMLList); if (altState.@type == RTYPE_BOOLARRAY){ if (profile[altState.@property][altState.@key]){ if (altState.child("label").length() > 0){ label = altState.label; }; if (altState.child("spriteName").length() > 0){ spriteName = altState.spriteName; }; }; } else { if (altState.@type == RTYPE_BOOLEAN){ if (profile[altState.@property]){ if (altState.child("label").length() > 0){ label = altState.label; }; if (altState.child("spriteName").length() > 0){ spriteName = altState.spriteName; }; }; }; }; }; if (_local2.child("restriction").length() > 0){ restriction = (_local2.child("restriction") as XMLList); if (restriction.@type == RTYPE_BOOLARRAY){ if (!profile[restriction.@property][restriction.@key]){ enabled = false; if (restriction.child("label").length() > 0){ label = restriction.label; }; if (restriction.child("spriteName").length() > 0){ spriteName = restriction.spriteName; }; }; }; }; button = buttonFactory.createMenuButton(spriteName, label, _local2.action.@type, _local2.action, enabled); button.y = curY; button.x = curX; menu.addButton(button); curY = (curY + (button.height + 5)); curX = (curX + ADD_X); }; if (_local2.type == ELEMENT_SLIDER){ button = buttonFactory.createSliderButton(_local2.label, _local2.action); button.y = curY; button.x = curX; menu.addButton(button); curY = (curY + (button.height + 5)); curX = (curX + ADD_X); }; if (_local2.type == ELEMENT_BACK_BUTTON){ button = buttonFactory.createFunctionalButton(_local2.label, _local2.action.@type, _local2.action); button.y = 420; button.x = 10; menu.addButton(button); }; if (_local2.type == ELEMENT_TOGGLE_BUTTON){ if (_local2.child("sprite").length() > 0){ spriteName = _local2.sprite; } else { spriteName = "button"; }; button = buttonFactory.createToggleButton(spriteName, _local2.label, _local2.action); button.y = curY; button.x = curX; menu.addButton(button); curY = (curY + (button.height + 5)); curX = (curX + ADD_X); }; button = null; }; if (_arg1 == "main"){ _local3 = buttonFactory.createFunctionalButton("Credits", MenuView.OPEN_MENU, "credits"); _local3.x = 470; _local3.y = 420; menu.addButton(_local3); }; return (menu); } public function createProfileCreationMenu():ProfileCreationMenu{ var _local1:ProfileCreationMenu = new ProfileCreationMenu(); return (_local1); } public function createTextMenu(_arg1:String):Menu{ var _local2:String = xmlReader.readMenu(_arg1).child("name").text(); var _local3:String = xmlReader.readMenu(_arg1).child("text").text(); menu = new Menu(); menu.graphics.beginFill(29116, 0.5); menu.graphics.drawRect(20, 180, 560, 250); menu.graphics.endFill(); var _local4:Label = new Label(); var _local5:TextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 14, 4294967295); _local5.indent = 5; _local5.leading = 1.2; _local5.align = "justify"; _local5.kerning = true; _local4.textFormat = _local5; _local4.embedFonts = true; _local4.text = _local3; _local4.x = 40; _local4.y = 198; _local4.width = 520; menu.addChild(_local4); applyMenuDecor(menu, _local2); button = buttonFactory.createFunctionalButton("Back", MenuView.OPEN_MENU, "main"); button.y = 420; button.x = 10; menu.addButton(button); return (menu); } public function createProfilesMenu():Menu{ var _local1:ProfilesMenu = new ProfilesMenu(START_X, START_Y); applyMenuDecor(_local1, "Select profile"); return (_local1); } public function createAchievementMenu():Menu{ menu = new Menu(); menu.graphics.beginFill(29116, 0.5); menu.graphics.drawRect(20, 180, 560, 250); menu.graphics.endFill(); var _local1:AchievementPane = new AchievementPane(); _local1.x = 20; _local1.y = 195; menu.addChild(_local1); applyMenuDecor(menu, "Achievements"); button = buttonFactory.createFunctionalButton("Back", MenuView.OPEN_MENU, "main"); button.y = 420; button.x = 10; menu.addButton(button); return (menu); } public function createPauseMenu():Menu{ menu = new PauseMenu(); menu.graphics.beginFill(0xFFFFFF, 0.2); menu.graphics.drawRect(0, 0, 600, 450); menu.graphics.endFill(); var _local1:Matrix = new Matrix(); _local1.createGradientBox(10, 450, (Math.PI / 2)); menu.graphics.beginGradientFill("linear", [29116, 2730978], [1, 0], [0, 0xFF], _local1); menu.graphics.drawRect(100, 0, 400, 450); menu.graphics.endFill(); curY = 160; curX = 140; button = buttonFactory.createMenuButton("button", "Continue", PauseMenu.UNPAUSE); button.x = curX; button.y = curY; menu.addButton(button); curY = (curY + (button.height + 5)); curX = (curX + ADD_X); button = buttonFactory.createMenuButton("button", "Restart", PauseMenu.RESTART); button.x = curX; button.y = curY; menu.addButton(button); curY = (curY + (button.height + 5)); curX = (curX + ADD_X); button = buttonFactory.createMenuButton("button", "Quit", PauseMenu.QUIT); button.x = curX; button.y = curY; menu.addButton(button); var _local2:Sprite = (new UISpriteSheet().getChildByName("logo") as Sprite); _local2.x = 300; _local2.y = 20; menu.addChild(_local2); return (menu); } public function createCreditsMenu():Menu{ var _local1:Menu = new Menu(); _local1.graphics.beginFill(29116, 0.5); _local1.graphics.drawRect(20, 180, 560, 250); _local1.graphics.endFill(); var _local2:CreditsPane = new CreditsPane(); _local2.x = 20; _local2.y = 195; _local1.addChild(_local2); applyMenuDecor(_local1, "Credits"); button = buttonFactory.createFunctionalButton("Back", MenuView.OPEN_MENU, "main"); button.y = 420; button.x = 10; _local1.addButton(button); return (_local1); } public static function getInstance():MenuFactory{ if (instance){ return (instance); }; instance = new MenuFactory(new PrivateClass()); instance.buttonFactory = ButtonFactory.getInstance(); return (instance); } } }//package game.ui class PrivateClass { private function PrivateClass(){ } }
Section 216
//MenuView (game.ui.MenuView) package game.ui { import flash.events.*; import game.profile.*; import flash.display.*; import game.match.*; import com.gskinner.motion.*; import flash.net.*; import game.ui.charsheet.*; import caurina.transitions.*; public class MenuView extends Sprite { private var matchController:MatchController; private var charsheet:CharacterSheet; private var charsheetButton:CharsheetButton; private var oldMenu:Menu; private var _returnTo:String; private var menuFactory:MenuFactory; private var activeMenuName:String; private var currentMenu:Menu; private var playMoreButton:PlayMoreButton; private var charsheetBackdrop:Sprite; public static const CONFIRM_START:String = "confirmStart"; public static const CREATE_PROFILE:String = "createProfile"; public static const CLOSE_CHARSHEET:String = "closeCharsheet"; public static const RETURN_TO:String = "returnTo"; public static const START_MATCH:String = "startMatch"; public static const OPEN_MENU:String = "openMenu"; public function MenuView(){ menuFactory = MenuFactory.getInstance(); matchController = MatchController.getInstance(); this.addEventListener(Event.ENTER_FRAME, enterFrameHandler); currentMenu = new Menu(); this.addChild(currentMenu); playMoreButton = new PlayMoreButton(); playMoreButton.x = 200; playMoreButton.y = 452; playMoreButton.addEventListener(MouseEvent.CLICK, pmbClickHandler); TopLevel.overlayLayer.addChild(playMoreButton); charsheetButton = new CharsheetButton(); charsheetButton.x = 510; addChild(charsheetButton); charsheetButton.addEventListener(MouseEvent.CLICK, csbClickHandler); charsheetButton.visible = false; charsheetBackdrop = new Sprite(); charsheetBackdrop.graphics.beginFill(0, 0.4); charsheetBackdrop.graphics.drawRect(0, 0, 600, 450); charsheetBackdrop.graphics.endFill(); charsheetBackdrop.alpha = 0; charsheetBackdrop.y = -600; TopLevel.overlayLayer.addChild(charsheetBackdrop); charsheet = new CharacterSheet(); charsheet.x = 20; charsheet.y = -590; charsheet.visible = false; TopLevel.overlayLayer.addChild(charsheet); } public function showResultMenu(_arg1:MatchResult):void{ var _local2:ResultMenu = new ResultMenu(_arg1); showMenu(_local2); showCharsheetButton(); showPlayMoreButton(); } public function set returnTo(_arg1:String):void{ _returnTo = _arg1; } private function pmbClickHandler(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamesfree.com"), "_blank"); } private function invisCS(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, invisCS); charsheet.visible = false; } private function showCharsheet():void{ charsheetBackdrop.y = 0; if (!charsheet.visible){ charsheet.update(); }; charsheet.visible = true; var _local1:GTween = new GTween(charsheetBackdrop, 0.6, {alpha:1}, {ease:Equations.easeInOutCubic}); charsheet.addEventListener(UIEvent.BUTTON_CLICK, uiClickHandler); var _local2:GTween = new GTween(charsheet, 0.8, {y:10}, {ease:Equations.easeOutCubic}); } private function enterFrameHandler(_arg1:Event):void{ if (oldMenu){ currentMenu.x = (currentMenu.x - 100); oldMenu.x = (oldMenu.x - 100); if (oldMenu.x <= -600){ currentMenu.x = 0; currentMenu.addEventListener(UIEvent.BUTTON_CLICK, uiClickHandler, false, 0, true); currentMenu.addEventListener(UIEvent.SLIDER_PLUS, uiSliderHandler, false, 0, true); currentMenu.addEventListener(UIEvent.SLIDER_MINUS, uiSliderHandler, false, 0, true); currentMenu.addEventListener(UIEvent.TOGGLE, uiToggleHandler, false, 0, true); this.removeChild(oldMenu); oldMenu = null; }; }; } private function showPlayMoreButton():void{ playMoreButton.visible = true; playMoreButton.addEventListener(MouseEvent.CLICK, pmbClickHandler); var _local1:GTween = new GTween(playMoreButton, 0.2, {y:400}, {ease:Equations.easeOutCubic}); playMoreButton.update(); } private function hidePlayMoreButton():void{ playMoreButton.removeEventListener(MouseEvent.CLICK, pmbClickHandler); var _local1:GTween = new GTween(playMoreButton, 0.2, {y:452}, {ease:Equations.easeInCubic}); _local1.addEventListener(Event.COMPLETE, invisPMB); } public function showMenuByName(_arg1:String):void{ var _local2:Menu; activeMenuName = _arg1; if (_arg1 == "profiles"){ _local2 = menuFactory.createProfilesMenu(); hideCharsheetButton(); } else { if (_arg1 == "profileCreation"){ _local2 = menuFactory.createProfileCreationMenu(); } else { if (_arg1 == "instructions"){ hidePlayMoreButton(); ProfileController.getInstance().profile.newPlayer = false; _local2 = menuFactory.createTextMenu(_arg1); } else { if (_arg1 == "achievements"){ hidePlayMoreButton(); _local2 = menuFactory.createAchievementMenu(); } else { if (_arg1 == "credits"){ hidePlayMoreButton(); _local2 = menuFactory.createCreditsMenu(); } else { showPlayMoreButton(); showCharsheetButton(); _local2 = menuFactory.createMenu(_arg1); if (charsheet.visible){ hideCharsheet(); }; }; }; }; }; }; showMenu(_local2); } private function uiToggleHandler(_arg1:UIEvent):void{ var _local2:Profile = ProfileController.getInstance().profile; _arg1.target.update(_local2.updateBoolParameter(_arg1.actionTarget)); } private function showCharsheetButton():void{ if (!charsheetButton.visible){ charsheetButton.update(); }; charsheetButton.visible = true; charsheetButton.addEventListener(MouseEvent.CLICK, csbClickHandler); var _local1:GTween = new GTween(charsheetButton, 0.2, {y:0}, {ease:Equations.easeOutCubic}); } private function hideCharsheet():void{ var _local1:GTween = new GTween(charsheetBackdrop, 0.5, {alpha:0}, {ease:Equations.easeInOutCubic}); var _local2:GTween = new GTween(charsheetBackdrop, 0, {y:-600}); _local2.pause(); _local1.nextTween = _local2; charsheet.removeEventListener(UIEvent.BUTTON_CLICK, uiClickHandler); var _local3:GTween = new GTween(charsheet, 0.5, {y:-590}, {ease:Equations.easeInCubic}); _local3.addEventListener(Event.COMPLETE, invisCS); } private function uiClickHandler(_arg1:UIEvent):void{ if (_arg1.actionType == CREATE_PROFILE){ if (_arg1.actionTarget == ""){ } else { ProfileController.getInstance().createProfile(_arg1.actionTarget); showMenuByName("main"); }; }; if (_arg1.actionType == OPEN_MENU){ showMenuByName(_arg1.actionTarget); BackgroundManager.getInstance().play(); }; if (_arg1.actionType == START_MATCH){ showMenu(menuFactory.createStartMenu(_arg1.actionTarget, activeMenuName)); hidePlayMoreButton(); }; if (_arg1.actionType == CONFIRM_START){ hideCharsheet(); hideCharsheetButton(); hidePlayMoreButton(); this.showMenu(new Menu()); BackgroundManager.getInstance().pause(); matchController.startMatch(_arg1.actionTarget, activeMenuName); }; if (_arg1.actionType == CLOSE_CHARSHEET){ hideCharsheet(); showCharsheetButton(); }; if (_arg1.actionType == RETURN_TO){ showMenuByName(_returnTo); }; } private function invisPMB(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, invisPMB); playMoreButton.visible = false; } private function csbClickHandler(_arg1:MouseEvent):void{ hideCharsheetButton(); showCharsheet(); } private function uiSliderHandler(_arg1:UIEvent):void{ var _local2:Profile = ProfileController.getInstance().profile; if (_arg1.type == UIEvent.SLIDER_PLUS){ _arg1.target.update(_local2.updateIntParameter(_arg1.actionTarget, true)); }; if (_arg1.type == UIEvent.SLIDER_MINUS){ _arg1.target.update(_local2.updateIntParameter(_arg1.actionTarget, false)); }; } private function hideCharsheetButton():void{ charsheetButton.removeEventListener(MouseEvent.CLICK, csbClickHandler); var _local1:GTween = new GTween(charsheetButton, 0.2, {y:-110}, {ease:Equations.easeInCubic}); _local1.addEventListener(Event.COMPLETE, invisCB); } private function invisCB(_arg1:Event):void{ (_arg1.target as GTween).removeEventListener(Event.COMPLETE, invisCB); charsheetButton.visible = false; } public function showMenu(_arg1:Menu):void{ oldMenu = currentMenu; oldMenu.removeEventListener(UIEvent.BUTTON_CLICK, uiClickHandler); oldMenu.removeEventListener(UIEvent.SLIDER_MINUS, uiSliderHandler); oldMenu.removeEventListener(UIEvent.SLIDER_PLUS, uiSliderHandler); oldMenu.removeEventListener(UIEvent.TOGGLE, uiToggleHandler); currentMenu = _arg1; this.addChild(currentMenu); currentMenu.x = 600; } } }//package game.ui
Section 217
//OpponentDescriptionField (game.ui.OpponentDescriptionField) package game.ui { import flash.events.*; import flash.display.*; import flash.text.*; import game.portrait.*; import game.*; import game.descriptors.*; import flash.geom.*; import com.dimonte.ui.*; public class OpponentDescriptionField extends Sprite { public function OpponentDescriptionField(_arg1:ActorDescriptor){ var _local8:Bitmap; var _local9:Label; var _local11:Bitmap; var _local12:int; var _local13:Label; var _local14:int; super(); Font.registerFont(FontManager.LiberationSansBoldItalic); var _local2:PortraitGenerator = PortraitGenerator.getInstance(); var _local3:Array = ["weight", "speed", "shot power", "court control", "adrenaline", "special"]; var _local4:Array = [_arg1.skillWeight, _arg1.skillSpeed, _arg1.skillShotPower, _arg1.skillCourtControl, _arg1.skillAdrenaline, _arg1.skillSpecial]; var _local5:Matrix = new Matrix(); var _local6:int; var _local7:int; while (_local7 < 6) { if (_local4[_local7] > _local4[_local6]){ _local6 = _local7; } else { if (_local4[_local7] == _local4[_local6]){ if (Math.random() > 0.5){ _local6 = _local7; }; }; }; _local7++; }; _local8 = new Bitmap(); _local8.bitmapData = _local2.generateMainPortrait(_arg1.colors, _arg1.rightHanded); _local8.x = 20; _local8.y = 200; this.addChild(_local8); _local5.createGradientBox(10, 30, (Math.PI / 2), 0, 380); graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local5); graphics.drawRect(20, 380, 160, 30); graphics.endFill(); _local9 = new Label(); _local9.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 4294967295, true, true); _local9.width = 170; _local9.embedFonts = true; _local9.text = _local3[_local6]; _local9.x = 25; _local9.y = 378; addChild(_local9); _local7 = 0; while (_local7 < _local4[_local6]) { graphics.beginFill(0xFFFFFF, 0.8); graphics.drawRect((27 + (_local7 * 21)), 400, 18, 6); graphics.endFill(); _local7++; }; _local5.createGradientBox(10, 30, (Math.PI / 2), 0, 390); _local7 = 0; while (_local7 < 5) { _local11 = new Bitmap(_local2.generateSmallPortrait(_arg1.colors)); _local11.x = (190 + (_local7 * 80)); _local11.y = 320; addChild(_local11); graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local5); graphics.drawRect((190 + (_local7 * 80)), 390, 70, 20); graphics.endFill(); _local12 = ((_local7)>=_local6) ? (_local7 + 1) : _local7; _local13 = new Label(); _local13.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 10, 4294967295, true, true); _local13.embedFonts = true; _local13.text = _local3[_local12]; _local13.x = (191 + (_local7 * 80)); _local13.y = 389; addChild(_local13); _local14 = 0; while (_local14 < _local4[_local12]) { graphics.beginFill(0xFFFFFF, 0.8); graphics.drawRect(((192 + (_local7 * 80)) + (_local14 * 11)), 404, 9, 3); graphics.endFill(); _local14++; }; _local7++; }; graphics.lineStyle(0, 0xFFFFFF, 0); graphics.beginFill(29116, 0.5); graphics.drawRect(190, 200, 390, 110); graphics.endFill(); var _local10:Label = new Label(); _local10.textFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 4294967295, true, true); _local10.embedFonts = true; _local10.text = _arg1.description; _local10.x = 195; _local10.y = 205; _local10.width = 380; this.addChild(_local10); this.addEventListener(Event.REMOVED_FROM_STAGE, removalListener); } private function removalListener(_arg1:Event):void{ while (numChildren > 0) { if ((getChildAt(0) is Bitmap)){ (getChildAt(0) as Bitmap).bitmapData.dispose(); }; removeChildAt(0); }; } } }//package game.ui
Section 218
//PauseMenu (game.ui.PauseMenu) package game.ui { public class PauseMenu extends Menu { public static const RESTART:String = "restart"; public static const UNPAUSE:String = "pause"; public static const QUIT:String = "quit"; } }//package game.ui
Section 219
//PlayMoreButton (game.ui.PlayMoreButton) package game.ui { import game.profile.*; import flash.display.*; import com.gskinner.motion.*; import flash.geom.*; public class PlayMoreButton extends SimpleButton { private var blinkTweenTimeLine:GTweenTimeline; public function PlayMoreButton(){ var _local3:Sprite; var _local4:Sprite; var _local5:Sprite; var _local6:GTween; var _local7:GTween; super(); var _local1:Matrix = new Matrix(); _local1.createGradientBox(1, 60, (Math.PI / 2), 0, 0); var _local2:int; while (_local2 < 3) { _local3 = new Sprite(); _local3.graphics.lineStyle(4, 0xFFFFFF, 1); _local3.graphics.moveTo(10, 0); _local3.graphics.lineTo(190, 0); _local3.graphics.curveTo(200, 0, 200, 10); _local3.graphics.lineTo(200, 50); _local3.graphics.lineTo(0, 50); _local3.graphics.lineTo(0, 10); _local3.graphics.curveTo(0, 0, 10, 0); _local3.graphics.lineStyle(4, 0xFFFFFF, 0); if (_local2 == 0){ _local3.graphics.beginGradientFill("linear", [2730978, 29116], [1, 1], [0, 0xFF], _local1); upState = _local3; _local5 = new Sprite(); _local5.graphics.beginGradientFill("linear", [16576033, 16494651], [1, 1], [0, 0xFF], _local1); _local5.graphics.moveTo(10, 0); _local5.graphics.lineTo(190, 0); _local5.graphics.curveTo(200, 0, 200, 10); _local5.graphics.lineTo(200, 50); _local5.graphics.lineTo(0, 50); _local5.graphics.lineTo(0, 10); _local5.graphics.curveTo(0, 0, 10, 0); _local5.graphics.endFill(); _local5.alpha = 0; _local3.addChild(_local5); _local6 = new GTween(_local5, 0.01, {alpha:1}); _local7 = new GTween(_local5, 0.01, {alpha:0}); blinkTweenTimeLine = new GTweenTimeline(_local5, 1, null, {repeat:-1}); blinkTweenTimeLine.addTween(0, _local6); blinkTweenTimeLine.addTween(0.5, _local7); blinkTweenTimeLine.repeat = 1; blinkTweenTimeLine.gotoAndStop(0); }; if (_local2 == 1){ _local3.graphics.beginGradientFill("linear", [2863346, 31961], [1, 1], [0, 0xFF], _local1); hitTestState = _local3; overState = _local3; }; if (_local2 == 2){ _local3.graphics.beginGradientFill("linear", [31961, 2863346], [1, 1], [0, 0xFF], _local1); downState = _local3; }; _local3.graphics.moveTo(10, 0); _local3.graphics.lineTo(190, 0); _local3.graphics.curveTo(200, 0, 200, 10); _local3.graphics.lineTo(200, 50); _local3.graphics.lineTo(0, 50); _local3.graphics.lineTo(0, 10); _local3.graphics.curveTo(0, 0, 10, 0); _local3.graphics.endFill(); _local4 = new PlayMoreGamesIcon(); _local4.x = 0; _local4.y = -2; _local3.addChild(_local4); _local2++; }; } public function update():void{ var _local1:Profile = ProfileController.getInstance().profile; if (((_local1.tournament[3]) && (!(_local1.buttonFlashed)))){ blinkTweenTimeLine.play(); _local1.buttonFlashed = true; }; } } }//package game.ui
Section 220
//ProfileButton (game.ui.ProfileButton) package game.ui { import flash.events.*; import flash.display.*; public class ProfileButton extends MenuButton { private var labelsArray:Array; public function ProfileButton(_arg1:String, _arg2:String, _arg3:String){ var _local6:ButtonLabel; var _local7:Sprite; labelsArray = new Array(); var _local4:UISpriteSheet = new UISpriteSheet(); var _local5:Sprite = (_local4.getChildByName("buttonUpState") as Sprite); _local5.x = 0; _local5.y = 0; _local6 = new ButtonLabel(); _local6.x = 12; _local6.y = -2; _local6.text = _arg1; labelsArray.push(_local6); _local5.addChild(_local6); _local7 = (_local4.getChildByName("buttonOverState") as Sprite); _local7.x = 0; _local7.y = 0; _local6 = new ButtonLabel(); _local6.x = 12; _local6.y = -2; _local6.text = _arg1; labelsArray.push(_local6); _local7.addChild(_local6); hitTestState = overState; var _local8:Sprite = (_local4.getChildByName("buttonDownState") as Sprite); _local8.x = 0; _local8.y = 0; _local6 = new ButtonLabel(); _local6.x = 12; _local6.y = -2; _local6.text = _arg1; labelsArray.push(_local6); _local8.addChild(_local6); super(_local5, _local7, _local8, _arg2, _arg3); } public function update(_arg1:String, _arg2:String):void{ this.actionType = _arg2; var _local3:int; while (_local3 < labelsArray.length) { labelsArray[_local3].text = _arg1; _local3++; }; } override protected function removalHandler(_arg1:Event):void{ while (Sprite(upState).numChildren > 0) { if ((Sprite(upState).getChildAt(0) is ButtonLabel)){ ButtonLabel(Sprite(upState).getChildAt(0)).forceKill(); }; Sprite(upState).removeChildAt(0); }; while (Sprite(overState).numChildren > 0) { if ((Sprite(overState).getChildAt(0) is ButtonLabel)){ ButtonLabel(Sprite(overState).getChildAt(0)).forceKill(); }; Sprite(overState).removeChildAt(0); }; while (Sprite(downState).numChildren > 0) { if ((Sprite(downState).getChildAt(0) is ButtonLabel)){ ButtonLabel(Sprite(downState).getChildAt(0)).forceKill(); }; Sprite(downState).removeChildAt(0); }; super.removalHandler(_arg1); } } }//package game.ui
Section 221
//ProfileCreationMenu (game.ui.ProfileCreationMenu) package game.ui { import flash.events.*; import flash.display.*; import flash.text.*; import game.*; import flash.geom.*; import com.dimonte.ui.*; public class ProfileCreationMenu extends Menu { private var warningFlash:Sprite; private var nameField:TextField; public function ProfileCreationMenu(){ var _local3:MenuNameLabel; super(); var _local1:Sprite = (new UISpriteSheet() as Sprite); var _local2:DisplayObject = _local1.getChildByName("nameStripe"); _local2.x = 0; _local2.y = 150; addChild(_local2); _local2 = _local1.getChildByName("bottomStripe"); _local2.x = 0; _local2.y = 425; addChild(_local2); _local2 = null; _local3 = new MenuNameLabel(); _local3.align = "center"; _local3.text = "Profile creation"; _local3.width = 600; _local3.x = 0; _local3.y = 147; addChild(_local3); _local3 = null; _local1 = null; var _local4:TextField = new TextField(); _local4.multiline = false; _local4.width = 400; _local4.height = 30; _local4.embedFonts = true; _local4.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 18, 4294967295, true, true, null, null, null, "center"); _local4.x = 100; _local4.y = 285; _local4.text = "Please enter a name for the new profile"; addChild(_local4); graphics.beginFill(2730978, 0.6); graphics.drawRect(20, 190, 560, 240); graphics.endFill(); graphics.lineStyle(4, 0xFFFFFF, 1); graphics.drawRect(60, 240, 480, 40); graphics.lineStyle(4, 0xFFFFFF, 0); var _local5:Matrix = new Matrix(); _local5.createGradientBox(10, 40, (Math.PI / 2), 0, 240); graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local5); graphics.drawRect(60, 240, 480, 40); graphics.endFill(); warningFlash = new Sprite(); _local5.createGradientBox(10, 40, (Math.PI / 2), 0, 0); warningFlash.graphics.beginGradientFill("linear", [9182241, 15539236], [1, 1], [0, 0xFF], _local5); warningFlash.graphics.drawRect(0, 0, 480, 40); warningFlash.graphics.endFill(); warningFlash.x = 60; warningFlash.y = 240; addChild(warningFlash); warningFlash.alpha = 0; var _local6:MenuButton = ButtonFactory.getInstance().createFunctionalButton("Create", MenuView.CREATE_PROFILE, ""); _local6.addEventListener(MouseEvent.CLICK, createClickHandler, false, 0, true); _local6.x = 470; _local6.y = 420; addChild(_local6); Font.registerFont(FontManager.LiberationSansBoldItalic); nameField = new TextField(); nameField.type = TextFieldType.INPUT; nameField.multiline = false; nameField.width = 480; nameField.height = 40; nameField.embedFonts = true; nameField.defaultTextFormat = new TextFormat(FontManager.LIBERATION_SANS_BI, 32, 4294967295, true, true, null, null, null, "center"); nameField.x = 60; nameField.y = 240; nameField.text = ""; nameField.addEventListener(MouseEvent.CLICK, fieldClickListener, false, 0, true); addChild(nameField); TopLevel.stage.focus = nameField; } private function fieldClickListener(_arg1:MouseEvent):void{ warningFlash.alpha = 0; } private function createClickHandler(_arg1:MouseEvent):void{ if (nameField.text == ""){ warningFlash.alpha = 1; } else { dispatchEvent(new UIEvent(UIEvent.BUTTON_CLICK, MenuView.CREATE_PROFILE, nameField.text)); }; } } }//package game.ui
Section 222
//ProfileDeleteButton (game.ui.ProfileDeleteButton) package game.ui { import flash.events.*; import flash.display.*; public class ProfileDeleteButton extends SimpleButton { private var actionTarget:String; private var deleteConfirmDown:Sprite; private var deleteConfirmOver:Sprite; public function ProfileDeleteButton(_arg1:String){ var _local2:UISpriteSheet; var _local4:Sprite; super(); this.actionTarget = _arg1; _local2 = new UISpriteSheet(); var _local3:Sprite = new Sprite(); _local4 = new Sprite(); var _local5:Sprite = new Sprite(); var _local6:Sprite = (_local2.getChildByName("profileDeleteUp") as Sprite); _local6.x = 0; _local6.y = 0; _local3.addChild(_local6); var _local7:DeleteButtonLabel = new DeleteButtonLabel(); _local7.y = -2; _local7.text = "Delete"; _local3.addChild(_local7); upState = _local3; _local4 = new Sprite(); _local6 = (_local2.getChildByName("profileDeleteOver") as Sprite); _local6.x = 0; _local6.y = 0; _local4.addChild(_local6); _local7 = new DeleteButtonLabel(); _local7.y = -2; _local7.text = "Delete"; _local4.addChild(_local7); deleteConfirmOver = new Sprite(); _local6 = (_local2.getChildByName("profileDeleteConfirmOver") as Sprite); _local6.x = 0; _local6.y = 0; deleteConfirmOver.addChild(_local6); _local7 = new DeleteButtonLabel(); _local7.y = -2; _local7.text = "Sure?"; deleteConfirmOver.addChild(_local7); deleteConfirmOver.visible = false; _local4.addChild(deleteConfirmOver); overState = _local4; hitTestState = overState; _local5 = new Sprite(); _local6 = (_local2.getChildByName("profileDeleteDown") as Sprite); _local6.x = 0; _local6.y = 0; _local5.addChild(_local6); _local7 = new DeleteButtonLabel(); _local7.y = -2; _local7.text = "Delete"; _local5.addChild(_local7); deleteConfirmDown = new Sprite(); _local6 = (_local2.getChildByName("profileDeleteConfirmDown") as Sprite); _local6.x = 0; _local6.y = 0; deleteConfirmDown.addChild(_local6); _local7 = new DeleteButtonLabel(); _local7.y = -2; _local7.text = "Sure?"; deleteConfirmDown.addChild(_local7); deleteConfirmDown.visible = false; _local5.addChild(deleteConfirmDown); downState = _local5; addEventListener(MouseEvent.CLICK, firstClickHandler, false, 0, true); addEventListener(Event.REMOVED_FROM_STAGE, removedHandler, false, 0, true); } private function confirmCancelHandler(_arg1:MouseEvent):void{ deleteConfirmOver.visible = false; deleteConfirmDown.visible = false; removeEventListener(MouseEvent.CLICK, confirmClickHandler); removeEventListener(MouseEvent.ROLL_OUT, confirmCancelHandler); addEventListener(MouseEvent.CLICK, firstClickHandler, false, 0, true); } private function firstClickHandler(_arg1:MouseEvent):void{ removeEventListener(MouseEvent.CLICK, firstClickHandler); deleteConfirmOver.visible = true; deleteConfirmDown.visible = true; addEventListener(MouseEvent.CLICK, confirmClickHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, confirmCancelHandler, false, 0, true); } private function confirmClickHandler(_arg1:MouseEvent):void{ deleteConfirmOver.visible = false; deleteConfirmDown.visible = false; dispatchEvent(new UIEvent(UIEvent.BUTTON_CLICK, "", actionTarget)); removeEventListener(MouseEvent.CLICK, confirmClickHandler); removeEventListener(MouseEvent.ROLL_OUT, confirmCancelHandler); addEventListener(MouseEvent.CLICK, firstClickHandler, false, 0, true); } private function removedHandler(_arg1:Event):void{ while (Sprite(upState).numChildren > 0) { if ((Sprite(upState).getChildAt(0) is DeleteButtonLabel)){ DeleteButtonLabel(Sprite(upState).getChildAt(0)).forceKill(); }; Sprite(upState).removeChildAt(0); }; while (Sprite(overState).numChildren > 0) { if ((Sprite(overState).getChildAt(0) is DeleteButtonLabel)){ DeleteButtonLabel(Sprite(overState).getChildAt(0)).forceKill(); }; Sprite(overState).removeChildAt(0); }; while (Sprite(downState).numChildren > 0) { if ((Sprite(downState).getChildAt(0) is DeleteButtonLabel)){ DeleteButtonLabel(Sprite(downState).getChildAt(0)).forceKill(); }; Sprite(downState).removeChildAt(0); }; } } }//package game.ui
Section 223
//ProfilesMenu (game.ui.ProfilesMenu) package game.ui { import flash.events.*; import game.profile.*; public class ProfilesMenu extends Menu { private var deleteButtons:Array; private var profilesList:Array; private var profileButtons:Array; public function ProfilesMenu(_arg1:int, _arg2:int){ var _local6:MenuButton; var _local7:ProfileDeleteButton; super(); profileButtons = new Array(); deleteButtons = new Array(); profilesList = ProfileController.getInstance().getProfilesList(); var _local3:int = _arg1; var _local4:int = _arg2; this.profilesList = profilesList; var _local5:int; while (_local5 < profilesList.length) { _local7 = new ProfileDeleteButton(String(_local5)); _local7.x = (_local3 + 320); _local7.y = _local4; addChild(_local7); _local7.addEventListener(UIEvent.BUTTON_CLICK, profileDeleteHandler, false, 0, true); deleteButtons.push(_local7); if (profilesList[_local5] == "empty slot"){ _local6 = new ProfileButton("create new profile", "createProfile", String(_local5)); _local7.visible = false; } else { _local6 = new ProfileButton(profilesList[_local5], "selectProfile", String(_local5)); }; _local6.addEventListener(UIEvent.BUTTON_CLICK, profileClickListener, false, 0, true); _local6.x = _local3; _local6.y = _local4; profileButtons.push(_local6); addButton(_local6); _local4 = (_local4 + (_local6.height + 5)); _local5++; }; } override protected function removeHandler(_arg1:Event):void{ super.removeHandler(_arg1); profilesList = null; do { } while (profileButtons.pop()); do { } while (deleteButtons.pop()); } private function update():void{ profilesList = ProfileController.getInstance().getProfilesList(); var _local1:int; while (_local1 < profilesList.length) { if (profilesList[_local1] == "empty slot"){ profileButtons[_local1].update("create new profile", "createProfile"); deleteButtons[_local1].visible = false; } else { profileButtons[_local1].update(profilesList[_local1], "selectProfile"); deleteButtons[_local1].visible = true; }; _local1++; }; } private function profileClickListener(_arg1:UIEvent):void{ if (_arg1.actionType == "selectProfile"){ ProfileController.getInstance().loadProfile(int(_arg1.actionTarget)); dispatchEvent(new UIEvent(UIEvent.BUTTON_CLICK, MenuView.OPEN_MENU, "main")); } else { if (_arg1.actionType == "createProfile"){ ProfileController.getInstance().setActiveSlot(int(_arg1.actionTarget)); dispatchEvent(new UIEvent(UIEvent.BUTTON_CLICK, MenuView.OPEN_MENU, "profileCreation")); }; }; } private function profileDeleteHandler(_arg1:UIEvent):void{ ProfileController.getInstance().deleteProfile(int(_arg1.actionTarget)); update(); } } }//package game.ui
Section 224
//ResultMenu (game.ui.ResultMenu) package game.ui { import flash.events.*; import flash.display.*; import game.match.*; import com.gskinner.motion.*; import flash.geom.*; import game.ui.charsheet.*; import com.dimonte.ui.*; import caurina.transitions.*; public class ResultMenu extends Menu { private var matchResult:MatchResult; private var experienceBar:Sprite; private var experienceLabel:BigExperienceLabel; private var expTween:GTween; private var levelLabel:LevelLabel; private var totalExp:LevelLabel; private var detailedExperience:FreePointsLabel; public function ResultMenu(_arg1:MatchResult){ var _local2:MenuNameLabel; super(); this.matchResult = _arg1; applyDecor(); _local2 = null; _local2 = new MenuNameLabel(); _local2.align = "center"; if (_arg1.playerWon){ _local2.text = "You won!"; } else { _local2.text = "You lost!"; }; _local2.width = 600; _local2.x = 0; _local2.y = 147; addChild(_local2); experienceBar = new Sprite(); var _local3:Matrix = new Matrix(); _local3.createGradientBox(10, 20, (Math.PI / 2), 0, 0); experienceBar.graphics.beginGradientFill("linear", [2863346, 31961], [1, 1], [0, 0xFF], _local3); experienceBar.graphics.drawRect(0, 0, 520, 20); experienceBar.graphics.endFill(); experienceBar.x = 40; experienceBar.y = 240; addChild(experienceBar); experienceLabel = new BigExperienceLabel(); experienceLabel.x = 200; experienceLabel.y = 237; addChild(experienceLabel); levelLabel = new LevelLabel(); levelLabel.x = 200; levelLabel.y = 200; addChild(levelLabel); setupExpBar(); detailedExperience = new FreePointsLabel(); detailedExperience.width = 300; detailedExperience.x = 50; detailedExperience.y = 275; detailedExperience.text = "Match"; if (_arg1.playerWon){ detailedExperience.text = (detailedExperience.text + " won"); } else { detailedExperience.text = (detailedExperience.text + " lost"); }; detailedExperience.text = (detailedExperience.text + ((" for " + _arg1.matchReward) + "xp")); detailedExperience.text = (detailedExperience.text + (((("\n" + _arg1.shots) + " shots for ") + _arg1.shotExp) + "xp")); detailedExperience.text = (detailedExperience.text + (((("\n" + _arg1.specialStrikes) + " specials for ") + _arg1.specExp) + "xp")); detailedExperience.text = (detailedExperience.text + (((("\n" + _arg1.superStrikes) + " supers for ") + _arg1.supExp) + "xp")); addChild(detailedExperience); totalExp = new LevelLabel(); totalExp.width = 260; totalExp.x = 300; totalExp.y = 275; totalExp.text = "XP multiplier = x"; totalExp.text = (totalExp.text + _arg1.mulitplier); if (_arg1.easyMode){ totalExp.text = (totalExp.text + " (TC on)"); }; totalExp.text = (totalExp.text + (("\n\nTOTALING\n" + _arg1.experience) + "xp")); addChild(totalExp); var _local4:MenuButton = ButtonFactory.getInstance().createFunctionalButton("Close", MenuView.RETURN_TO, ""); _local4.y = 420; _local4.x = 470; addChild(_local4); _local4.addEventListener(MouseEvent.CLICK, closeListener); } private function setupExpBar(_arg1:Event=null):void{ var _local5:int; var _local2:Boolean; var _local3:Boolean; expTween = new GTween(matchResult); if (_arg1){ } else { _local2 = true; expTween.delay = 1; }; var _local4:int = XMLReader.getInstance().readLevels((matchResult.oldLevel + 1)).experience; if ((((matchResult.oldExperience >= _local4)) && ((matchResult.oldLevel < 15)))){ matchResult.oldLevel++; _local4 = XMLReader.getInstance().readLevels((matchResult.oldLevel + 1)).experience; }; if (matchResult.oldLevel < 15){ _local5 = XMLReader.getInstance().readLevels(matchResult.oldLevel).experience; if (matchResult.newExperience >= _local4){ expTween.setProperty("oldExperience", _local4); expTween.addEventListener(Event.COMPLETE, setupExpBar, false, 0, true); if (matchResult.newExperience == _local4){ _local3 = true; }; } else { expTween.setProperty("oldExperience", matchResult.newExperience); _local3 = true; }; if (_local2){ if (_local3){ expTween.ease = Equations.easeInOutQuad; expTween.duration = 2; } else { expTween.ease = Equations.easeInQuad; expTween.duration = 1.5; }; } else { if (_local3){ expTween.ease = Equations.easeOutQuad; expTween.duration = 1.5; } else { expTween.ease = Equations.easeNone; expTween.duration = 1; }; }; expTween.data = {oldLevelExp:_local5, nextLevelExp:_local4}; expTween.addEventListener(Event.CHANGE, updateExpBar, false, 0, true); experienceBar.scaleX = ((matchResult.oldExperience - _local5) / (_local4 - _local5)); } else { _local4 = XMLReader.getInstance().readLevels(matchResult.oldLevel).experience; _local5 = _local4; matchResult.oldExperience = _local5; expTween.pause(); experienceBar.scaleX = 1; }; experienceLabel.text = ((matchResult.oldExperience + "/") + _local4); levelLabel.text = ("Level " + matchResult.oldLevel); } private function closeListener(_arg1:MouseEvent):void{ expTween.pause(); } private function applyDecor():void{ graphics.beginFill(29116, 0.8); graphics.drawRect(20, 160, 560, 270); graphics.endFill(); var _local1:Sprite = (new UISpriteSheet() as Sprite); var _local2:DisplayObject = _local1.getChildByName("nameStripe"); _local2.x = 0; _local2.y = 150; addChild(_local2); _local2 = _local1.getChildByName("bottomStripe"); _local2.x = 0; _local2.y = 425; addChild(_local2); _local2 = null; _local1 = null; var _local3:Matrix = new Matrix(); _local3.createGradientBox(10, 20, (Math.PI / 2), 0, 240); graphics.lineStyle(4, 0xFFFFFF, 1); graphics.drawRect(40, 240, 520, 20); graphics.lineStyle(4, 0xFFFFFF, 0); graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local3); graphics.drawRect(40, 240, 520, 20); graphics.endFill(); } private function updateExpBar(_arg1:Event):void{ var _local2:GTween = (_arg1.target as GTween); experienceBar.scaleX = ((matchResult.oldExperience - _local2.data.oldLevelExp) / (_local2.data.nextLevelExp - _local2.data.oldLevelExp)); experienceLabel.text = ((matchResult.oldExperience + "/") + _local2.data.nextLevelExp); } } }//package game.ui
Section 225
//SliderButton (game.ui.SliderButton) package game.ui { import flash.events.*; import game.profile.*; import flash.display.*; public class SliderButton extends Sprite { public var actionTarget:String; private var minusButton:SimpleButton; private var plusButton:SimpleButton; private var emptyBars:Array; private var fullBars:Array; public var value:int; public function SliderButton(_arg1:Sprite, _arg2:String){ this.actionTarget = _arg2; value = ProfileController.getInstance().profile[_arg2]; while (_arg1.numChildren > 0) { this.addChild(_arg1.getChildAt(0)); }; emptyBars = new Array(5); fullBars = new Array(5); var _local3:int; while (_local3 < 5) { emptyBars[_local3] = this.getChildByName(("emptyBar" + (_local3 + 1))); fullBars[_local3] = this.getChildByName(("fullBar" + (_local3 + 1))); _local3++; }; plusButton = (this.getChildByName("plusButton") as SimpleButton); plusButton.addEventListener(MouseEvent.CLICK, plusHandler); minusButton = (this.getChildByName("minusButton") as SimpleButton); minusButton.addEventListener(MouseEvent.CLICK, minusHandler); _local3 = 0; while (_local3 < 5) { if (_local3 < value){ fullBars[_local3].visible = true; } else { fullBars[_local3].visible = false; }; _local3++; }; } private function minusHandler(_arg1:MouseEvent):void{ dispatchEvent(new UIEvent(UIEvent.SLIDER_MINUS, "", actionTarget, "", true)); } private function barClickListener(_arg1:MouseEvent):void{ var _local2:UIEvent = new UIEvent(UIEvent.SPECIAL, "setTo", actionTarget, _arg1.target.name.split(/(\d)/)[1]); } private function plusHandler(_arg1:MouseEvent):void{ dispatchEvent(new UIEvent(UIEvent.SLIDER_PLUS, "", actionTarget, "", true)); } public function update(_arg1:int):void{ this.value = _arg1; var _local2:int; while (_local2 < 5) { if (_local2 < _arg1){ fullBars[_local2].visible = true; } else { fullBars[_local2].visible = false; }; _local2++; }; } } }//package game.ui
Section 226
//ToggleButton (game.ui.ToggleButton) package game.ui { import flash.events.*; import game.profile.*; import flash.display.*; public class ToggleButton extends Sprite { private var actionTarget:String; private var button:SimpleButton; private var toggleOn:Sprite; private var stateSprite:Sprite; private var toggleOff:Sprite; public function ToggleButton(_arg1:Sprite, _arg2:Sprite, _arg3:Sprite, _arg4:Sprite, _arg5:Sprite, _arg6:String){ button = new SimpleButton(_arg1, _arg2, _arg3, _arg2); this.toggleOn = _arg4; this.toggleOff = _arg5; this.actionTarget = _arg6; if (!ProfileController.getInstance().profile[_arg6]){ _arg4.visible = false; }; this.addChild(button); this.addChild(_arg5); _arg5.mouseEnabled = false; this.addChild(_arg4); _arg4.mouseEnabled = false; this.addEventListener(MouseEvent.CLICK, clickHandler); } private function clickHandler(_arg1:MouseEvent):void{ dispatchEvent(new UIEvent(UIEvent.TOGGLE, "", actionTarget)); } public function update(_arg1:Boolean):void{ if (_arg1){ toggleOn.visible = true; } else { toggleOn.visible = false; }; } } }//package game.ui
Section 227
//UIEvent (game.ui.UIEvent) package game.ui { import flash.events.*; public class UIEvent extends Event { public var actionType:String; public var actionTarget:String; public var special:String; public static const SPECIAL:String = "special"; public static const TOGGLE:String = "toggle"; public static const SLIDER_MINUS:String = "sliderMinus"; public static const BUTTON_CLICK:String = "buttonClick"; public static const SLIDER_PLUS:String = "sliderPlus"; public function UIEvent(_arg1:String, _arg2:String, _arg3:String, _arg4:String="", _arg5:Boolean=true, _arg6:Boolean=false){ super(_arg1, _arg5, _arg6); this.actionType = _arg2; this.actionTarget = _arg3; this.special = _arg4; } override public function clone():Event{ return (new UIEvent(type, actionType, actionTarget, special, bubbles, cancelable)); } } }//package game.ui
Section 228
//XMLReader (game.ui.XMLReader) package game.ui { public class XMLReader { private var menuListXML:XML; private var levelsListXML:XML; private var LevelsList:Class; private var ColorsList:Class; private var colorsListXML:XML; private var OpponentList:Class; private var opponentListXML:XML; private var MenuList:Class; private static var instance:XMLReader; public function XMLReader(_arg1:PrivateClass){ MenuList = XMLReader_MenuList; OpponentList = XMLReader_OpponentList; ColorsList = XMLReader_ColorsList; LevelsList = XMLReader_LevelsList; super(); menuListXML = XML(new MenuList()); opponentListXML = XML(new OpponentList()); colorsListXML = XML(new ColorsList()); levelsListXML = XML(new LevelsList()); } public function readOpponent(_arg1:String):XMLList{ var opponent = _arg1; return (opponentListXML.opponent.(id == opponent)); } public function readLevels(_arg1:int):XMLList{ var number = _arg1; return (XMLList(levelsListXML.level.(@num == number))); } public function readColors(_arg1:int):XMLList{ return (XMLList(colorsListXML.children()[_arg1])); } public function readMenu(_arg1:String):XMLList{ return (menuListXML.child(_arg1)); } public static function getInstance():XMLReader{ if (!instance){ instance = new XMLReader(new PrivateClass()); }; return (instance); } } }//package game.ui class PrivateClass { private function PrivateClass(){ } }
Section 229
//XMLReader_ColorsList (game.ui.XMLReader_ColorsList) package game.ui { import mx.core.*; public class XMLReader_ColorsList extends ByteArrayAsset { } }//package game.ui
Section 230
//XMLReader_LevelsList (game.ui.XMLReader_LevelsList) package game.ui { import mx.core.*; public class XMLReader_LevelsList extends ByteArrayAsset { } }//package game.ui
Section 231
//XMLReader_MenuList (game.ui.XMLReader_MenuList) package game.ui { import mx.core.*; public class XMLReader_MenuList extends ByteArrayAsset { } }//package game.ui
Section 232
//XMLReader_OpponentList (game.ui.XMLReader_OpponentList) package game.ui { import mx.core.*; public class XMLReader_OpponentList extends ByteArrayAsset { } }//package game.ui
Section 233
//ActorConverter (game.ActorConverter) package game { import game.profile.*; import game.descriptors.*; public class ActorConverter { private static var instance:ActorConverter; public function ActorConverter(_arg1:PrivateClass){ } public function makeActorFromProfile(_arg1:Profile):ActorDescriptor{ var _local2:ActorDescriptor = new ActorDescriptor(); _local2.name = _arg1.name; _local2.colors = _arg1.colors; _local2.rightHanded = true; _local2.skillAdrenaline = _arg1.skillAdrenaline; _local2.skillCourtControl = _arg1.skillCourtControl; _local2.skillShotPower = _arg1.skillShotPower; _local2.skillSpecial = _arg1.skillSpecial; _local2.skillSpeed = _arg1.skillSpeed; _local2.skillWeight = _arg1.skillWeight; updateDescriptorStats(_local2); return (_local2); } public function makeActorFromXMLList(_arg1:XMLList):ActorDescriptor{ var _local2:ActorDescriptor = new ActorDescriptor(); _local2.name = _arg1.name; _local2.tournamentLevel = int(_arg1.level); _local2.tournamentNum = int(_arg1.tournamentNum); _local2.description = _arg1.description; _local2.skillAdrenaline = _arg1.skills.adrenaline; _local2.skillCourtControl = _arg1.skills.courtControl; _local2.skillShotPower = _arg1.skills.shotPower; _local2.skillSpecial = _arg1.skills.special; _local2.skillSpeed = _arg1.skills.speed; _local2.skillWeight = _arg1.skills.weight; _local2.colors[0] = uint(_arg1.colors.hair); _local2.colors[1] = uint(_arg1.colors.skin); _local2.colors[2] = uint(_arg1.colors.shirt); _local2.colors[3] = uint(_arg1.colors.stripe); _local2.colors[4] = uint(_arg1.colors.pants); _local2.colors[5] = uint(_arg1.colors.racketHandle); _local2.colors[6] = uint(_arg1.colors.racketBody); if (_arg1.rightHanded == "true"){ _local2.rightHanded = true; } else { _local2.rightHanded = false; }; updateDescriptorStats(_local2); return (_local2); } public function updateDescriptorStats(_arg1:ActorDescriptor):void{ _arg1.adrenalineStart = (30 - (_arg1.skillAdrenaline * 2)); _arg1.adrenalineBuildup = (0.5 - (_arg1.skillAdrenaline * 0.03)); _arg1.adrenalineMax = (0.45 - (_arg1.skillAdrenaline * 0.05)); _arg1.aiPower = (7 + (_arg1.skillAdrenaline * 8)); _arg1.weightMultiplier = (0.9 - (0.04 * _arg1.skillWeight)); _arg1.speed = (400 + (_arg1.skillSpeed * 20)); _arg1.servePower = (20 + (_arg1.skillShotPower * 1.4)); _arg1.shotPowerMultiplier = (1.03 + (_arg1.skillShotPower * 0.014)); _arg1.shotPowerMaximum = (25 + (_arg1.skillShotPower * 3)); _arg1.courtControlRangeIn = (32 - (_arg1.skillCourtControl * 1.4)); _arg1.courtControlRangeOut = (45 - (_arg1.skillCourtControl * 0.4)); _arg1.specialDifficulty = (18 + (_arg1.skillSpecial * 0.2)); _arg1.superDifficulty = (25 + (_arg1.skillSpecial * 0.4)); _arg1.specialPowerMultiplier = (1.1 + (_arg1.skillSpecial * 0.05)); _arg1.superPowerMultiplier = (1.5 + (_arg1.skillSpecial * 0.1)); _arg1.specialPowerMin = (25 + (_arg1.skillSpecial * 2)); _arg1.superPowerMin = (35 + (_arg1.skillSpecial * 5)); } public static function getInstance():ActorConverter{ if (!instance){ instance = new ActorConverter(new PrivateClass()); }; return (instance); } } }//package game class PrivateClass { private function PrivateClass(){ } }
Section 234
//FontManager (game.FontManager) package game { public class FontManager { public static const LIBERATION_SANS_BI:String = "LiberationSans-BoldItalic"; public static var LiberationSansBoldItalic:Class = FontManager_LiberationSansBoldItalic; public function FontManager(_arg1:PrivateClass){ } } }//package game class PrivateClass { private function PrivateClass(){ } }
Section 235
//FontManager_LiberationSansBoldItalic (game.FontManager_LiberationSansBoldItalic) package game { import mx.core.*; public class FontManager_LiberationSansBoldItalic extends FontAsset { } }//package game
Section 236
//ByteArrayAsset (mx.core.ByteArrayAsset) package mx.core { import flash.utils.*; public class ByteArrayAsset extends ByteArray implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; } }//package mx.core
Section 237
//FontAsset (mx.core.FontAsset) package mx.core { import flash.text.*; public class FontAsset extends Font implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; } }//package mx.core
Section 238
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 239
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 240
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "3.2.0.3958"; } }//package mx.core
Section 241
//gamesfre_pre_mendengus_56 (UISprites_fla.gamesfre_pre_mendengus_56) package UISprites_fla { import flash.display.*; public dynamic class gamesfre_pre_mendengus_56 extends MovieClip { public function gamesfre_pre_mendengus_56(){ addFrameScript(5, this.frame6); } function frame6(){ stop(); } } }//package UISprites_fla
Section 242
//AwardSpriteSheet (AwardSpriteSheet) package { import flash.display.*; public dynamic class AwardSpriteSheet extends MovieClip { public var shadow:MovieClip; public var rocketRacket:MovieClip; public var defender:MovieClip; public var grandbashCup:MovieClip; public var worldCup:MovieClip; public var semiproCup:MovieClip; public var wallMaster:MovieClip; public var jetBall:MovieClip; public var amateurCup:MovieClip; public var flawlessVictory:MovieClip; } }//package
Section 243
//BackgroundManager (BackgroundManager) package { import flash.events.*; import flash.display.*; import game.geom.*; import flash.geom.*; import com.gskinner.motion.*; import caurina.transitions.*; import game.match.graphics.*; public class BackgroundManager { private var cloudEndXs:Array; private var cloudStartXs:Array; private var cloudSpeed:Point; private var backgroundSprite:Sprite; private var cloudsArray:Array; private var cloudSprite:Sprite; private var cloudProjection:Projection; private var cloudsBitmap:Bitmap; private var overlaySprite:Sprite; private var cloudsBitmapData:BitmapData; private static var instance:BackgroundManager; public function BackgroundManager(_arg1:PrivateClass){ backgroundSprite = new Sprite(); var _local2:Matrix = new Matrix(); _local2.createGradientBox(10, 450, (Math.PI / 2)); backgroundSprite.graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local2); backgroundSprite.graphics.drawRect(0, 0, 600, 450); backgroundSprite.graphics.endFill(); TopLevel.backgroundLayer.addChild(backgroundSprite); createCloudCover(); updateClouds(new Event("")); overlaySprite = new Sprite(); _local2.createGradientBox(10, 450, (Math.PI / 2), 0, 0); overlaySprite.graphics.beginGradientFill("linear", [29116, 2730978, 2730978], [0.2, 0.7, 1], [0, 190, 0xFF], _local2); overlaySprite.graphics.drawRect(0, 0, 600, 450); overlaySprite.graphics.endFill(); var _local3:Sprite = new Logo(); _local3.x = 300; _local3.y = 20; overlaySprite.addChild(_local3); TopLevel.backgroundLayer.addChild(overlaySprite); backgroundSprite.y = -450; backgroundSprite.visible = false; } private function updateClouds(_arg1:Event):void{ var _local2:Point3D = new Point3D(); cloudSprite.graphics.clear(); var _local3:int; while (_local3 < cloudsArray.length) { cloudsArray[_local3].update(); _local2.copyValues(cloudsArray[_local3].position); cloudProjection.drawParallelepiped(_local2, 100, 15, 50, 4294967295); _local2.x = (_local2.x - 10); _local2.y = (_local2.y - 10); cloudProjection.drawParallelepiped(_local2, 70, 20, 50, 4294967295); _local2.x = (_local2.x + 10); _local2.y = (_local2.y - 20); cloudProjection.drawParallelepiped(_local2, 40, 20, 50, 4294967295); _local2.x = (_local2.x - 30); _local2.y = (_local2.y - 15); cloudProjection.drawParallelepiped(_local2, 20, 20, 50, 4294967295); if (_local2.x > cloudEndXs[_local3]){ _local2.x = (cloudsArray[_local3].position.x - 100); cloudsArray[_local3].position.x = cloudStartXs[_local3]; cloudsArray[_local3].position.z = (((_local3 + 3) * 500) - Math.round((Math.random() * 250))); cloudsArray[_local3].speed.x = ((Math.round((Math.random() * 20)) / 10) + 1); }; cloudProjection.render(); _local3++; }; cloudsBitmapData.lock(); cloudsBitmapData.fillRect(new Rectangle(0, 0, 600, 450), 0); cloudsBitmapData.draw(cloudSprite); cloudsBitmapData.unlock(); } private function createCloudCover():void{ var _local2:Point3D; cloudsBitmapData = new BitmapData(600, 450); cloudsBitmap = new Bitmap(cloudsBitmapData); backgroundSprite.addChild(cloudsBitmap); cloudSprite = new Sprite(); cloudProjection = new Projection(cloudSprite); cloudProjection.setScale(15); cloudProjection.setScreen(new Point3D(0, 0, 2000)); cloudProjection.setCamera(new Point3D(300, 500, -300)); cloudSpeed = new Point(); if (cloudSpeed.x == 0){ cloudSpeed.x = 1; }; cloudStartXs = new Array(); cloudEndXs = new Array(); cloudsArray = new Array(); var _local1:int; while (_local1 < 10) { cloudSpeed.x = ((Math.round((Math.random() * 20)) / 10) + 1); cloudSpeed.y = -1; _local2 = new Point3D(0, -250, ((_local1 + 3) * 500)); cloudStartXs[_local1] = 0; while (cloudProjection.getProjectionCoordinates(new Point3D((cloudStartXs[_local1] + 100), 0, _local2.z)).x > 0) { cloudStartXs[_local1] = (cloudStartXs[_local1] - 10); }; cloudEndXs[_local1] = 0; while (cloudProjection.getProjectionCoordinates(new Point3D((cloudEndXs[_local1] - 100), 0, _local2.z)).x < 600) { cloudEndXs[_local1] = (cloudEndXs[_local1] + 10); }; _local2.x = Math.round(((Math.random() * (cloudEndXs[_local1] - cloudStartXs[_local1])) + cloudStartXs[_local1])); cloudsArray.push(new Cloud(_local2, cloudSpeed.clone())); _local1++; }; } private function hideSprite(_arg1:Event):void{ backgroundSprite.visible = false; overlaySprite.visible = false; } public function play():void{ var _local1:GTween; if (!backgroundSprite.visible){ backgroundSprite.visible = true; _local1 = new GTween(backgroundSprite, 2, {y:0}, {ease:Equations.easeOutSine}); overlaySprite.y = 0; overlaySprite.visible = true; backgroundSprite.addEventListener(Event.ENTER_FRAME, updateClouds); }; } public function pause():void{ backgroundSprite.removeEventListener(Event.ENTER_FRAME, updateClouds); var _local1:GTween = new GTween(backgroundSprite, 2, {y:-450}, {ease:Equations.easeOutSine}); var _local2:GTween = new GTween(overlaySprite, 2, {y:-450}, {ease:Equations.easeOutSine}); _local1.addEventListener(Event.COMPLETE, hideSprite); } public static function getInstance():BackgroundManager{ if (instance){ } else { instance = new BackgroundManager(new PrivateClass()); }; return (instance); } } }//package class PrivateClass { private function PrivateClass(){ } }
Section 244
//Cloud (Cloud) package { import game.geom.*; import flash.geom.*; public class Cloud { public var position:Point3D; public var speed:Point; public function Cloud(_arg1:Point3D, _arg2:Point){ this.position = _arg1; this.speed = _arg2; } public function update():void{ position.x = (position.x + speed.x); position.z = (position.z + speed.y); } } }//package
Section 245
//GamesFreeIntro (GamesFreeIntro) package { import flash.display.*; public dynamic class GamesFreeIntro extends MovieClip { } }//package
Section 246
//GFLogo (GFLogo) package { import flash.display.*; public dynamic class GFLogo extends MovieClip { } }//package
Section 247
//Logo (Logo) package { import flash.display.*; public dynamic class Logo extends MovieClip { } }//package
Section 248
//Main (Main) package { import flash.events.*; import game.profile.*; import game.ui.*; import flash.display.*; import game.match.*; import game.sound.*; import flash.geom.*; import com.senocular.*; public class Main extends Sprite { private var mainIntro:MainIntro; public function Main():void{ if (stage){ init(); } else { addEventListener(Event.ADDED_TO_STAGE, init); }; } private function init(_arg1:Event=null):void{ removeEventListener(Event.ADDED_TO_STAGE, init); TopLevel.changeMainClip(this); ProfileController.getInstance(); Key.initialize(stage); BackgroundManager.getInstance(); SoundManager.getInstance(); playIntro(); scrollRect = new Rectangle(0, 0, 600, 450); } private function createTestProfile(_arg1:ProfileController):void{ _arg1.setActiveSlot(0); _arg1.createProfile("Newp Rofile 0"); _arg1.saveProfile(); } private function launchTest():void{ var _local1:MatchResult = new MatchResult(); _local1.oldExperience = ProfileController.getInstance().profile.experience; _local1.playerWon = true; _local1.oldLevel = ProfileController.getInstance().profile.experienceLevel; _local1.tournamentLevel = 1; _local1.superStrikes = 15; _local1.newExperience = ProfileController.getInstance().profile.addExperience(_local1.experience); MenuController.getInstance().showResults(_local1, "main"); ProfileController.getInstance().saveProfile(); } private function playIntro():void{ mainIntro = new MainIntro(); addChild(mainIntro); stage.frameRate = 30; mainIntro.addEventListener(Event.COMPLETE, startMain); mainIntro.addEventListener(Event.UNLOAD, introEndedHandler); mainIntro.play(); } private function start(_arg1:Event=null):void{ stage.frameRate = 40; MenuController.getInstance().addViewToContainer(TopLevel.menuLayer); if (ProfileController.getInstance().loadLastProfile()){ MenuController.getInstance().callMenu("main"); } else { if (ProfileController.getInstance().checkIfProflesExist()){ MenuController.getInstance().callMenu("profiles"); } else { ProfileController.getInstance().setActiveSlot(0); ProfileController.getInstance().createProfile("Player 1"); MenuController.getInstance().callMenu("main"); }; }; BackgroundManager.getInstance().play(); SoundManager.getInstance().playMusic(); AchievementManager.getInstance(); } private function startMain(_arg1:Event):void{ start(); } private function introEndedHandler(_arg1:Event):void{ removeChild(mainIntro); } } }//package
Section 249
//MainIntro (MainIntro) package { import flash.events.*; import flash.display.*; import com.gskinner.motion.*; import flash.net.*; import flash.filters.*; import caurina.transitions.*; public class MainIntro extends Sprite { private var gfClickOverlay:Sprite; private var rtLogo:Logo; private var whiteFlash:Sprite; private var gamesfreeIntro:GamesFreeIntro; private function gfClickHandler(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamesfree.com"), "_blank"); } private function hideEverything(_arg1:Event=null):void{ } private function prepareGF():void{ graphics.beginFill(3558499, 1); graphics.drawRect(0, 0, 600, 450); graphics.endFill(); showGFLogo(); } private function showRTLogo(_arg1:Event=null):void{ rtLogo = new Logo(); rtLogo.scaleX = (rtLogo.scaleY = 10); rtLogo.alpha = 0; rtLogo.x = 300; rtLogo.y = 100; addChild(rtLogo); var _local2:GTween = new GTween(rtLogo, 0.8, {alpha:1}, Equations.easeOutQuad); var _local3:GTween = new GTween(rtLogo, 1, {y:20, scaleY:1, scaleX:1}, Equations.easeOutQuad); whiteFlash = new Sprite(); whiteFlash.graphics.beginFill(0xFFFFFF, 1); whiteFlash.graphics.drawRect(0, 0, 600, 450); whiteFlash.graphics.endFill(); whiteFlash.alpha = 0; addChild(whiteFlash); var _local4:GTween = new GTween(whiteFlash, 0.1, {alpha:1}, Equations.easeOutQuad); _local4.delay = 1; var _local5:GTween = new GTween(whiteFlash, 0.9, {alpha:0}, Equations.easeInCubic); _local5.delay = 1.2; _local4.addEventListener(Event.COMPLETE, complete, false, 0, true); _local5.addEventListener(Event.COMPLETE, unload, false, 0, true); } private function hideGFLogo():void{ gamesfreeIntro.stop(); removeChild(gamesfreeIntro); removeChild(gfClickOverlay); showRTLogo(); } public function play():void{ prepareGF(); } private function unload(_arg1:Event=null):void{ removeChild(whiteFlash); dispatchEvent(new Event(Event.UNLOAD)); } private function complete(_arg1:Event=null):void{ removeChild(rtLogo); graphics.clear(); dispatchEvent(new Event(Event.COMPLETE)); } private function gfFrameHandler(_arg1:Event):void{ if (MovieClip(_arg1.target).currentFrame == 112){ gamesfreeIntro.removeEventListener(Event.ENTER_FRAME, gfFrameHandler); hideGFLogo(); }; } private function showGFLogo():void{ gamesfreeIntro = new GamesFreeIntro(); var _local1:Array = gamesfreeIntro.filters; _local1.push(new GlowFilter(0, 1, 3, 3, 100, 1)); gamesfreeIntro.filters = _local1; gamesfreeIntro.scaleX = (gamesfreeIntro.scaleY = 1.1); gamesfreeIntro.x = (300 - (gamesfreeIntro.width / 2)); gamesfreeIntro.y = 165; addChild(gamesfreeIntro); gamesfreeIntro.addEventListener(Event.ENTER_FRAME, gfFrameHandler, false, 0, true); gfClickOverlay = new Sprite(); gfClickOverlay.graphics.beginFill(0, 0); gfClickOverlay.graphics.drawRect(0, 0, 600, 450); gfClickOverlay.graphics.endFill(); gfClickOverlay.addEventListener(MouseEvent.CLICK, gfClickHandler, false, 0, true); gfClickOverlay.buttonMode = true; addChild(gfClickOverlay); } } }//package
Section 250
//PlayMoreGamesIcon (PlayMoreGamesIcon) package { import flash.display.*; public dynamic class PlayMoreGamesIcon extends Sprite { } }//package
Section 251
//Preloader (Preloader) package { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.text.*; import flash.utils.*; import flash.filters.*; import flash.net.*; public class Preloader extends MovieClip { private const loaderBarY:int = 220; private var loaderBar:Sprite; private var percent:TextField; private var gfLogo:GFLogo; private var rtLogo:Logo; private var loadedPercent:int; public function Preloader(){ stop(); stage.showDefaultContextMenu = false; stage.stageFocusRect = false; stage.scaleMode = StageScaleMode.NO_SCALE; scrollRect = new Rectangle(0, 0, 600, 450); TopLevel.setup(stage, this); BackgroundManager.getInstance(); BackgroundManager.getInstance().play(); rtLogo = new Logo(); rtLogo.x = 300; rtLogo.y = 20; addChild(rtLogo); gfLogo = new GFLogo(); gfLogo.scaleY = (gfLogo.scaleX = 1); var _local1:Array = gfLogo.filters; _local1.push(new GlowFilter(0, 1, 3, 3, 2, 1)); gfLogo.filters = _local1; gfLogo.x = (570 - gfLogo.width); gfLogo.y = 395; addChild(gfLogo); gfLogo.addEventListener(MouseEvent.CLICK, gfClick); gfLogo.buttonMode = true; preparePreloader(); } private function gfClick(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.gamesfree.com"), "_blank"); } private function checkFrame(_arg1:Event):void{ if (((stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal) * 200) > loadedPercent){ loadedPercent++; }; loaderBar.graphics.clear(); percent.text = (int((loadedPercent / 2)) + "%"); percent.x = 260; var _local2:Matrix = new Matrix(); _local2.createGradientBox(1, 45, (Math.PI / 2), 0, loaderBarY); loaderBar.graphics.lineStyle(2, 0xFFFFFF, 1); loaderBar.graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local2); loaderBar.graphics.drawRoundRect(140, loaderBarY, 320, 45, 20, 20); loaderBar.graphics.endFill(); loaderBar.graphics.beginGradientFill("linear", [16576033, 16494651], [1, 1], [0, 0xFF], _local2); loaderBar.graphics.drawRoundRect(140, loaderBarY, ((1.5 * loadedPercent) + 20), 45, 20, 20); loaderBar.graphics.endFill(); _local2.createGradientBox(1, 25, (Math.PI / 2), 0, (loaderBarY + 10)); loaderBar.graphics.beginGradientFill("linear", [2730978, 29116], [0.7, 0.7], [0, 0xFF], _local2); loaderBar.graphics.drawRoundRect(260, (loaderBarY + 10), 80, 25, 10, 10); loaderBar.graphics.endFill(); if (loadedPercent >= 200){ hidePreloader(); startup(); }; } private function preparePreloader():void{ var _local1:Matrix = new Matrix(); loaderBar = new Sprite(); _local1.createGradientBox(1, 45, (Math.PI / 2), 0, loaderBarY); loaderBar.graphics.lineStyle(2, 0xFFFFFF, 1); loaderBar.graphics.beginGradientFill("linear", [29116, 2730978], [1, 1], [0, 0xFF], _local1); loaderBar.graphics.drawRoundRect(140, loaderBarY, 320, 45, 20, 20); loaderBar.graphics.endFill(); addChild(loaderBar); percent = new TextField(); percent.x = 0; percent.y = (loaderBarY + 8); percent.width = 80; percent.defaultTextFormat = new TextFormat("Tahoma", 20, 0xFFFFFF, null, true, null, null, null, "center"); percent.selectable = false; addChild(percent); addEventListener(Event.ENTER_FRAME, checkFrame); } private function hidePreloader():void{ removeChild(percent); removeChild(loaderBar); removeChild(rtLogo); removeChild(gfLogo); removeEventListener(Event.ENTER_FRAME, checkFrame); } private function startup():void{ graphics.clear(); gotoAndStop(2); var _local1:Class = (getDefinitionByName("Main") as Class); addChild((new (_local1) as DisplayObject)); } } }//package
Section 252
//TopLevel (TopLevel) package { import flash.display.*; public class TopLevel { public static var overlayLayer:Sprite; public static var backgroundLayer:Sprite; public static var graphicsLayer:Sprite; public static var menuLayer:Sprite; public static var stage:Stage; public function TopLevel(_arg1:PrivateClass){ } public static function changeMainClip(_arg1:Sprite):void{ _arg1.addChild(backgroundLayer); _arg1.addChild(menuLayer); _arg1.addChild(graphicsLayer); _arg1.addChild(overlayLayer); } public static function setup(_arg1:Stage, _arg2:Sprite):void{ stage = _arg1; backgroundLayer = new Sprite(); backgroundLayer.tabEnabled = false; backgroundLayer.tabChildren = false; graphicsLayer = new Sprite(); graphicsLayer.tabEnabled = false; graphicsLayer.tabChildren = false; menuLayer = new Sprite(); menuLayer.tabEnabled = false; menuLayer.tabChildren = false; overlayLayer = new Sprite(); overlayLayer.tabEnabled = false; overlayLayer.tabChildren = false; _arg2.addChild(backgroundLayer); _arg2.addChild(menuLayer); _arg2.addChild(graphicsLayer); _arg2.addChild(overlayLayer); } } }//package class PrivateClass { private function PrivateClass(){ } }
Section 253
//UISpriteSheet (UISpriteSheet) package { import flash.display.*; public dynamic class UISpriteSheet extends MovieClip { public var sliderButton:MovieClip; public var flashingDownState:MovieClip; public var profileDeleteDown:MovieClip; public var buttonOverState:MovieClip; public var functionalDownState:MovieClip; public var buttonDisabled:MovieClip; public var flashingOverState:MovieClip; public var defeatedUpState:MovieClip; public var bottomStripe:MovieClip; public var toggleOn:MovieClip; public var defeatedDownState:MovieClip; public var profileDeleteConfirmOver:MovieClip; public var functionalOverState:MovieClip; public var buttonUpState:MovieClip; public var profileDeleteOver:MovieClip; public var defeatedOverState:MovieClip; public var profileDeleteUp:MovieClip; public var logo:MovieClip; public var functionalUpState:MovieClip; public var profileDeleteConfirmDown:MovieClip; public var nameStripe:MovieClip; public var toggleOff:MovieClip; public var flashingUpState:MovieClip; public var buttonDownState:MovieClip; } }//package

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClipUses:1Used by:23
Symbol 3 GraphicUsed by:23
Symbol 4 GraphicUsed by:5 11
Symbol 5 MovieClipUses:4Used by:23
Symbol 6 GraphicUsed by:23
Symbol 7 GraphicUsed by:8
Symbol 8 MovieClipUses:7Used by:10 12
Symbol 9 GraphicUsed by:10 12
Symbol 10 MovieClipUses:8 9Used by:23
Symbol 11 MovieClipUses:4Used by:23
Symbol 12 MovieClipUses:8 9Used by:23
Symbol 13 GraphicUsed by:14 20
Symbol 14 MovieClipUses:13Used by:23
Symbol 15 GraphicUsed by:23
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:16Used by:19 21
Symbol 18 GraphicUsed by:19 21
Symbol 19 MovieClipUses:17 18Used by:23
Symbol 20 MovieClipUses:13Used by:23
Symbol 21 MovieClipUses:17 18Used by:23
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClip {Logo} [Logo]Uses:2 3 5 6 10 11 12 14 15 19 20 21 22
Symbol 24 GraphicUsed by:36
Symbol 25 GraphicUsed by:26
Symbol 26 MovieClipUses:25Used by:36
Symbol 27 GraphicUsed by:36
Symbol 28 GraphicUsed by:29
Symbol 29 MovieClipUses:28Used by:36
Symbol 30 GraphicUsed by:36
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClipUses:31Used by:36
Symbol 33 GraphicUsed by:36
Symbol 34 GraphicUsed by:35
Symbol 35 MovieClipUses:34Used by:36
Symbol 36 MovieClip {GFLogo} [GFLogo]Uses:24 26 27 29 30 32 33 35
Symbol 37 GraphicUsed by:94
Symbol 38 GraphicUsed by:58
Symbol 39 GraphicUsed by:58 61 81 90
Symbol 40 GraphicUsed by:41
Symbol 41 MovieClipUses:40Used by:58 61 81 90
Symbol 42 GraphicUsed by:58 61 81 90
Symbol 43 GraphicUsed by:45
Symbol 44 GraphicUsed by:45
Symbol 45 MovieClipUses:43 44Used by:58 61 81 90
Symbol 46 GraphicUsed by:58 61 80 90
Symbol 47 GraphicUsed by:58 61 81
Symbol 48 GraphicUsed by:49
Symbol 49 MovieClipUses:48Used by:58 61 81
Symbol 50 GraphicUsed by:58 61 81
Symbol 51 GraphicUsed by:52
Symbol 52 MovieClipUses:51Used by:58 61 81
Symbol 53 GraphicUsed by:58 61 81
Symbol 54 GraphicUsed by:58 61 81 90
Symbol 55 GraphicUsed by:58 61 81 90
Symbol 56 GraphicUsed by:58 90
Symbol 57 GraphicUsed by:58 61 81 90
Symbol 58 MovieClipUses:38 39 41 42 45 46 47 49 50 52 53 54 55 56 57Used by:94
Symbol 59 GraphicUsed by:61
Symbol 60 GraphicUsed by:61 81
Symbol 61 MovieClipUses:59 39 41 42 45 46 47 49 50 52 53 54 55 60 57Used by:94
Symbol 62 SoundUsed by:94
Symbol 63 FontUsed by:64
Symbol 64 TextUses:63Used by:65
Symbol 65 MovieClipUses:64Used by:94
Symbol 66 FontUsed by:67
Symbol 67 TextUses:66Used by:94
Symbol 68 GraphicUsed by:70
Symbol 69 GraphicUsed by:70
Symbol 70 MovieClip {UISprites_fla.gamesfre_pre_mendengus_56} [UISprites_fla.gamesfre_pre_mendengus_56]Uses:68 69Used by:94
Symbol 71 GraphicUsed by:76
Symbol 72 GraphicUsed by:76
Symbol 73 GraphicUsed by:76
Symbol 74 GraphicUsed by:76
Symbol 75 GraphicUsed by:76
Symbol 76 MovieClipUses:71 72 73 74 75Used by:81
Symbol 77 GraphicUsed by:80
Symbol 78 GraphicUsed by:80
Symbol 79 GraphicUsed by:80
Symbol 80 MovieClipUses:46 77 78 79Used by:81
Symbol 81 MovieClipUses:76 39 41 42 45 80 47 49 50 52 53 54 55 60 57Used by:94
Symbol 82 GraphicUsed by:90
Symbol 83 GraphicUsed by:90
Symbol 84 GraphicUsed by:85
Symbol 85 MovieClipUses:84Used by:90
Symbol 86 GraphicUsed by:90
Symbol 87 GraphicUsed by:88
Symbol 88 MovieClipUses:87Used by:90
Symbol 89 GraphicUsed by:90
Symbol 90 MovieClipUses:82 39 41 42 45 46 83 85 86 88 89 54 55 56 57Used by:94
Symbol 91 SoundUsed by:94
Symbol 92 GraphicUsed by:93 187
Symbol 93 MovieClipUses:92Used by:94
Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro]Uses:37 58 61 62 65 67 70 81 90 91 93
Symbol 95 Sound {game.sound.SFXLibrary_achievement} [game.sound.SFXLibrary_achievement]
Symbol 96 Sound {game.sound.SFXLibrary_SFXLongCheer1} [game.sound.SFXLibrary_SFXLongCheer1]
Symbol 97 Sound {game.sound.SFXLibrary_SFXLongCheer2} [game.sound.SFXLibrary_SFXLongCheer2]
Symbol 98 Sound {game.sound.SFXLibrary_SFXWoosh2} [game.sound.SFXLibrary_SFXWoosh2]
Symbol 99 Sound {game.sound.SFXLibrary_SFXWoosh1} [game.sound.SFXLibrary_SFXWoosh1]
Symbol 100 Sound {game.sound.SFXLibrary_SFXWoosh3} [game.sound.SFXLibrary_SFXWoosh3]
Symbol 101 Sound {game.sound.SFXLibrary_SFXExplosion} [game.sound.SFXLibrary_SFXExplosion]
Symbol 102 Sound {game.sound.SFXLibrary_rollover} [game.sound.SFXLibrary_rollover]
Symbol 103 Sound {game.sound.SFXLibrary_introMusic} [game.sound.SFXLibrary_introMusic]
Symbol 104 Sound {game.sound.SFXLibrary_SFXFlash} [game.sound.SFXLibrary_SFXFlash]
Symbol 105 Sound {game.sound.SFXLibrary_SFXReverseExplosion} [game.sound.SFXLibrary_SFXReverseExplosion]
Symbol 106 Sound {game.sound.SFXLibrary_SFXCrowd1} [game.sound.SFXLibrary_SFXCrowd1]
Symbol 107 Sound {game.sound.SFXLibrary_SFXCheer1} [game.sound.SFXLibrary_SFXCheer1]
Symbol 108 Sound {game.sound.SFXLibrary_SFXCheer4} [game.sound.SFXLibrary_SFXCheer4]
Symbol 109 Sound {game.sound.SFXLibrary_SFXRacket2} [game.sound.SFXLibrary_SFXRacket2]
Symbol 110 Sound {game.sound.SFXLibrary_SFXCheer3} [game.sound.SFXLibrary_SFXCheer3]
Symbol 111 Sound {game.sound.SFXLibrary_SFXRacket1} [game.sound.SFXLibrary_SFXRacket1]
Symbol 112 Sound {game.sound.SFXLibrary_SFXCheer2} [game.sound.SFXLibrary_SFXCheer2]
Symbol 113 Sound {game.sound.SFXLibrary_SFXSlash} [game.sound.SFXLibrary_SFXSlash]
Symbol 114 Sound {game.sound.SFXLibrary_SFXCrowd3} [game.sound.SFXLibrary_SFXCrowd3]
Symbol 115 Sound {game.sound.SFXLibrary_SFXCrowd2} [game.sound.SFXLibrary_SFXCrowd2]
Symbol 116 Sound {game.sound.SFXLibrary_musicTrack1} [game.sound.SFXLibrary_musicTrack1]
Symbol 117 Sound {game.sound.SFXLibrary_button} [game.sound.SFXLibrary_button]
Symbol 118 GraphicUsed by:132
Symbol 119 GraphicUsed by:131
Symbol 120 GraphicUsed by:121
Symbol 121 MovieClipUses:120Used by:131
Symbol 122 GraphicUsed by:131
Symbol 123 GraphicUsed by:124
Symbol 124 MovieClipUses:123Used by:131
Symbol 125 GraphicUsed by:131
Symbol 126 GraphicUsed by:127
Symbol 127 MovieClipUses:126Used by:131
Symbol 128 GraphicUsed by:131
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClipUses:129Used by:131
Symbol 131 MovieClipUses:119 121 122 124 125 127 128 130Used by:132
Symbol 132 MovieClip {PlayMoreGamesIcon} [PlayMoreGamesIcon]Uses:118 131
Symbol 133 GraphicUsed by:134 182
Symbol 134 MovieClipUses:133Used by:209
Symbol 135 GraphicUsed by:136
Symbol 136 MovieClipUses:135Used by:209
Symbol 137 GraphicUsed by:138
Symbol 138 MovieClipUses:137Used by:209
Symbol 139 GraphicUsed by:140
Symbol 140 MovieClipUses:139Used by:209
Symbol 141 GraphicUsed by:142
Symbol 142 MovieClipUses:141Used by:209
Symbol 143 GraphicUsed by:144
Symbol 144 MovieClipUses:143Used by:209
Symbol 145 GraphicUsed by:146
Symbol 146 MovieClipUses:145Used by:209
Symbol 147 GraphicUsed by:148
Symbol 148 MovieClipUses:147Used by:209
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClipUses:149Used by:209
Symbol 151 GraphicUsed by:152
Symbol 152 MovieClipUses:151Used by:209
Symbol 153 GraphicUsed by:166
Symbol 154 GraphicUsed by:155
Symbol 155 MovieClipUses:154Used by:166
Symbol 156 GraphicUsed by:157
Symbol 157 MovieClipUses:156Used by:166
Symbol 158 GraphicUsed by:161
Symbol 159 GraphicUsed by:161
Symbol 160 GraphicUsed by:161
Symbol 161 ButtonUses:158 159 160Used by:166
Symbol 162 GraphicUsed by:165
Symbol 163 GraphicUsed by:165
Symbol 164 GraphicUsed by:165
Symbol 165 ButtonUses:162 163 164Used by:166
Symbol 166 MovieClipUses:153 155 157 161 165Used by:209
Symbol 167 GraphicUsed by:168
Symbol 168 MovieClipUses:167Used by:209
Symbol 169 GraphicUsed by:170
Symbol 170 MovieClipUses:169Used by:209
Symbol 171 GraphicUsed by:172
Symbol 172 MovieClipUses:171Used by:209
Symbol 173 GraphicUsed by:174
Symbol 174 MovieClipUses:173Used by:209
Symbol 175 GraphicUsed by:176
Symbol 176 MovieClipUses:175Used by:209
Symbol 177 GraphicUsed by:178
Symbol 178 MovieClipUses:177Used by:209
Symbol 179 GraphicUsed by:180
Symbol 180 MovieClipUses:179Used by:209
Symbol 181 GraphicUsed by:182
Symbol 182 MovieClipUses:133 181Used by:209
Symbol 183 GraphicUsed by:184
Symbol 184 MovieClipUses:183Used by:209
Symbol 185 GraphicUsed by:186
Symbol 186 MovieClipUses:185Used by:209
Symbol 187 MovieClipUses:92Used by:208
Symbol 188 GraphicUsed by:208
Symbol 189 GraphicUsed by:190 196
Symbol 190 MovieClipUses:189Used by:208
Symbol 191 GraphicUsed by:208
Symbol 192 GraphicUsed by:193
Symbol 193 MovieClipUses:192Used by:195 197
Symbol 194 GraphicUsed by:195 197
Symbol 195 MovieClipUses:193 194Used by:208
Symbol 196 MovieClipUses:189Used by:208
Symbol 197 MovieClipUses:193 194Used by:208
Symbol 198 GraphicUsed by:199 205
Symbol 199 MovieClipUses:198Used by:208
Symbol 200 GraphicUsed by:208
Symbol 201 GraphicUsed by:202
Symbol 202 MovieClipUses:201Used by:204 206
Symbol 203 GraphicUsed by:204 206
Symbol 204 MovieClipUses:202 203Used by:208
Symbol 205 MovieClipUses:198Used by:208
Symbol 206 MovieClipUses:202 203Used by:208
Symbol 207 GraphicUsed by:208
Symbol 208 MovieClipUses:187 188 190 191 195 196 197 199 200 204 205 206 207Used by:209
Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet]Uses:134 136 138 140 142 144 146 148 150 152 166 168 170 172 174 176 178 180 182 184 186 208
Symbol 210 GraphicUsed by:231
Symbol 211 GraphicUsed by:212
Symbol 212 MovieClipUses:211Used by:231
Symbol 213 GraphicUsed by:214
Symbol 214 MovieClipUses:213Used by:231
Symbol 215 GraphicUsed by:216
Symbol 216 MovieClipUses:215Used by:231
Symbol 217 GraphicUsed by:218
Symbol 218 MovieClipUses:217Used by:231
Symbol 219 GraphicUsed by:220
Symbol 220 MovieClipUses:219Used by:231
Symbol 221 GraphicUsed by:222
Symbol 222 MovieClipUses:221Used by:231
Symbol 223 GraphicUsed by:224
Symbol 224 MovieClipUses:223Used by:231
Symbol 225 GraphicUsed by:226
Symbol 226 MovieClipUses:225Used by:231
Symbol 227 GraphicUsed by:228
Symbol 228 MovieClipUses:227Used by:231
Symbol 229 GraphicUsed by:230
Symbol 230 MovieClipUses:229Used by:231
Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet]Uses:210 212 214 216 218 220 222 224 226 228 230
Symbol 232 BinaryData {game.ui.XMLReader_MenuList}
Symbol 233 Font {game.FontManager_LiberationSansBoldItalic}
Symbol 234 BinaryData {game.ui.XMLReader_ColorsList}
Symbol 235 BinaryData {game.ui.XMLReader_LevelsList}
Symbol 236 BinaryData {game.ui.XMLReader_OpponentList}

Instance Names

"emptyBar5"Symbol 166 MovieClip Frame 1Symbol 155 MovieClip
"emptyBar4"Symbol 166 MovieClip Frame 1Symbol 155 MovieClip
"emptyBar3"Symbol 166 MovieClip Frame 1Symbol 155 MovieClip
"emptyBar2"Symbol 166 MovieClip Frame 1Symbol 155 MovieClip
"emptyBar1"Symbol 166 MovieClip Frame 1Symbol 155 MovieClip
"fullBar5"Symbol 166 MovieClip Frame 1Symbol 157 MovieClip
"fullBar4"Symbol 166 MovieClip Frame 1Symbol 157 MovieClip
"fullBar3"Symbol 166 MovieClip Frame 1Symbol 157 MovieClip
"fullBar2"Symbol 166 MovieClip Frame 1Symbol 157 MovieClip
"fullBar1"Symbol 166 MovieClip Frame 1Symbol 157 MovieClip
"plusButton"Symbol 166 MovieClip Frame 1Symbol 161 Button
"minusButton"Symbol 166 MovieClip Frame 1Symbol 165 Button
"buttonUpState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 134 MovieClip
"buttonOverState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 136 MovieClip
"buttonDownState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 138 MovieClip
"functionalUpState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 144 MovieClip
"functionalOverState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 142 MovieClip
"functionalDownState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 140 MovieClip
"buttonDisabled"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 146 MovieClip
"defeatedDownState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 148 MovieClip
"defeatedOverState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 150 MovieClip
"defeatedUpState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 152 MovieClip
"sliderButton"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 166 MovieClip
"toggleOn"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 168 MovieClip
"toggleOff"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 170 MovieClip
"profileDeleteUp"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 172 MovieClip
"profileDeleteOver"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 174 MovieClip
"profileDeleteDown"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 176 MovieClip
"profileDeleteConfirmOver"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 178 MovieClip
"profileDeleteConfirmDown"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 180 MovieClip
"flashingUpState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 182 MovieClip
"flashingOverState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 136 MovieClip
"flashingDownState"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 138 MovieClip
"nameStripe"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 184 MovieClip
"bottomStripe"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 186 MovieClip
"logo"Symbol 209 MovieClip {UISpriteSheet} [UISpriteSheet] Frame 1Symbol 208 MovieClip
"shadow"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 212 MovieClip
"amateurCup"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 214 MovieClip
"semiproCup"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 216 MovieClip
"worldCup"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 218 MovieClip
"grandbashCup"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 220 MovieClip
"rocketRacket"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 222 MovieClip
"defender"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 224 MovieClip
"wallMaster"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 226 MovieClip
"flawlessVictory"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 228 MovieClip
"jetBall"Symbol 231 MovieClip {AwardSpriteSheet} [AwardSpriteSheet] Frame 1Symbol 230 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1458 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 23 as "Logo"
ExportAssets (56)Timeline Frame 1Symbol 36 as "GFLogo"
ExportAssets (56)Timeline Frame 2Symbol 94 as "GamesFreeIntro"
ExportAssets (56)Timeline Frame 2Symbol 95 as "game.sound.SFXLibrary_achievement"
ExportAssets (56)Timeline Frame 2Symbol 96 as "game.sound.SFXLibrary_SFXLongCheer1"
ExportAssets (56)Timeline Frame 2Symbol 97 as "game.sound.SFXLibrary_SFXLongCheer2"
ExportAssets (56)Timeline Frame 2Symbol 98 as "game.sound.SFXLibrary_SFXWoosh2"
ExportAssets (56)Timeline Frame 2Symbol 99 as "game.sound.SFXLibrary_SFXWoosh1"
ExportAssets (56)Timeline Frame 2Symbol 100 as "game.sound.SFXLibrary_SFXWoosh3"
ExportAssets (56)Timeline Frame 2Symbol 101 as "game.sound.SFXLibrary_SFXExplosion"
ExportAssets (56)Timeline Frame 2Symbol 102 as "game.sound.SFXLibrary_rollover"
ExportAssets (56)Timeline Frame 2Symbol 103 as "game.sound.SFXLibrary_introMusic"
ExportAssets (56)Timeline Frame 2Symbol 104 as "game.sound.SFXLibrary_SFXFlash"
ExportAssets (56)Timeline Frame 2Symbol 105 as "game.sound.SFXLibrary_SFXReverseExplosion"
ExportAssets (56)Timeline Frame 2Symbol 106 as "game.sound.SFXLibrary_SFXCrowd1"
ExportAssets (56)Timeline Frame 2Symbol 107 as "game.sound.SFXLibrary_SFXCheer1"
ExportAssets (56)Timeline Frame 2Symbol 108 as "game.sound.SFXLibrary_SFXCheer4"
ExportAssets (56)Timeline Frame 2Symbol 109 as "game.sound.SFXLibrary_SFXRacket2"
ExportAssets (56)Timeline Frame 2Symbol 110 as "game.sound.SFXLibrary_SFXCheer3"
ExportAssets (56)Timeline Frame 2Symbol 111 as "game.sound.SFXLibrary_SFXRacket1"
ExportAssets (56)Timeline Frame 2Symbol 112 as "game.sound.SFXLibrary_SFXCheer2"
ExportAssets (56)Timeline Frame 2Symbol 113 as "game.sound.SFXLibrary_SFXSlash"
ExportAssets (56)Timeline Frame 2Symbol 114 as "game.sound.SFXLibrary_SFXCrowd3"
ExportAssets (56)Timeline Frame 2Symbol 115 as "game.sound.SFXLibrary_SFXCrowd2"
ExportAssets (56)Timeline Frame 2Symbol 116 as "game.sound.SFXLibrary_musicTrack1"
ExportAssets (56)Timeline Frame 2Symbol 117 as "game.sound.SFXLibrary_button"
ExportAssets (56)Timeline Frame 2Symbol 70 as "UISprites_fla.gamesfre_pre_mendengus_56"
ExportAssets (56)Timeline Frame 2Symbol 132 as "PlayMoreGamesIcon"
ExportAssets (56)Timeline Frame 2Symbol 209 as "UISpriteSheet"
ExportAssets (56)Timeline Frame 2Symbol 231 as "AwardSpriteSheet"
SerialNumber (41)Timeline Frame 1

Labels

"Preloader"Frame 1
"start"Frame 2
"looking"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 1
"tapping1"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 20
"logotext"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 22
"puff"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 35
"flap"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 59
"lookatus"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 75
"look"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 89
"tapping2"Symbol 94 MovieClip {GamesFreeIntro} [GamesFreeIntro] Frame 98




http://swfchan.com/37/180282/info.shtml
Created: 16/10 -2018 16:39:16 Last modified: 16/10 -2018 16:39:16 Server time: 28/04 -2024 11:30:12