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

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

Melon Mango Mayhem - Feed all of the melons in each level with tic tacs game.swf

This is the info page for
Flash #129721

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


Text
info

info

<p align="center"><font face="CoopBlack" size="45" color="#d75b18" letterSpacing="0.000000" kerning="1">25</font></p>

<p align="center"><font face="CoopBlack" size="45" color="#ff862d" letterSpacing="0.000000" kerning="1">25</font></p>

<p align="center"><font face="VAGRounded BT" size="17" color="#71bf44" letterSpacing="-1.000000" kerning="1">Lorem ipsum dolor sit amet, &nbsp;con sectetur adipiscing elit. Quisque sed euismod eros. Sed congue odio at urna posuere at scelerisque nisi mattis.</font></p>

START LEVEL

START LEVEL

NEXT LEVEL

NEXT LEVEL

OK

OK

<p align="right"><font face="Debussy" size="14" color="#71bf44" letterSpacing="0.000000" kerning="1">TIC TAC BONUS</font></p>

<p align="left"><font face="Debussy" size="14" color="#71bf44" letterSpacing="0.000000" kerning="1">0</font></p>

LEVEL SCORE

<p align="left"><font face="Debussy" size="18" color="#2e7549" letterSpacing="0.000000" kerning="1">0</font></p>

RETRY LEVEL

RETRY LEVEL

SUBMIT SCORE

SUBMIT SCORE

<p align="center"><font face="Debussy" size="22" color="#2e7549" letterSpacing="0.000000" kerning="1">You ran out of Tic Tacs!</font></p>

<p align="center"><font face="Debussy" size="27" color="#ffffff" letterSpacing="0.000000" kerning="1">0%</font></p>

soundbox

musicbox

PLAY

PLAY

HOW TO PLAY

HOW TO PLAY

SCORES

SCORES

SHARE

MORE GAMES

Move  your mouse to
determine the power and
angle of your throw
Click to launch your Tic Tacs
into the mouths of your little
melon friends
Use more mango throwers to
pass your Tic Tacs back and
forth around obstacles
The quicker you are and the
less Tic Tacs you drop,  the
higher your score!

1.
2.
3.
4.

PLAY GAME

PLAY GAME

HOME

<p align="center"><font face="Debussy" size="18" color="#71bf44" letterSpacing="-1.000000" kerning="1">200.</font></p>

<p align="left"><font face="Debussy" size="14" color="#2e7549" letterSpacing="0.000000" kerning="1">Joe Smith</font></p>

<p align="right"><font face="Debussy" size="14" color="#71bf44" letterSpacing="0.000000" kerning="1">999,100</font></p>

engine

SCORE

<p align="center"><font face="Debussy" size="15" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Debussy" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

TIME

<p align="center"><font face="Debussy" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Debussy" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Debussy" size="18" color="#ffffff" letterSpacing="0.000000" kerning="1">0</font></p>

tacs

HOME

RETRY

RETRY

SUBMIT

SUBMIT

YOUR SCORE

<p align="left"><font face="Debussy" size="18" color="#2e7549" letterSpacing="0.000000" kerning="1">128,093</font></p>

SEND

SEND

SEND

SEND

Name

Email

Receive our newsletter

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

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

Privacy

<p align="left"><font face="Debussy" size="18" color="#2e7549" letterSpacing="0.000000" kerning="1">128,093</font></p>

VIEW SCORES

VIEW SCORES

<p align="left"><font face="Debussy" size="18" color="#2e7549" letterSpacing="0.000000" kerning="1">128,093</font></p>

Your score has been sent!

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; 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.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Shape { b2internal var m_body:b2Body; b2internal var m_type:int; b2internal var m_sweepRadius:Number; public var userData:Object; b2internal var m_density:Number; private var m_filter:b2FilterData; b2internal var m_friction:Number; b2internal var m_next:b2Shape; b2internal var m_restitution:Number; private var m_proxy:b2Proxy; private var m_isSensor:Boolean; private var m_userData; 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 TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function SetRestitution(_arg1:Number):void{ m_restitution = _arg1; } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function SetFriction(_arg1:Number):void{ m_friction = _arg1; } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):int{ return (e_missCollide); } public function SetSensor(_arg1:Boolean):void{ m_isSensor = _arg1; } 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; }; } 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 SetUserData(_arg1):void{ m_userData = _arg1; } 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;// = -1 public function b2ShapeDef(){ 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); } public function GetExtents():b2Vec2{ return (new b2Vec2(((upperBound.x - lowerBound.x) / 2), ((upperBound.y - lowerBound.y) / 2))); } public function RayCast(_arg1:b2RayCastOutput, _arg2:b2RayCastInput):void{ var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local3:Number = Number.MIN_VALUE; var _local4:Number = Number.MAX_VALUE; _arg1.hit = false; var _local5:Number = _arg2.p1.x; var _local6:Number = _arg2.p1.y; var _local7:Number = (_arg2.p2.x - _arg2.p1.x); var _local8:Number = (_arg2.p2.y - _arg2.p1.y); var _local9:Number = Math.abs(_local7); var _local10:Number = Math.abs(_local8); _local11 = _arg1.normal; if (_local9 < Number.MIN_VALUE){ if ((((_local5 < lowerBound.x)) || ((upperBound.x < _local5)))){ return; }; } else { _local12 = (1 / _local7); _local13 = ((lowerBound.x - _local5) * _local12); _local14 = ((upperBound.x - _local5) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.x = _local16; _local11.y = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return; }; }; if (_local10 < Number.MIN_VALUE){ if ((((_local6 < lowerBound.y)) || ((upperBound.y < _local6)))){ return; }; } else { _local12 = (1 / _local8); _local13 = ((lowerBound.y - _local6) * _local12); _local14 = ((upperBound.y - _local6) * _local12); _local16 = -1; if (_local13 > _local14){ _local15 = _local13; _local13 = _local14; _local14 = _local15; _local16 = 1; }; if (_local13 > _local3){ _local11.y = _local16; _local11.x = 0; _local3 = _local13; }; _local4 = Math.min(_local4, _local14); if (_local3 > _local4){ return; }; }; } public function GetCenter():b2Vec2{ return (new b2Vec2(((lowerBound.x + upperBound.x) / 2), ((lowerBound.y + upperBound.y) / 2))); } public function Contains(_arg1:b2AABB):Boolean{ var _local2:Boolean; _local2 = ((_local2) && ((lowerBound.x <= _arg1.lowerBound.x))); _local2 = ((_local2) && ((lowerBound.y <= _arg1.lowerBound.y))); _local2 = ((_local2) && ((_arg1.upperBound.x <= upperBound.x))); _local2 = ((_local2) && ((_arg1.upperBound.y <= upperBound.y))); return (_local2); } public static function Combine(_arg1:b2AABB, _arg2:b2AABB):b2AABB{ var _local3:b2AABB; _local3 = new (b2AABB); _local3.lowerBound.x = Math.min(_arg1.lowerBound.x, _arg2.lowerBound.x); _local3.lowerBound.y = Math.min(_arg1.lowerBound.y, _arg2.lowerBound.y); _local3.upperBound.x = Math.max(_arg1.upperBound.x, _arg2.upperBound.x); _local3.upperBound.y = Math.max(_arg1.upperBound.y, _arg2.upperBound.y); 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++; }; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); if (_local12 <= ((100 * Number.MIN_VALUE) * _local22)){ g_GJK_Iterations = _local14; 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
//b2RayCastInput (Box2D.Collision.b2RayCastInput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastInput { public var p1:b2Vec2; public var maxFraction:Number; public var p2:b2Vec2; } }//package Box2D.Collision
Section 28
//b2RayCastOutput (Box2D.Collision.b2RayCastOutput) package Box2D.Collision { import Box2D.Common.Math.*; public class b2RayCastOutput { public var fraction:Number; public var hit:Boolean; public var normal:b2Vec2; } }//package Box2D.Collision
Section 29
//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 30
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { private static var b2_maxToiRootIters:int = 0; private static var b2_maxToiIters:int = 0; public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); 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++; }; b2_maxToiIters = b2Math.b2Max(_local20, b2_maxToiIters); return (_local16); } } }//package Box2D.Collision
Section 31
//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 32
//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 33
//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 34
//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 35
//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 36
//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 GetXForm2(_arg1:b2XForm, _arg2:Number):void{ var _local3:b2Mat22; var _local4:Number; if ((1 - t0) > Number.MIN_VALUE){ _arg1.position.x = (((1 - _arg2) * c0.x) + (_arg2 * c.x)); _arg1.position.y = (((1 - _arg2) * c0.y) + (_arg2 * c.y)); _local4 = (((1 - _arg2) * a0) + (_arg2 * a)); _arg1.R.Set(_local4); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; _local3 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } 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 37
//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 38
//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 39
//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(); } public function GetAngle():Number{ return (Math.atan2(R.col1.y, R.col1.x)); } } }//package Box2D.Common.Math
Section 40
//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 41
//b2internal (Box2D.Common.b2internal) package Box2D.Common { public namespace b2internal = "http://www.box2d.org/ns/b2internal"; }//package Box2D.Common
Section 42
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_fatAABBFactor:Number = 1.5; public static const b2_maxTranslation:Number = 2; public static const b2_pi:Number = 3.14159265358979; public static const b2_angularSleepTolerance:Number = 0.0349065850398866; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_maxTranslationSquared:Number = 4; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_maxRotation:Number = 1.5707963267949; public static const b2_maxRotationSquared:Number = 2.46740110027234; public static const b2_maxTOIJointsPerIsland:int = 32; 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_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const VERSION:String = "2.0.2"; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearCorrection:Number = 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 43
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; 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 44
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { 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 45
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var 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 46
//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 47
//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 48
//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 49
//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 50
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 51
//b2EdgeAndCircleContact (Box2D.Dynamics.Contacts.b2EdgeAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 52
//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 53
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var 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 54
//b2PolyAndEdgeContact (Box2D.Dynamics.Contacts.b2PolyAndEdgeContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 55
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; 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 56
//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 57
//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 58
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 59
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 60
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 61
//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 62
//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 63
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 64
//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 65
//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 66
//b2LineJoint (Box2D.Dynamics.Joints.b2LineJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 67
//b2LineJointDef (Box2D.Dynamics.Joints.b2LineJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 68
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { private var K1:b2Mat22; private var K:b2Mat22; 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 69
//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 70
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 71
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 72
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 73
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 74
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; 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 - m_lowerAngle), -(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 75
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 76
//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.Dynamics.Contacts.*; import Box2D.Common.*; public class b2Body { b2internal var m_xf:b2XForm; b2internal var m_controllerCount:int; public var isPushed:Boolean;// = false public var isHit:Boolean;// = false b2internal var m_contactList:b2ContactEdge; b2internal var m_angularVelocity:Number; b2internal var m_shapeCount:int; b2internal var m_invI:Number; public var bodyType:uint;// = 0 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; public var isEnemy:Boolean;// = false b2internal var m_next:b2Body; b2internal var m_shapeList:b2Shape; public var isOnGround:Boolean;// = false b2internal var m_force:b2Vec2; b2internal var m_sweep:b2Sweep; b2internal var m_mass:Number; private var m_userData; public var isDead:Boolean;// = false b2internal var m_invMass:Number; public var isGrenade:Boolean;// = false 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 SetLinearDamping(_arg1:Number):void{ m_linearDamping = _arg1; } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function GetWorld():b2World{ return (m_world); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function GetMassData():b2MassData{ var _local1:b2MassData = new b2MassData(); _local1.mass = m_mass; _local1.I = m_I; _local1.center = GetWorldCenter(); return (_local1); } 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 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:b2XForm):Boolean{ return (SetPositionAndAngle(_arg1.position, _arg1.GetAngle())); } 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 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 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 GetShapeList():b2Shape{ return (m_shapeList); } public function GetMass():Number{ return (m_mass); } public function GetAngle():Number{ return (m_sweep.a); } 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); }; m_I = _arg1.I; if ((((m_I > 0)) && (((m_flags & b2Body.e_fixedRotationFlag) == 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 GetNext():b2Body{ return (m_next); } 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 GetPosition():b2Vec2{ return (m_xf.position); } 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 WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearDamping():Number{ return (m_linearDamping); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetPosition(_arg1:b2Vec2):void{ SetPositionAndAngle(_arg1, GetAngle()); } 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 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 SetAngle(_arg1:Number):void{ SetPositionAndAngle(GetPosition(), _arg1); } 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); _local2.userData = _arg1.userData; 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 IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function SetPositionAndAngle(_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 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 AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } 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 GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } } }//package Box2D.Dynamics
Section 77
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var linearVelocity:b2Vec2; public var position:b2Vec2; public var isBullet:Boolean; public var isSleeping:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public var angularVelocity:Number; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); linearVelocity = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearVelocity.Set(0, 0); angularVelocity = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 78
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 79
//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 80
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; import Box2D.*; public class b2ContactListener { public var dad:MovieClip;// = null public function Add(_arg1:b2ContactPoint):void{ if (dad){ dad.handleContact(_arg1.shape1.userData, _arg1.shape2.userData, 0, _arg1.velocity.Length()); }; } public function Remove(_arg1:b2ContactPoint):void{ if (dad){ dad.handleContact(_arg1.shape1.userData, _arg1.shape2.userData, 2); }; } public function Persist(_arg1:b2ContactPoint):void{ if (dad){ dad.handleContact(_arg1.shape1.userData, _arg1.shape2.userData, 1); }; } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 81
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; 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 82
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; 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 83
//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 84
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; 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:b2Vec2; var _local10:Number; var _local11:Boolean; var _local12:Boolean; var _local13:Boolean; var _local14:Number; var _local15:Number; var _local16: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)); }; _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 { _local9 = b2Math.MulFV(_arg1.dt, _local6.m_linearVelocity); if (_local9.LengthSquared() > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local10 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local10) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _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) { _local11 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local12 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local13 = _local7.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local12 = ((_local12) && (_local13)); _local5++; }; if (((_local11) && (_local12))){ break; }; _local4++; }; Report(_local8.m_constraints); if (_arg3){ _local14 = Number.MAX_VALUE; _local15 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local16 = (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; _local14 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local16)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local15)))){ _local6.m_sleepTime = 0; _local14 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local14 = b2Math.b2Min(_local14, _local6.m_sleepTime); }; }; _local4++; }; if (_local14 >= 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:b2Vec2; var _local8:Number; var _local9:Boolean; var _local10:Boolean; var _local11: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 { _local7 = b2Math.MulFV(_arg1.dt, _local6.m_linearVelocity); if (_local7.LengthSquared() > b2Settings.b2_maxTranslationSquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * (b2Settings.b2_maxTranslation * _arg1.inv_dt)); }; _local8 = (_arg1.dt * _local6.m_angularVelocity); if (((_arg1.dt * _local6.m_angularVelocity) * _local8) > b2Settings.b2_maxRotationSquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = (-(b2Settings.b2_maxRotation) * _arg1.inv_dt); } else { _local6.m_angularVelocity = (b2Settings.b2_maxRotation * _arg1.inv_dt); }; }; _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) { _local9 = _local4.SolvePositionConstraints(_local5); _local10 = true; _local3 = 0; while (_local3 < m_jointCount) { _local11 = m_joints[_local3].SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local10 = ((_local10) && (_local11)); _local3++; }; if (((_local9) && (_local10))){ break; }; _local2++; }; Report(_local4.m_constraints); } } }//package Box2D.Dynamics
Section 85
//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 86
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Controllers.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import Box2D.Common.*; 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 (_arg1.isDead){ return; }; _arg1.isDead = true; 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 87
//MD5 (com.adobe.crypto.MD5) package com.adobe.crypto { import flash.utils.*; import com.adobe.utils.*; public class MD5 { public static var digest:ByteArray; private static function ff(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(f, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function f(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg2) | (~(_arg1) & _arg3))); } private static function g(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 & _arg3) | (_arg2 & ~(_arg3)))); } private static function h(_arg1:int, _arg2:int, _arg3:int):int{ return (((_arg1 ^ _arg2) ^ _arg3)); } private static function i(_arg1:int, _arg2:int, _arg3:int):int{ return ((_arg2 ^ (_arg1 | ~(_arg3)))); } private static function transform(_arg1:Function, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int):int{ var _local9:int = (((_arg2 + int(_arg1(_arg3, _arg4, _arg5))) + _arg6) + _arg8); return ((IntUtil.rol(_local9, _arg7) + _arg3)); } private static function hh(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(h, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hash(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (hashBinary(_local2)); } private static function createBlocks(_arg1:ByteArray):Array{ var _local2:Array = new Array(); var _local3:int = (_arg1.length * 8); var _local4 = 0xFF; var _local5:int; while (_local5 < _local3) { _local2[int((_local5 >> 5))] = (_local2[int((_local5 >> 5))] | ((_arg1[(_local5 / 8)] & _local4) << (_local5 % 32))); _local5 = (_local5 + 8); }; _local2[int((_local3 >> 5))] = (_local2[int((_local3 >> 5))] | (128 << (_local3 % 32))); _local2[int(((((_local3 + 64) >>> 9) << 4) + 14))] = _local3; return (_local2); } public static function hashBinary(_arg1:ByteArray):String{ var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local2 = 1732584193; var _local3 = -271733879; var _local4 = -1732584194; var _local5 = 271733878; var _local10:Array = createBlocks(_arg1); var _local11:int = _local10.length; var _local12:int; while (_local12 < _local11) { _local6 = _local2; _local7 = _local3; _local8 = _local4; _local9 = _local5; _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 7, -680876936); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 1))], 12, -389564586); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 17, 606105819); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 3))], 22, -1044525330); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 7, -176418897); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 5))], 12, 1200080426); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 17, -1473231341); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 7))], 22, -45705983); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 7, 1770035416); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 9))], 12, -1958414417); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 17, -42063); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 11))], 22, -1990404162); _local2 = ff(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 7, 1804603682); _local5 = ff(_local5, _local2, _local3, _local4, _local10[int((_local12 + 13))], 12, -40341101); _local4 = ff(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 17, -1502002290); _local3 = ff(_local3, _local4, _local5, _local2, _local10[int((_local12 + 15))], 22, 1236535329); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 5, -165796510); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 6))], 9, -1069501632); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 14, 643717713); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 0))], 20, -373897302); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 5, -701558691); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 10))], 9, 38016083); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 14, -660478335); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 4))], 20, -405537848); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 5, 568446438); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 14))], 9, -1019803690); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 14, -187363961); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 8))], 20, 1163531501); _local2 = gg(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 5, -1444681467); _local5 = gg(_local5, _local2, _local3, _local4, _local10[int((_local12 + 2))], 9, -51403784); _local4 = gg(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 14, 1735328473); _local3 = gg(_local3, _local4, _local5, _local2, _local10[int((_local12 + 12))], 20, -1926607734); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 5))], 4, -378558); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 8))], 11, -2022574463); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 11))], 16, 1839030562); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 14))], 23, -35309556); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 1))], 4, -1530992060); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 4))], 11, 1272893353); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 7))], 16, -155497632); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 10))], 23, -1094730640); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 13))], 4, 681279174); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 0))], 11, -358537222); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 3))], 16, -722521979); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 6))], 23, 76029189); _local2 = hh(_local2, _local3, _local4, _local5, _local10[int((_local12 + 9))], 4, -640364487); _local5 = hh(_local5, _local2, _local3, _local4, _local10[int((_local12 + 12))], 11, -421815835); _local4 = hh(_local4, _local5, _local2, _local3, _local10[int((_local12 + 15))], 16, 530742520); _local3 = hh(_local3, _local4, _local5, _local2, _local10[int((_local12 + 2))], 23, -995338651); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 0))], 6, -198630844); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 7))], 10, 1126891415); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 14))], 15, -1416354905); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 5))], 21, -57434055); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 12))], 6, 1700485571); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 3))], 10, -1894986606); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 10))], 15, -1051523); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 1))], 21, -2054922799); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 8))], 6, 1873313359); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 15))], 10, -30611744); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 6))], 15, -1560198380); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 13))], 21, 1309151649); _local2 = ii(_local2, _local3, _local4, _local5, _local10[int((_local12 + 4))], 6, -145523070); _local5 = ii(_local5, _local2, _local3, _local4, _local10[int((_local12 + 11))], 10, -1120210379); _local4 = ii(_local4, _local5, _local2, _local3, _local10[int((_local12 + 2))], 15, 718787259); _local3 = ii(_local3, _local4, _local5, _local2, _local10[int((_local12 + 9))], 21, -343485551); _local2 = (_local2 + _local6); _local3 = (_local3 + _local7); _local4 = (_local4 + _local8); _local5 = (_local5 + _local9); _local12 = (_local12 + 16); }; digest = new ByteArray(); digest.writeInt(_local2); digest.writeInt(_local3); digest.writeInt(_local4); digest.writeInt(_local5); digest.position = 0; return ((((IntUtil.toHex(_local2) + IntUtil.toHex(_local3)) + IntUtil.toHex(_local4)) + IntUtil.toHex(_local5))); } private static function gg(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(g, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } private static function ii(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):int{ return (transform(i, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7)); } public static function hashBytes(_arg1:ByteArray):String{ return (hashBinary(_arg1)); } } }//package com.adobe.crypto
Section 88
//IntUtil (com.adobe.utils.IntUtil) package com.adobe.utils { public class IntUtil { private static var hexChars:String = "0123456789abcdef"; public static function toHex(_arg1:int, _arg2:Boolean=false):String{ var _local4:int; var _local5:int; var _local3 = ""; if (_arg2){ _local4 = 0; while (_local4 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> (((3 - _local4) * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> ((3 - _local4) * 8)) & 15)))); _local4++; }; } else { _local5 = 0; while (_local5 < 4) { _local3 = (_local3 + (hexChars.charAt(((_arg1 >> ((_local5 * 8) + 4)) & 15)) + hexChars.charAt(((_arg1 >> (_local5 * 8)) & 15)))); _local5++; }; }; return (_local3); } public static function ror(_arg1:int, _arg2:int):uint{ var _local3:int = (32 - _arg2); return (((_arg1 << _local3) | (_arg1 >>> (32 - _local3)))); } public static function rol(_arg1:int, _arg2:int):int{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } } }//package com.adobe.utils
Section 89
//CampaignInfo (com.google.analytics.campaign.CampaignInfo) package com.google.analytics.campaign { import com.google.analytics.utils.*; public class CampaignInfo { private var _new:Boolean; private var _empty:Boolean; public function CampaignInfo(_arg1:Boolean=true, _arg2:Boolean=false){ _empty = _arg1; _new = _arg2; } public function isEmpty():Boolean{ return (_empty); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (((!(isEmpty())) && (isNew()))){ _local1.utmcn = utmcn; }; if (((!(isEmpty())) && (!(isNew())))){ _local1.utmcr = utmcr; }; return (_local1); } public function isNew():Boolean{ return (_new); } public function get utmcn():String{ return ("1"); } public function get utmcr():String{ return ("1"); } } }//package com.google.analytics.campaign
Section 90
//CampaignKey (com.google.analytics.campaign.CampaignKey) package com.google.analytics.campaign { public class CampaignKey { public var UCMD:String;// = "utm_medium" public var UCID:String;// = "utm_id" public var UCTR:String;// = "utm_term" public var UCSR:String;// = "utm_source" public var UCNO:String;// = "utm_nooverride" public var UCCN:String;// = "utm_campaign" public var UGCLID:String;// = "gclid" public var UCCT:String;// = "utm_content" public function CampaignKey(){ UCCN = "utm_campaign"; UCCT = "utm_content"; UCID = "utm_id"; UCMD = "utm_medium"; UCNO = "utm_nooverride"; UCSR = "utm_source"; UCTR = "utm_term"; UGCLID = "gclid"; super(); } } }//package com.google.analytics.campaign
Section 91
//CampaignManager (com.google.analytics.campaign.CampaignManager) package com.google.analytics.campaign { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; public class CampaignManager { private var _config:Configuration; private var _domainHash:Number; private var _debug:DebugConfiguration; private var _timeStamp:Number; private var _referrer:String; private var _buffer:Buffer; public static const trackingDelimiter:String = "|"; public function CampaignManager(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Number, _arg5:String, _arg6:Number){ _config = _arg1; _debug = _arg2; _buffer = _arg3; _domainHash = _arg4; _referrer = _arg5; _timeStamp = _arg6; } public function hasNoOverride(_arg1:String):Boolean{ var _local2:CampaignKey; var _local3:Variables; var _local4:String; _local2 = _config.campaignKey; if (_arg1 == ""){ return (false); }; _local3 = new Variables(_arg1); _local4 = ""; if (_local3.hasOwnProperty(_local2.UCNO)){ _local4 = _local3[_local2.UCNO]; switch (_local4){ case "1": return (true); case "": case "0": default: return (false); }; }; return (false); } public function getCampaignInformation(_arg1:String, _arg2:Boolean):CampaignInfo{ var _local3:CampaignInfo; var _local4:CampaignTracker; var _local5:Boolean; var _local6:Boolean; var _local7:int; var _local8:CampaignTracker; var _local9:int; _local3 = new CampaignInfo(); _local5 = false; _local6 = false; _local7 = 0; if (((_config.allowLinker) && (_buffer.isGenuine()))){ if (!_buffer.hasUTMZ()){ return (_local3); }; }; _local4 = getTrackerFromSearchString(_arg1); if (isValid(_local4)){ _local6 = hasNoOverride(_arg1); if (((_local6) && (!(_buffer.hasUTMZ())))){ return (_local3); }; }; if (!isValid(_local4)){ _local4 = getOrganicCampaign(); if (((!(_buffer.hasUTMZ())) && (isIgnoredKeyword(_local4)))){ return (_local3); }; }; if (((!(isValid(_local4))) && (_arg2))){ _local4 = getReferrerCampaign(); if (((!(_buffer.hasUTMZ())) && (isIgnoredReferral(_local4)))){ return (_local3); }; }; if (!isValid(_local4)){ if (((!(_buffer.hasUTMZ())) && (_arg2))){ _local4 = getDirectCampaign(); }; }; if (!isValid(_local4)){ return (_local3); }; if (((_buffer.hasUTMZ()) && (!(_buffer.utmz.isEmpty())))){ _local8 = new CampaignTracker(); _local8.fromTrackerString(_buffer.utmz.campaignTracking); _local5 = (_local8.toTrackerString() == _local4.toTrackerString()); _local7 = _buffer.utmz.responseCount; }; if (((!(_local5)) || (_arg2))){ _local9 = _buffer.utma.sessionCount; _local7++; if (_local9 == 0){ _local9 = 1; }; _buffer.utmz.domainHash = _domainHash; _buffer.utmz.campaignCreation = _timeStamp; _buffer.utmz.campaignSessions = _local9; _buffer.utmz.responseCount = _local7; _buffer.utmz.campaignTracking = _local4.toTrackerString(); _debug.info(_buffer.utmz.toString(), VisualDebugMode.geek); _local3 = new CampaignInfo(false, true); } else { _local3 = new CampaignInfo(false, false); }; return (_local3); } public function isValid(_arg1:CampaignTracker):Boolean{ if (((_arg1) && (_arg1.isValid()))){ return (true); }; return (false); } public function getTrackerFromSearchString(_arg1:String):CampaignTracker{ var _local2:CampaignTracker; var _local3:CampaignTracker; var _local4:CampaignKey; var _local5:Variables; _local2 = getOrganicCampaign(); _local3 = new CampaignTracker(); _local4 = _config.campaignKey; if (_arg1 == ""){ return (_local3); }; _local5 = new Variables(_arg1); if (_local5.hasOwnProperty(_local4.UCID)){ _local3.id = _local5[_local4.UCID]; }; if (_local5.hasOwnProperty(_local4.UCSR)){ _local3.source = _local5[_local4.UCSR]; }; if (_local5.hasOwnProperty(_local4.UGCLID)){ _local3.clickId = _local5[_local4.UGCLID]; }; if (_local5.hasOwnProperty(_local4.UCCN)){ _local3.name = _local5[_local4.UCCN]; } else { _local3.name = "(not set)"; }; if (_local5.hasOwnProperty(_local4.UCMD)){ _local3.medium = _local5[_local4.UCMD]; } else { _local3.medium = "(not set)"; }; if (_local5.hasOwnProperty(_local4.UCTR)){ _local3.term = _local5[_local4.UCTR]; } else { if (((_local2) && (!((_local2.term == ""))))){ _local3.term = _local2.term; }; }; if (_local5.hasOwnProperty(_local4.UCCT)){ _local3.content = _local5[_local4.UCCT]; }; return (_local3); } public function getOrganicCampaign():CampaignTracker{ var _local1:CampaignTracker; var _local2:URL; var _local3:String; var _local4:Array; var _local5:OrganicReferrer; var _local6:String; if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){ return (_local1); }; _local2 = new URL(_referrer); _local3 = ""; if (_local2.hostName != ""){ if (_local2.hostName.indexOf(".") > -1){ _local4 = _local2.hostName.split("."); switch (_local4.length){ case 2: _local3 = _local4[0]; break; case 3: _local3 = _local4[1]; break; }; }; }; if (_config.organic.match(_local3)){ _local5 = _config.organic.getReferrerByName(_local3); _local6 = _config.organic.getKeywordValue(_local5, _local2.search); _local1 = new CampaignTracker(); _local1.source = _local5.engine; _local1.name = "(organic)"; _local1.medium = "organic"; _local1.term = _local6; }; return (_local1); } public function isIgnoredReferral(_arg1:CampaignTracker):Boolean{ if (((_arg1) && ((_arg1.medium == "referral")))){ return (_config.organic.isIgnoredReferral(_arg1.source)); }; return (false); } public function getDirectCampaign():CampaignTracker{ var _local1:CampaignTracker; _local1 = new CampaignTracker(); _local1.source = "(direct)"; _local1.name = "(direct)"; _local1.medium = "(none)"; return (_local1); } public function isIgnoredKeyword(_arg1:CampaignTracker):Boolean{ if (((_arg1) && ((_arg1.medium == "organic")))){ return (_config.organic.isIgnoredKeyword(_arg1.term)); }; return (false); } public function getReferrerCampaign():CampaignTracker{ var _local1:CampaignTracker; var _local2:URL; var _local3:String; var _local4:String; if (((isInvalidReferrer(_referrer)) || (isFromGoogleCSE(_referrer, _config)))){ return (_local1); }; _local2 = new URL(_referrer); _local3 = _local2.hostName; _local4 = _local2.path; if (_local3.indexOf("www.") == 0){ _local3 = _local3.substr(4); }; _local1 = new CampaignTracker(); _local1.source = _local3; _local1.name = "(referral)"; _local1.medium = "referral"; _local1.content = _local4; return (_local1); } public static function isInvalidReferrer(_arg1:String):Boolean{ var _local2:URL; if ((((((_arg1 == "")) || ((_arg1 == "-")))) || ((_arg1 == "0")))){ return (true); }; if (_arg1.indexOf("://") > -1){ _local2 = new URL(_arg1); if ((((_local2.protocol == Protocols.file)) || ((_local2.protocol == Protocols.none)))){ return (true); }; }; return (false); } public static function isFromGoogleCSE(_arg1:String, _arg2:Configuration):Boolean{ var _local3:URL; _local3 = new URL(_arg1); if (_local3.hostName.indexOf(_arg2.google) > -1){ if (_local3.search.indexOf((_arg2.googleSearchParam + "=")) > -1){ if (_local3.path == ("/" + _arg2.googleCsePath)){ return (true); }; }; }; return (false); } } }//package com.google.analytics.campaign
Section 92
//CampaignTracker (com.google.analytics.campaign.CampaignTracker) package com.google.analytics.campaign { import com.google.analytics.utils.*; public class CampaignTracker { public var content:String; public var id:String; public var clickId:String; public var name:String; public var term:String; public var medium:String; public var source:String; public function CampaignTracker(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:String="", _arg5:String="", _arg6:String="", _arg7:String=""){ this.id = _arg1; this.source = _arg2; this.clickId = _arg3; this.name = _arg4; this.medium = _arg5; this.term = _arg6; this.content = _arg7; } public function toTrackerString():String{ var _local1:Array; _local1 = []; _addIfNotEmpty(_local1, "utmcsr=", source); _addIfNotEmpty(_local1, "utmccn=", name); _addIfNotEmpty(_local1, "utmcmd=", medium); _addIfNotEmpty(_local1, "utmctr=", term); _addIfNotEmpty(_local1, "utmcct=", content); _addIfNotEmpty(_local1, "utmcid=", id); _addIfNotEmpty(_local1, "utmgclid=", clickId); return (_local1.join(CampaignManager.trackingDelimiter)); } public function isValid():Boolean{ if (((((!((id == ""))) || (!((source == ""))))) || (!((clickId == ""))))){ return (true); }; return (false); } private function _addIfNotEmpty(_arg1:Array, _arg2:String, _arg3:String):void{ if (_arg3 != ""){ _arg3 = _arg3.split("+").join("%20"); _arg3 = _arg3.split(" ").join("%20"); _arg1.push((_arg2 + _arg3)); }; } public function fromTrackerString(_arg1:String):void{ var _local2:String; var _local3:Variables; _local2 = _arg1.split(CampaignManager.trackingDelimiter).join("&"); _local3 = new Variables(_local2); if (_local3.hasOwnProperty("utmcid")){ this.id = _local3["utmcid"]; }; if (_local3.hasOwnProperty("utmcsr")){ this.source = _local3["utmcsr"]; }; if (_local3.hasOwnProperty("utmccn")){ this.name = _local3["utmccn"]; }; if (_local3.hasOwnProperty("utmcmd")){ this.medium = _local3["utmcmd"]; }; if (_local3.hasOwnProperty("utmctr")){ this.term = _local3["utmctr"]; }; if (_local3.hasOwnProperty("utmcct")){ this.content = _local3["utmcct"]; }; if (_local3.hasOwnProperty("utmgclid")){ this.clickId = _local3["utmgclid"]; }; } } }//package com.google.analytics.campaign
Section 93
//FlashTracker (com.google.analytics.components.FlashTracker) package com.google.analytics.components { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import flash.events.*; import flash.display.*; import com.google.analytics.external.*; import flash.utils.*; import com.google.analytics.*; import com.google.analytics.events.*; public class FlashTracker extends Sprite implements AnalyticsTracker { private var _adSense:AdSenseGlobals; private var _env:Environment; protected var _height:Number;// = 18 private var _idleTimer:IdleTimer; private var _config:Configuration; private var _mode:String;// = "AS3" private var _dom:HTMLDOM; private var _ready:Boolean;// = false protected var _width:Number;// = 18 private var _account:String;// = "" protected var _componentInspectorSetting:Boolean; private var _visualDebug:Boolean;// = false public var boundingBox_mc:DisplayObject; private var _debug:DebugConfiguration; private var _buffer:Buffer; private var _display:DisplayObject; protected var livePreviewHeight:Number; private var _jsproxy:JavascriptProxy; protected var isLivePreview:Boolean; protected var preview:MovieClip; private var _gifRequest:GIFRequest; protected var livePreviewWidth:Number; private var _tracker:GoogleAnalyticsAPI; public static var version:Version = API.version; public function FlashTracker(){ _ready = false; _account = ""; _mode = TrackerMode.AS3; _visualDebug = false; _width = 18; _height = 18; super(); _tracker = new TrackerCache(); isLivePreview = _checkLivePreview(); _componentInspectorSetting = false; if (boundingBox_mc){ boundingBox_mc.visible = false; removeChild(boundingBox_mc); boundingBox_mc = null; }; if (isLivePreview){ _createLivePreview(); }; addEventListener(Event.ENTER_FRAME, _factory); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4)); } public function trackTrans():void{ _tracker.trackTrans(); } private function _createLivePreview():void{ var _local1:Graphics; var _local2:Class; preview = new MovieClip(); _local1 = preview.graphics; _local1.beginFill(0xFFFFFF); _local1.moveTo(0, 0); _local1.lineTo(0, _width); _local1.lineTo(_width, _height); _local1.lineTo(_height, 0); _local1.lineTo(0, 0); _local1.endFill(); _local2 = (getDefinitionByName("com.google.analytics.components::Icon") as Class); preview.icon_mc = new (_local2); preview.icon_mc.name = "icon_mc"; preview.addChild(preview.icon_mc); addChild(preview); } public function trackPageview(_arg1:String=""):void{ _tracker.trackPageview(_arg1); } public function get account():String{ return (_account); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _tracker.linkByPost(_arg1, _arg2); } public function getDetectTitle():Boolean{ return (_tracker.getDetectTitle()); } public function setCampNameKey(_arg1:String):void{ _tracker.setCampNameKey(_arg1); } public function resetSession():void{ _tracker.resetSession(); } public function set account(_arg1:String):void{ _account = _arg1; } public function get debug():DebugConfiguration{ if (!_debug){ _createDebugAndConfig(); }; return (_debug); } public function createEventTracker(_arg1:String):EventTracker{ return (_tracker.createEventTracker(_arg1)); } public function set config(_arg1:Configuration):void{ _config = _arg1; } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8)); } public function setLocalServerMode():void{ _tracker.setLocalServerMode(); } public function getLocalGifPath():String{ return (_tracker.getLocalGifPath()); } public function clearIgnoredRef():void{ _tracker.clearIgnoredRef(); } public function isReady():Boolean{ return (_ready); } public function set debug(_arg1:DebugConfiguration):void{ _debug = _arg1; } public function getVersion():String{ return (_tracker.getVersion()); } public function setLocalRemoteServerMode():void{ _tracker.setLocalRemoteServerMode(); } public function setCampNOKey(_arg1:String):void{ _tracker.setCampNOKey(_arg1); } public function addIgnoredOrganic(_arg1:String):void{ _tracker.addIgnoredOrganic(_arg1); } public function setCookiePath(_arg1:String):void{ _tracker.setCookiePath(_arg1); } public function setCampTermKey(_arg1:String):void{ _tracker.setCampTermKey(_arg1); } private function _trackerFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account)); _adSense = new AdSenseGlobals(debug); _dom = new HTMLDOM(debug); _dom.cacheProperties(); _env = new Environment("", "", "", debug, _dom); _buffer = new Buffer(config, debug, false); _gifRequest = new GIFRequest(config, debug, _buffer, _env); _idleTimer = new IdleTimer(config, debug, _display, _buffer); _env.url = _display.stage.loaderInfo.url; return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense)); } public function setCampaignTrack(_arg1:Boolean):void{ _tracker.setCampaignTrack(_arg1); } public function getServiceMode():ServerOperationMode{ return (_tracker.getServiceMode()); } public function set componentInspectorSetting(_arg1:Boolean):void{ _componentInspectorSetting = _arg1; } public function setSessionTimeout(_arg1:int):void{ _tracker.setSessionTimeout(_arg1); } public function setRemoteServerMode():void{ _tracker.setRemoteServerMode(); } public function get visualDebug():Boolean{ return (_visualDebug); } public function addOrganic(_arg1:String, _arg2:String):void{ _tracker.addOrganic(_arg1, _arg2); } public function setCookieTimeout(_arg1:int):void{ _tracker.setCookieTimeout(_arg1); } public function getClientInfo():Boolean{ return (_tracker.getClientInfo()); } public function setAllowLinker(_arg1:Boolean):void{ _tracker.setAllowLinker(_arg1); } public function setClientInfo(_arg1:Boolean):void{ _tracker.setClientInfo(_arg1); } private function _bridgeFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account)); return (new Bridge(account, _debug, _jsproxy)); } public function get config():Configuration{ if (!_config){ _createDebugAndConfig(); }; return (_config); } public function set mode(_arg1:String):void{ _mode = _arg1; } public function setDetectFlash(_arg1:Boolean):void{ _tracker.setDetectFlash(_arg1); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function setVar(_arg1:String):void{ _tracker.setVar(_arg1); } public function clearIgnoredOrganic():void{ _tracker.clearIgnoredOrganic(); } public function setDomainName(_arg1:String):void{ _tracker.setDomainName(_arg1); } private function _checkLivePreview():Boolean{ if (((!((parent == null))) && ((getQualifiedClassName(parent) == "fl.livepreview::LivePreviewParent")))){ return (true); }; return (false); } public function setCampSourceKey(_arg1:String):void{ _tracker.setCampSourceKey(_arg1); } public function setCampContentKey(_arg1:String):void{ _tracker.setCampContentKey(_arg1); } public function setSize(_arg1:Number, _arg2:Number):void{ } public function setAllowAnchor(_arg1:Boolean):void{ _tracker.setAllowAnchor(_arg1); } public function setLocalGifPath(_arg1:String):void{ _tracker.setLocalGifPath(_arg1); } public function get mode():String{ return (_mode); } public function setSampleRate(_arg1:Number):void{ _tracker.setSampleRate(_arg1); } public function setAllowHash(_arg1:Boolean):void{ _tracker.setAllowHash(_arg1); } public function setDetectTitle(_arg1:Boolean):void{ _tracker.setDetectTitle(_arg1); } public function cookiePathCopy(_arg1:String):void{ _tracker.cookiePathCopy(_arg1); } private function _factory(_arg1:Event):void{ var _local2:GoogleAnalyticsAPI; var _local3:TrackerCache; removeEventListener(Event.ENTER_FRAME, _factory); if (isLivePreview){ return; }; _display = this; _createDebugAndConfig(); if (visualDebug){ debug.layout = new Layout(debug, _display); debug.active = visualDebug; }; _jsproxy = new JavascriptProxy(debug); _local3 = (_tracker as TrackerCache); switch (mode){ case TrackerMode.BRIDGE: _local2 = _bridgeFactory(); break; case TrackerMode.AS3: default: _local2 = _trackerFactory(); }; if (!_local3.isEmpty()){ _local3.tracker = _local2; _local3.flush(); }; _tracker = _local2; _ready = true; dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this)); } public function getDetectFlash():Boolean{ return (_tracker.getDetectFlash()); } public function clearOrganic():void{ _tracker.clearOrganic(); } private function _createDebugAndConfig():void{ if (!_debug){ this.debug = new DebugConfiguration(); }; if (!_config){ this.config = new Configuration(debug); }; } public function addIgnoredRef(_arg1:String):void{ _tracker.addIgnoredRef(_arg1); } public function set visualDebug(_arg1:Boolean):void{ _visualDebug = _arg1; } public function setCampMediumKey(_arg1:String):void{ _tracker.setCampMediumKey(_arg1); } public function getAccount():String{ return (_tracker.getAccount()); } public function link(_arg1:String, _arg2:Boolean=false):void{ _tracker.link(_arg1, _arg2); } } var _local1:* = ServerOperationMode; return (_local1); }//package com.google.analytics.components
Section 94
//Icon (com.google.analytics.components.Icon) package com.google.analytics.components { import flash.display.*; public dynamic class Icon extends MovieClip { } }//package com.google.analytics.components
Section 95
//BrowserInfo (com.google.analytics.core.BrowserInfo) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.utils.*; public class BrowserInfo { private var _config:Configuration; private var _info:Environment; public function BrowserInfo(_arg1:Configuration, _arg2:Environment){ _config = _arg1; _info = _arg2; } public function get utmul():String{ return (_info.language.toLowerCase()); } public function get utmje():String{ return ("0"); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function get utmsr():String{ return (((_info.screenWidth + "x") + _info.screenHeight)); } public function get utmcs():String{ return (_info.languageEncoding); } public function get utmfl():String{ var _local1:Version; if (_config.detectFlash){ _local1 = _info.flashVersion; return (((((_local1.major + ".") + _local1.minor) + " r") + _local1.build)); }; return ("-"); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; _local1.utmcs = utmcs; _local1.utmsr = utmsr; _local1.utmsc = utmsc; _local1.utmul = utmul; _local1.utmje = utmje; _local1.utmfl = utmfl; return (_local1); } public function get utmsc():String{ return ((_info.screenColorDepth + "-bit")); } } }//package com.google.analytics.core
Section 96
//Buffer (com.google.analytics.core.Buffer) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.net.*; import flash.events.*; import com.google.analytics.data.*; public dynamic class Buffer { private var _SO:SharedObject; private var _OBJ:Object; private var _utma:UTMA; private var _utmb:UTMB; private var _utmc:UTMC; private var _debug:DebugConfiguration; private var _utmk:UTMK; private var _config:Configuration; private var _utmv:UTMV; private var _utmz:UTMZ; private var _volatile:Boolean; public function Buffer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Boolean=false, _arg4:Object=null){ var _local5:Boolean; var _local6:String; super(); _config = _arg1; _debug = _arg2; UTMB.defaultTimespan = _config.sessionTimeout; UTMZ.defaultTimespan = _config.conversionTimeout; if (!_arg3){ _SO = SharedObject.getLocal(_config.cookieName, _config.cookiePath); _local5 = false; if (_SO.data.utma){ if (!hasUTMA()){ _createUMTA(); }; _utma.fromSharedObject(_SO.data.utma); if (_debug.verbose){ _debug.info(("found: " + _utma.toString(true)), VisualDebugMode.geek); }; if (_utma.isExpired()){ if (_debug.verbose){ _debug.warning("UTMA has expired", VisualDebugMode.advanced); }; _clearUTMA(); _local5 = true; }; }; if (_SO.data.utmb){ if (!hasUTMB()){ _createUMTB(); }; _utmb.fromSharedObject(_SO.data.utmb); if (_debug.verbose){ _debug.info(("found: " + _utmb.toString(true)), VisualDebugMode.geek); }; if (_utmb.isExpired()){ if (_debug.verbose){ _debug.warning("UTMB has expired", VisualDebugMode.advanced); }; _clearUTMB(); _local5 = true; }; }; if (_SO.data.utmc){ delete _SO.data.utmc; _local5 = true; }; if (_SO.data.utmk){ if (!hasUTMK()){ _createUMTK(); }; _utmk.fromSharedObject(_SO.data.utmk); if (_debug.verbose){ _debug.info(("found: " + _utmk.toString()), VisualDebugMode.geek); }; }; if (_SO.data.utmv){ if (!hasUTMV()){ _createUMTV(); }; _utmv.fromSharedObject(_SO.data.utmv); if (_debug.verbose){ _debug.info(("found: " + _utmv.toString(true)), VisualDebugMode.geek); }; if (_utmv.isExpired()){ if (_debug.verbose){ _debug.warning("UTMV has expired", VisualDebugMode.advanced); }; _clearUTMV(); _local5 = true; }; }; if (_SO.data.utmz){ if (!hasUTMZ()){ _createUMTZ(); }; _utmz.fromSharedObject(_SO.data.utmz); if (_debug.verbose){ _debug.info(("found: " + _utmz.toString(true)), VisualDebugMode.geek); }; if (_utmz.isExpired()){ if (_debug.verbose){ _debug.warning("UTMZ has expired", VisualDebugMode.advanced); }; _clearUTMZ(); _local5 = true; }; }; if (_local5){ save(); }; } else { _OBJ = new Object(); if (_arg4){ for (_local6 in _arg4) { _OBJ[_local6] = _arg4[_local6]; }; }; }; _volatile = _arg3; } public function save():void{ var flushStatus:String; if (!isVolatile()){ flushStatus = null; try { flushStatus = _SO.flush(); } catch(e:Error) { _debug.warning("Error...Could not write SharedObject to disk"); }; switch (flushStatus){ case SharedObjectFlushStatus.PENDING: _debug.info("Requesting permission to save object..."); _SO.addEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus); break; case SharedObjectFlushStatus.FLUSHED: _debug.info("Value flushed to disk."); break; }; }; } public function get utmv():UTMV{ if (!hasUTMV()){ _createUMTV(); }; return (_utmv); } public function clearCookies():void{ utma.reset(); utmb.reset(); utmc.reset(); utmz.reset(); utmv.reset(); utmk.reset(); } public function get utmz():UTMZ{ if (!hasUTMZ()){ _createUMTZ(); }; return (_utmz); } public function hasUTMA():Boolean{ if (_utma){ return (true); }; return (false); } public function hasUTMB():Boolean{ if (_utmb){ return (true); }; return (false); } public function isGenuine():Boolean{ if (!hasUTMK()){ return (true); }; return ((utmk.hash == generateCookiesHash())); } public function resetCurrentSession():void{ _clearUTMB(); _clearUTMC(); save(); } public function hasUTMC():Boolean{ if (_utmc){ return (true); }; return (false); } public function hasUTMK():Boolean{ if (_utmk){ return (true); }; return (false); } public function generateCookiesHash():Number{ var _local1:String; _local1 = ""; _local1 = (_local1 + utma.valueOf()); _local1 = (_local1 + utmb.valueOf()); _local1 = (_local1 + utmc.valueOf()); _local1 = (_local1 + utmz.valueOf()); _local1 = (_local1 + utmv.valueOf()); return (Utils.generateHash(_local1)); } private function _createUMTA():void{ _utma = new UTMA(); _utma.proxy = this; } private function _createUMTB():void{ _utmb = new UTMB(); _utmb.proxy = this; } private function _createUMTC():void{ _utmc = new UTMC(); } public function hasUTMV():Boolean{ if (_utmv){ return (true); }; return (false); } private function _createUMTK():void{ _utmk = new UTMK(); _utmk.proxy = this; } public function hasUTMZ():Boolean{ if (_utmz){ return (true); }; return (false); } private function _createUMTV():void{ _utmv = new UTMV(); _utmv.proxy = this; } private function _createUMTZ():void{ _utmz = new UTMZ(); _utmz.proxy = this; } public function updateUTMA(_arg1:Number):void{ if (_debug.verbose){ _debug.info((("updateUTMA( " + _arg1) + " )"), VisualDebugMode.advanced); }; if (!utma.isEmpty()){ if (isNaN(utma.sessionCount)){ utma.sessionCount = 1; } else { utma.sessionCount = (utma.sessionCount + 1); }; utma.lastTime = utma.currentTime; utma.currentTime = _arg1; }; } private function _onFlushStatus(_arg1:NetStatusEvent):void{ _debug.info("User closed permission dialog..."); switch (_arg1.info.code){ case "SharedObject.Flush.Success": _debug.info("User granted permission -- value saved."); break; case "SharedObject.Flush.Failed": _debug.info("User denied permission -- value not saved."); break; }; _SO.removeEventListener(NetStatusEvent.NET_STATUS, _onFlushStatus); } private function _clearUTMA():void{ _utma = null; if (!isVolatile()){ _SO.data.utma = null; delete _SO.data.utma; }; } private function _clearUTMC():void{ _utmc = null; } private function _clearUTMB():void{ _utmb = null; if (!isVolatile()){ _SO.data.utmb = null; delete _SO.data.utmb; }; } public function update(_arg1:String, _arg2):void{ if (isVolatile()){ _OBJ[_arg1] = _arg2; } else { _SO.data[_arg1] = _arg2; }; } private function _clearUTMZ():void{ _utmz = null; if (!isVolatile()){ _SO.data.utmz = null; delete _SO.data.utmz; }; } private function _clearUTMV():void{ _utmv = null; if (!isVolatile()){ _SO.data.utmv = null; delete _SO.data.utmv; }; } public function isVolatile():Boolean{ return (_volatile); } public function get utma():UTMA{ if (!hasUTMA()){ _createUMTA(); }; return (_utma); } public function get utmb():UTMB{ if (!hasUTMB()){ _createUMTB(); }; return (_utmb); } public function get utmc():UTMC{ if (!hasUTMC()){ _createUMTC(); }; return (_utmc); } public function get utmk():UTMK{ if (!hasUTMK()){ _createUMTK(); }; return (_utmk); } } }//package com.google.analytics.core
Section 97
//DocumentInfo (com.google.analytics.core.DocumentInfo) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.utils.*; import com.google.analytics.external.*; public class DocumentInfo { private var _config:Configuration; private var _utmr:String; private var _adSense:AdSenseGlobals; private var _info:Environment; private var _pageURL:String; public function DocumentInfo(_arg1:Configuration, _arg2:Environment, _arg3:String, _arg4:String=null, _arg5:AdSenseGlobals=null){ _config = _arg1; _info = _arg2; _utmr = _arg3; _pageURL = _arg4; _adSense = _arg5; } public function get utmr():String{ if (!_utmr){ return ("-"); }; return (_utmr); } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } private function _renderPageURL(_arg1:String=""):String{ var _local2:String; var _local3:String; _local2 = _info.locationPath; _local3 = _info.locationSearch; if (((!(_arg1)) || ((_arg1 == "")))){ _arg1 = (_local2 + unescape(_local3)); }; return (_arg1); } public function get utmp():String{ return (_renderPageURL(_pageURL)); } private function _generateHitId():Number{ var _local1:Number; if (((_adSense.hid) && (!((_adSense.hid == ""))))){ _local1 = Number(_adSense.hid); } else { _local1 = Math.round((Math.random() * 2147483647)); _adSense.hid = String(_local1); }; return (_local1); } public function get utmhid():String{ return (String(_generateHitId())); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (((_config.detectTitle) && (!((utmdt == ""))))){ _local1.utmdt = utmdt; }; _local1.utmhid = utmhid; _local1.utmr = utmr; _local1.utmp = utmp; return (_local1); } public function get utmdt():String{ return (_info.documentTitle); } } }//package com.google.analytics.core
Section 98
//Domain (com.google.analytics.core.Domain) package com.google.analytics.core { import com.google.analytics.debug.*; public class Domain { private var _mode:DomainNameMode; private var _name:String; private var _debug:DebugConfiguration; public function Domain(_arg1:DomainNameMode=null, _arg2:String="", _arg3:DebugConfiguration=null){ _debug = _arg3; if (_arg1 == null){ _arg1 = DomainNameMode.auto; }; _mode = _arg1; if (_arg1 == DomainNameMode.custom){ this.name = _arg2; } else { _name = _arg2; }; } public function get mode():DomainNameMode{ return (_mode); } public function set mode(_arg1:DomainNameMode):void{ _mode = _arg1; if (_mode == DomainNameMode.none){ _name = ""; }; } public function get name():String{ return (_name); } public function set name(_arg1:String):void{ if (((!((_arg1.charAt(0) == "."))) && (_debug))){ _debug.warning(("missing leading period \".\", cookie will only be accessible on " + _arg1), VisualDebugMode.geek); }; _name = _arg1; } } }//package com.google.analytics.core
Section 99
//DomainNameMode (com.google.analytics.core.DomainNameMode) package com.google.analytics.core { public class DomainNameMode { private var _value:int; private var _name:String; public static const custom:DomainNameMode = new DomainNameMode(2, "custom"); ; public static const none:DomainNameMode = new DomainNameMode(0, "none"); ; public static const auto:DomainNameMode = new DomainNameMode(1, "auto"); ; public function DomainNameMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.core
Section 100
//EventInfo (com.google.analytics.core.EventInfo) package com.google.analytics.core { import com.google.analytics.utils.*; import com.google.analytics.data.*; public class EventInfo { private var _isEventHit:Boolean; private var _ext10:X10; private var _x10:X10; public function EventInfo(_arg1:Boolean, _arg2:X10, _arg3:X10=null){ _isEventHit = _arg1; _x10 = _arg2; _ext10 = _arg3; } public function toURLString():String{ var _local1:Variables; _local1 = toVariables(); return (_local1.toString()); } public function get utmt():String{ return ("event"); } public function get utme():String{ return (_x10.renderMergedUrlString(_ext10)); } public function toVariables():Variables{ var _local1:Variables; _local1 = new Variables(); _local1.URIencode = true; if (_isEventHit){ _local1.utmt = utmt; }; _local1.utme = utme; return (_local1); } } }//package com.google.analytics.core
Section 101
//EventTracker (com.google.analytics.core.EventTracker) package com.google.analytics.core { import com.google.analytics.v4.*; public class EventTracker { private var _parent:GoogleAnalyticsAPI; public var name:String; public function EventTracker(_arg1:String, _arg2:GoogleAnalyticsAPI){ this.name = _arg1; _parent = _arg2; } public function trackEvent(_arg1:String, _arg2:String=null, _arg3:Number=NaN):Boolean{ return (_parent.trackEvent(name, _arg1, _arg2, _arg3)); } } }//package com.google.analytics.core
Section 102
//ga_internal (com.google.analytics.core.ga_internal) package com.google.analytics.core { public namespace ga_internal; }//package com.google.analytics.core
Section 103
//GIFRequest (com.google.analytics.core.GIFRequest) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.net.*; import com.google.analytics.utils.*; import flash.events.*; import flash.display.*; import flash.system.*; public class GIFRequest { private var _info:Environment; private var _count:int; private var _utmac:String; private var _alertcount:int; private var _debug:DebugConfiguration; private var _lastRequest:URLRequest; private var _buffer:Buffer; private var _config:Configuration; private var _requests:Array; public function GIFRequest(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:Buffer, _arg4:Environment){ _config = _arg1; _debug = _arg2; _buffer = _arg3; _info = _arg4; _count = 0; _alertcount = 0; _requests = []; } public function get utmn():String{ return ((Utils.generate32bitRandom() as String)); } public function onIOError(_arg1:IOErrorEvent):void{ var _local2:String; var _local3:String; var _local4:String; _local2 = _lastRequest.url; _local3 = String((_requests.length - 1)); _local4 = (("Gif Request #" + _local3) + " failed"); if (_debug.GIFRequests){ if (!_debug.verbose){ if (_local2.indexOf("?") > -1){ _local2 = _local2.split("?")[0]; }; _local2 = _shortenURL(_local2); }; if (int(_debug.mode) > int(VisualDebugMode.basic)){ _local4 = (_local4 + ((" \"" + _local2) + "\" does not exists or is unreachable")); }; _debug.failure(_local4); } else { _debug.warning(_local4); }; _removeListeners(_arg1.target); } public function send(_arg1:String, _arg2:Variables=null, _arg3:Boolean=false, _arg4:Boolean=false):void{ var _local5:String; var _local6:URLRequest; var _local7:URLRequest; _utmac = _arg1; if (!_arg2){ _arg2 = new Variables(); }; _arg2.URIencode = false; _arg2.pre = ["utmwv", "utmn", "utmhn", "utmt", "utme", "utmcs", "utmsr", "utmsc", "utmul", "utmje", "utmfl", "utmdt", "utmhid", "utmr", "utmp"]; _arg2.post = ["utmcc"]; if (_debug.verbose){ _debug.info(((("tracking: " + _buffer.utmb.trackCount) + "/") + _config.trackingLimitPerSession), VisualDebugMode.geek); }; if ((((_buffer.utmb.trackCount < _config.trackingLimitPerSession)) || (_arg3))){ if (_arg4){ updateToken(); }; if (((((_arg3) || (!(_arg4)))) || ((_buffer.utmb.token >= 1)))){ if (((!(_arg3)) && (_arg4))){ _buffer.utmb.token = (_buffer.utmb.token - 1); }; _buffer.utmb.trackCount = (_buffer.utmb.trackCount + 1); if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); }; _arg2.utmwv = utmwv; _arg2.utmn = Utils.generate32bitRandom(); if (_info.domainName != ""){ _arg2.utmhn = _info.domainName; }; if (_config.sampleRate < 1){ _arg2.utmsp = (_config.sampleRate * 100); }; if ((((_config.serverMode == ServerOperationMode.local)) || ((_config.serverMode == ServerOperationMode.both)))){ _local5 = _info.locationSWFPath; if (_local5.lastIndexOf("/") > 0){ _local5 = _local5.substring(0, _local5.lastIndexOf("/")); }; _local6 = new URLRequest(); if (_config.localGIFpath.indexOf("http") == 0){ _local6.url = _config.localGIFpath; } else { _local6.url = (_local5 + _config.localGIFpath); }; _local6.url = (_local6.url + ("?" + _arg2.toString())); if (((_debug.active) && (_debug.GIFRequests))){ _debugSend(_local6); } else { sendRequest(_local6); }; }; if ((((_config.serverMode == ServerOperationMode.remote)) || ((_config.serverMode == ServerOperationMode.both)))){ _local7 = new URLRequest(); if (_info.protocol == Protocols.HTTPS){ _local7.url = _config.secureRemoteGIFpath; } else { if (_info.protocol == Protocols.HTTP){ _local7.url = _config.remoteGIFpath; } else { _local7.url = _config.remoteGIFpath; }; }; _arg2.utmac = utmac; _arg2.utmcc = encodeURIComponent(utmcc); _local7.url = (_local7.url + ("?" + _arg2.toString())); if (((_debug.active) && (_debug.GIFRequests))){ _debugSend(_local7); } else { sendRequest(_local7); }; }; }; }; } public function onSecurityError(_arg1:SecurityErrorEvent):void{ if (_debug.GIFRequests){ _debug.failure(_arg1.text); }; } public function get utmsp():String{ return (((_config.sampleRate * 100) as String)); } public function get utmcc():String{ var _local1:Array; _local1 = []; if (_buffer.hasUTMA()){ _local1.push((_buffer.utma.toURLString() + ";")); }; if (_buffer.hasUTMZ()){ _local1.push((_buffer.utmz.toURLString() + ";")); }; if (_buffer.hasUTMV()){ _local1.push((_buffer.utmv.toURLString() + ";")); }; return (_local1.join("+")); } public function get utmac():String{ return (_utmac); } public function get utmwv():String{ return (_config.version); } public function sendRequest(_arg1:URLRequest):void{ var loader:Loader; var context:LoaderContext; var request = _arg1; loader = new Loader(); loader.name = String(_count++); context = new LoaderContext(false); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onIOError); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete); _lastRequest = request; _requests[loader.name] = new RequestObject(request); try { loader.load(request, context); } catch(e:Error) { _debug.failure("\"Loader.load()\" could not instanciate Gif Request"); }; } private function _removeListeners(_arg1:Object):void{ _arg1.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); _arg1.removeEventListener(Event.COMPLETE, onComplete); } public function updateToken():void{ var _local1:Number; var _local2:Number; _local1 = new Date().getTime(); _local2 = ((_local1 - _buffer.utmb.lastTime) * (_config.tokenRate / 1000)); if (_debug.verbose){ _debug.info(("tokenDelta: " + _local2), VisualDebugMode.geek); }; if (_local2 >= 1){ _buffer.utmb.token = Math.min(Math.floor((_buffer.utmb.token + _local2)), _config.bucketCapacity); _buffer.utmb.lastTime = _local1; if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); }; }; } private function _shortenURL(_arg1:String):String{ var _local2:Array; if (_arg1.length > 60){ _local2 = _arg1.split("/"); while (_arg1.length > 60) { _local2.shift(); _arg1 = ("../" + _local2.join("/")); }; }; return (_arg1); } public function get utmhn():String{ return (_info.domainName); } private function _debugSend(_arg1:URLRequest):void{ var _local2:String; var _local3:String; _local2 = ""; switch (_debug.mode){ case VisualDebugMode.geek: _local2 = ((("Gif Request #" + _alertcount) + ":\n") + _arg1.url); break; case VisualDebugMode.advanced: _local3 = _arg1.url; if (_local3.indexOf("?") > -1){ _local3 = _local3.split("?")[0]; }; _local3 = _shortenURL(_local3); _local2 = (((("Send Gif Request #" + _alertcount) + ":\n") + _local3) + " ?"); break; case VisualDebugMode.basic: default: _local2 = (((("Send " + _config.serverMode.toString()) + " Gif Request #") + _alertcount) + " ?"); }; _debug.alertGifRequest(_local2, _arg1, this); _alertcount++; } public function onComplete(_arg1:Event):void{ var _local2:String; var _local3:String; var _local4:String; _local2 = _arg1.target.loader.name; _requests[_local2].complete(); _local3 = (("Gif Request #" + _local2) + " sent"); _local4 = _requests[_local2].request.url; if (_debug.GIFRequests){ if (!_debug.verbose){ if (_local4.indexOf("?") > -1){ _local4 = _local4.split("?")[0]; }; _local4 = _shortenURL(_local4); }; if (int(_debug.mode) > int(VisualDebugMode.basic)){ _local3 = (_local3 + ((" to \"" + _local4) + "\"")); }; _debug.success(_local3); } else { _debug.info(_local3); }; _removeListeners(_arg1.target); } } }//package com.google.analytics.core
Section 104
//IdleTimer (com.google.analytics.core.IdleTimer) package com.google.analytics.core { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.events.*; import flash.display.*; import flash.utils.*; public class IdleTimer { private var _loop:Timer; private var _stage:Stage; private var _lastMove:int; private var _debug:DebugConfiguration; private var _session:Timer; private var _inactivity:Number; private var _buffer:Buffer; public function IdleTimer(_arg1:Configuration, _arg2:DebugConfiguration, _arg3:DisplayObject, _arg4:Buffer){ var _local5:Number; var _local6:Number; var _local7:Number; super(); _local5 = _arg1.idleLoop; _local6 = _arg1.idleTimeout; _local7 = _arg1.sessionTimeout; _loop = new Timer((_local5 * 1000)); _session = new Timer((_local7 * 1000), 1); _debug = _arg2; _stage = _arg3.stage; _buffer = _arg4; _lastMove = getTimer(); _inactivity = (_local6 * 1000); _loop.addEventListener(TimerEvent.TIMER, checkForIdle); _session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession); _stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); _debug.info(((((("delay: " + _local5) + "sec , inactivity: ") + _local6) + "sec, sessionTimeout: ") + _local7), VisualDebugMode.geek); _loop.start(); } private function onMouseMove(_arg1:MouseEvent):void{ _lastMove = getTimer(); if (_session.running){ _debug.info("session timer reset", VisualDebugMode.geek); _session.reset(); }; } public function endSession(_arg1:TimerEvent):void{ _session.removeEventListener(TimerEvent.TIMER_COMPLETE, endSession); _debug.info("session timer end session", VisualDebugMode.geek); _session.reset(); _buffer.resetCurrentSession(); _debug.info(_buffer.utmb.toString(), VisualDebugMode.geek); _debug.info(_buffer.utmc.toString(), VisualDebugMode.geek); _session.addEventListener(TimerEvent.TIMER_COMPLETE, endSession); } public function checkForIdle(_arg1:TimerEvent):void{ var _local2:int; _local2 = getTimer(); if ((_local2 - _lastMove) >= _inactivity){ if (!_session.running){ _debug.info("session timer start", VisualDebugMode.geek); _session.start(); }; }; } } }//package com.google.analytics.core
Section 105
//Organic (com.google.analytics.core.Organic) package com.google.analytics.core { import com.google.analytics.utils.*; public class Organic { private var _sourcesCache:Array; private var _sourcesEngine:Array; private var _ignoredKeywords:Array; private var _ignoredReferralsCache:Object; private var _ignoredReferrals:Array; private var _ignoredKeywordsCache:Object; private var _sources:Array; public static var throwErrors:Boolean = false; public function Organic(){ _sources = []; _sourcesCache = []; _sourcesEngine = []; _ignoredReferrals = []; _ignoredReferralsCache = {}; _ignoredKeywords = []; _ignoredKeywordsCache = {}; } public function getKeywordValue(_arg1:OrganicReferrer, _arg2:String):String{ var _local3:String; _local3 = _arg1.keyword; return (getKeywordValueFromPath(_local3, _arg2)); } public function isIgnoredKeyword(_arg1:String):Boolean{ if (_ignoredKeywordsCache.hasOwnProperty(_arg1)){ return (true); }; return (false); } public function isIgnoredReferral(_arg1:String):Boolean{ if (_ignoredReferralsCache.hasOwnProperty(_arg1)){ return (true); }; return (false); } public function clear():void{ clearEngines(); clearIgnoredReferrals(); clearIgnoredKeywords(); } public function get ignoredKeywordsCount():int{ return (_ignoredKeywords.length); } public function match(_arg1:String):Boolean{ if (_arg1 == ""){ return (false); }; _arg1 = _arg1.toLowerCase(); if (_sourcesEngine[_arg1] != undefined){ return (true); }; return (false); } public function get count():int{ return (_sources.length); } public function addSource(_arg1:String, _arg2:String):void{ var _local3:OrganicReferrer; _local3 = new OrganicReferrer(_arg1, _arg2); if (_sourcesCache[_local3.toString()] == undefined){ _sources.push(_local3); _sourcesCache[_local3.toString()] = (_sources.length - 1); if (_sourcesEngine[_local3.engine] == undefined){ _sourcesEngine[_local3.engine] = [(_sources.length - 1)]; } else { _sourcesEngine[_local3.engine].push((_sources.length - 1)); }; } else { if (throwErrors){ throw (new Error((_local3.toString() + " already exists, we don't add it."))); }; }; } public function clearIgnoredKeywords():void{ _ignoredKeywords = []; _ignoredKeywordsCache = {}; } public function clearEngines():void{ _sources = []; _sourcesCache = []; _sourcesEngine = []; } public function get ignoredReferralsCount():int{ return (_ignoredReferrals.length); } public function addIgnoredReferral(_arg1:String):void{ if (_ignoredReferralsCache[_arg1] == undefined){ _ignoredReferrals.push(_arg1); _ignoredReferralsCache[_arg1] = (_ignoredReferrals.length - 1); } else { if (throwErrors){ throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it."))); }; }; } public function clearIgnoredReferrals():void{ _ignoredReferrals = []; _ignoredReferralsCache = {}; } public function getReferrerByName(_arg1:String):OrganicReferrer{ var _local2:int; if (match(_arg1)){ _local2 = _sourcesEngine[_arg1][0]; return (_sources[_local2]); }; return (null); } public function addIgnoredKeyword(_arg1:String):void{ if (_ignoredKeywordsCache[_arg1] == undefined){ _ignoredKeywords.push(_arg1); _ignoredKeywordsCache[_arg1] = (_ignoredKeywords.length - 1); } else { if (throwErrors){ throw (new Error((("\"" + _arg1) + "\" already exists, we don't add it."))); }; }; } public function get sources():Array{ return (_sources); } public static function getKeywordValueFromPath(_arg1:String, _arg2:String):String{ var _local3:String; var _local4:Variables; if (_arg2.indexOf((_arg1 + "=")) > -1){ if (_arg2.charAt(0) == "?"){ _arg2 = _arg2.substr(1); }; _arg2 = _arg2.split("+").join("%20"); _local4 = new Variables(_arg2); _local3 = _local4[_arg1]; }; return (_local3); } } }//package com.google.analytics.core
Section 106
//OrganicReferrer (com.google.analytics.core.OrganicReferrer) package com.google.analytics.core { public class OrganicReferrer { private var _engine:String; private var _keyword:String; public function OrganicReferrer(_arg1:String, _arg2:String){ this.engine = _arg1; this.keyword = _arg2; } public function set engine(_arg1:String):void{ _engine = _arg1.toLowerCase(); } public function get keyword():String{ return (_keyword); } public function toString():String{ return (((engine + "?") + keyword)); } public function get engine():String{ return (_engine); } public function set keyword(_arg1:String):void{ _keyword = _arg1.toLowerCase(); } } }//package com.google.analytics.core
Section 107
//RequestObject (com.google.analytics.core.RequestObject) package com.google.analytics.core { import flash.net.*; import flash.utils.*; public class RequestObject { public var start:int; public var request:URLRequest; public var end:int; public function RequestObject(_arg1:URLRequest){ start = getTimer(); this.request = _arg1; } public function toString():String{ var _local1:Array; _local1 = []; _local1.push((("duration: " + duration) + "ms")); _local1.push(("url: " + request.url)); return ((("{ " + _local1.join(", ")) + " }")); } public function get duration():int{ if (!hasCompleted()){ return (0); }; return ((end - start)); } public function hasCompleted():Boolean{ return ((end > 0)); } public function complete():void{ end = getTimer(); } } }//package com.google.analytics.core
Section 108
//ServerOperationMode (com.google.analytics.core.ServerOperationMode) package com.google.analytics.core { public class ServerOperationMode { private var _value:int; private var _name:String; public static const both:ServerOperationMode = new ServerOperationMode(2, "both"); ; public static const remote:ServerOperationMode = new ServerOperationMode(1, "remote"); ; public static const local:ServerOperationMode = new ServerOperationMode(0, "local"); ; public function ServerOperationMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.core
Section 109
//TrackerCache (com.google.analytics.core.TrackerCache) package com.google.analytics.core { import com.google.analytics.v4.*; import flash.errors.*; public class TrackerCache implements GoogleAnalyticsAPI { public var tracker:GoogleAnalyticsAPI; private var _ar:Array; public static var CACHE_THROW_ERROR:Boolean; public function TrackerCache(_arg1:GoogleAnalyticsAPI=null){ this.tracker = _arg1; _ar = []; } public function size():uint{ return (_ar.length); } public function flush():void{ var _local1:Object; var _local2:String; var _local3:Array; var _local4:int; var _local5:int; if (tracker == null){ return; }; if (size() > 0){ _local4 = _ar.length; while (_local5 < _local4) { _local1 = _ar.shift(); _local2 = (_local1.name as String); _local3 = (_local1.args as Array); if (((!((_local2 == null))) && ((_local2 in tracker)))){ (tracker[_local2] as Function).apply(tracker, _local3); }; _local5++; }; }; } public function enqueue(_arg1:String, ... _args):Boolean{ if (_arg1 == null){ return (false); }; _ar.push({name:_arg1, args:_args}); return (true); } public function link(_arg1:String, _arg2:Boolean=false):void{ enqueue("link", _arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ enqueue("addOrganic", _arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ enqueue("setAllowLinker", _arg1); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ enqueue("trackEvent", _arg1, _arg2, _arg3, _arg4); return (true); } public function trackTrans():void{ enqueue("trackTrans"); } public function trackPageview(_arg1:String=""):void{ enqueue("trackPageview", _arg1); } public function setClientInfo(_arg1:Boolean):void{ enqueue("setClientInfo", _arg1); } public function getClientInfo():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getClientInfo' method for the moment.")); }; return (false); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ enqueue("linkByPost", _arg1, _arg2); } public function setCookieTimeout(_arg1:int):void{ enqueue("setCookieTimeout", _arg1); } public function isEmpty():Boolean{ return ((_ar.length == 0)); } public function resetSession():void{ enqueue("resetSession"); } public function setDetectFlash(_arg1:Boolean):void{ enqueue("setDetectFlash", _arg1); } public function clear():void{ _ar = []; } public function getDetectTitle():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectTitle' method for the moment.")); }; return (false); } public function setCampNameKey(_arg1:String):void{ enqueue("setCampNameKey", _arg1); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ enqueue("addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function createEventTracker(_arg1:String):EventTracker{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'createEventTracker' method for the moment.")); }; return (null); } public function setVar(_arg1:String):void{ enqueue("setVar", _arg1); } public function clearIgnoredOrganic():void{ enqueue("clearIgnoredOrganic"); } public function setDomainName(_arg1:String):void{ enqueue("setDomainName", _arg1); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'addTrans' method for the moment.")); }; return (null); } public function setCampSourceKey(_arg1:String):void{ enqueue("setCampSourceKey", _arg1); } public function setCampContentKey(_arg1:String):void{ enqueue("setCampContentKey", _arg1); } public function clearIgnoredRef():void{ enqueue("clearIgnoredRef"); } public function setLocalServerMode():void{ enqueue("setLocalServerMode"); } public function getLocalGifPath():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getLocalGifPath' method for the moment.")); }; return (""); } public function setAllowAnchor(_arg1:Boolean):void{ enqueue("setAllowAnchor", _arg1); } public function setLocalGifPath(_arg1:String):void{ enqueue("setLocalGifPath", _arg1); } public function getVersion():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getVersion' method for the moment.")); }; return (""); } public function setCookiePath(_arg1:String):void{ enqueue("setCookiePath", _arg1); } public function setSampleRate(_arg1:Number):void{ enqueue("setSampleRate", _arg1); } public function setAllowHash(_arg1:Boolean):void{ enqueue("setAllowHash", _arg1); } public function addIgnoredOrganic(_arg1:String):void{ enqueue("addIgnoredOrganic", _arg1); } public function setCampNOKey(_arg1:String):void{ enqueue("setCampNOKey", _arg1); } public function getServiceMode():ServerOperationMode{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getServiceMode' method for the moment.")); }; return (null); } public function setLocalRemoteServerMode():void{ enqueue("setLocalRemoteServerMode"); } public function cookiePathCopy(_arg1:String):void{ enqueue("cookiePathCopy", _arg1); } public function setDetectTitle(_arg1:Boolean):void{ enqueue("setDetectTitle", _arg1); } public function getDetectFlash():Boolean{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getDetectFlash' method for the moment.")); }; return (false); } public function setCampaignTrack(_arg1:Boolean):void{ enqueue("setCampaignTrack", _arg1); } public function clearOrganic():void{ enqueue("clearOrganic"); } public function setCampTermKey(_arg1:String):void{ enqueue("setCampTermKey", _arg1); } public function addIgnoredRef(_arg1:String):void{ enqueue("addIgnoredRef", _arg1); } public function setCampMediumKey(_arg1:String):void{ enqueue("setCampMediumKey", _arg1); } public function setSessionTimeout(_arg1:int):void{ enqueue("setSessionTimeout", _arg1); } public function setRemoteServerMode():void{ enqueue("setRemoteServerMode"); } public function element(){ return (_ar[0]); } public function getAccount():String{ if (CACHE_THROW_ERROR){ throw (new IllegalOperationError("The tracker is not ready and you can use the 'getAccount' method for the moment.")); }; return (""); } } }//package com.google.analytics.core
Section 110
//TrackerMode (com.google.analytics.core.TrackerMode) package com.google.analytics.core { public class TrackerMode { public static const BRIDGE:String = "Bridge"; public static const AS3:String = "AS3"; } }//package com.google.analytics.core
Section 111
//Utils (com.google.analytics.core.Utils) package com.google.analytics.core { public class Utils { public static function trim(_arg1:String, _arg2:Boolean=false):String{ var _local3:Array; var _local4:String; var _local5:int; var _local6:int; var _local7:int; if (_arg1 == ""){ return (""); }; _local3 = [" ", "\n", "\r", "\t"]; _local4 = _arg1; if (_arg2){ _local5 = 0; while ((((_local5 < _local3.length)) && ((_local4.indexOf(_local3[_local5]) > -1)))) { _local4 = _local4.split(_local3[_local5]).join(""); _local5++; }; } else { _local6 = 0; while ((((_local6 < _local4.length)) && ((_local3.indexOf(_local4.charAt(_local6)) > -1)))) { _local6++; }; _local4 = _local4.substr(_local6); _local7 = (_local4.length - 1); while ((((_local7 >= 0)) && ((_local3.indexOf(_local4.charAt(_local7)) > -1)))) { _local7--; }; _local4 = _local4.substring(0, (_local7 + 1)); }; return (_local4); } public static function generateHash(_arg1:String):int{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; _local2 = 1; _local3 = 0; if (((!((_arg1 == null))) && (!((_arg1 == ""))))){ _local2 = 0; _local4 = (_arg1.length - 1); while (_local4 >= 0) { _local5 = _arg1.charCodeAt(_local4); _local2 = ((((_local2 << 6) & 268435455) + _local5) + (_local5 << 14)); _local3 = (_local2 & 266338304); if (_local3 != 0){ _local2 = (_local2 ^ (_local3 >> 21)); }; _local4--; }; }; return (_local2); } public static function generate32bitRandom():int{ return (Math.round((Math.random() * 2147483647))); } public static function validateAccount(_arg1:String):Boolean{ var _local2:RegExp; _local2 = /^UA-[0-9]*-[0-9]*$/; return (_local2.test(_arg1)); } } }//package com.google.analytics.core
Section 112
//Cookie (com.google.analytics.data.Cookie) package com.google.analytics.data { public interface Cookie { function toURLString():String; function toSharedObject():Object; function set creation(_arg1:Date):void; function fromSharedObject(_arg1:Object):void; function get expiration():Date; function isExpired():Boolean; function set expiration(_arg1:Date):void; function get creation():Date; } }//package com.google.analytics.data
Section 113
//UTMA (com.google.analytics.data.UTMA) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMA extends UTMCookie { private var _domainHash:Number; private var _firstTime:Number; private var _currentTime:Number; private var _sessionId:Number; private var _lastTime:Number; private var _sessionCount:Number; public function UTMA(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:Number=NaN, _arg6:Number=NaN){ super("utma", "__utma", ["domainHash", "sessionId", "firstTime", "lastTime", "currentTime", "sessionCount"], (Timespan.twoyears * 1000)); this.domainHash = _arg1; this.sessionId = _arg2; this.firstTime = _arg3; this.lastTime = _arg4; this.currentTime = _arg5; this.sessionCount = _arg6; } public function get lastTime():Number{ return (_lastTime); } public function set lastTime(_arg1:Number):void{ _lastTime = _arg1; update(); } public function get sessionCount():Number{ return (_sessionCount); } public function get firstTime():Number{ return (_firstTime); } public function set sessionId(_arg1:Number):void{ _sessionId = _arg1; update(); } public function set sessionCount(_arg1:Number):void{ _sessionCount = _arg1; update(); } public function set firstTime(_arg1:Number):void{ _firstTime = _arg1; update(); } public function set currentTime(_arg1:Number):void{ _currentTime = _arg1; update(); } public function get sessionId():Number{ return (_sessionId); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get currentTime():Number{ return (_currentTime); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 114
//UTMB (com.google.analytics.data.UTMB) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMB extends UTMCookie { private var _lastTime:Number; private var _domainHash:Number; private var _trackCount:Number; private var _token:Number; public static var defaultTimespan:Number = Timespan.thirtyminutes; public function UTMB(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN){ super("utmb", "__utmb", ["domainHash", "trackCount", "token", "lastTime"], (defaultTimespan * 1000)); this.domainHash = _arg1; this.trackCount = _arg2; this.token = _arg3; this.lastTime = _arg4; } public function get token():Number{ return (_token); } public function set trackCount(_arg1:Number):void{ _trackCount = _arg1; update(); } public function set lastTime(_arg1:Number):void{ _lastTime = _arg1; update(); } public function get lastTime():Number{ return (_lastTime); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } public function set token(_arg1:Number):void{ _token = _arg1; update(); } public function get trackCount():Number{ return (_trackCount); } } }//package com.google.analytics.data
Section 115
//UTMC (com.google.analytics.data.UTMC) package com.google.analytics.data { public class UTMC extends UTMCookie { private var _domainHash:Number; public function UTMC(_arg1:Number=NaN){ super("utmc", "__utmc", ["domainHash"]); this.domainHash = _arg1; } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 116
//UTMCookie (com.google.analytics.data.UTMCookie) package com.google.analytics.data { import com.google.analytics.core.*; public class UTMCookie implements Cookie { protected var inURL:String; protected var name:String; private var _creation:Date; private var _expiration:Date; public var proxy:Buffer; private var _timespan:Number; protected var fields:Array; public function UTMCookie(_arg1:String, _arg2:String, _arg3:Array, _arg4:Number=0){ this.name = _arg1; this.inURL = _arg2; this.fields = _arg3; _timestamp(_arg4); } public function isEmpty():Boolean{ var _local1:int; var _local2:String; var _local3:int; _local1 = 0; _local3 = 0; while (_local3 < fields.length) { _local2 = fields[_local3]; if ((((this[_local2] is Number)) && (isNaN(this[_local2])))){ _local1++; } else { if ((((this[_local2] is String)) && ((this[_local2] == "")))){ _local1++; }; }; _local3++; }; if (_local1 == fields.length){ return (true); }; return (false); } protected function update():void{ resetTimestamp(); if (proxy){ proxy.update(name, toSharedObject()); }; } public function fromSharedObject(_arg1:Object):void{ var _local2:String; var _local3:int; var _local4:int; _local3 = fields.length; _local4 = 0; while (_local4 < _local3) { _local2 = fields[_local4]; if (_arg1[_local2]){ this[_local2] = _arg1[_local2]; }; _local4++; }; if (_arg1.creation){ this.creation = _arg1.creation; }; if (_arg1.expiration){ this.expiration = _arg1.expiration; }; } private function _timestamp(_arg1:Number):void{ creation = new Date(); _timespan = _arg1; if (_arg1 > 0){ expiration = new Date((creation.valueOf() + _arg1)); }; } public function isExpired():Boolean{ var _local1:Date; var _local2:Number; _local1 = new Date(); _local2 = (expiration.valueOf() - _local1.valueOf()); if (_local2 <= 0){ return (true); }; return (false); } public function set expiration(_arg1:Date):void{ _expiration = _arg1; } public function get creation():Date{ return (_creation); } public function reset():void{ var _local1:String; var _local2:int; _local2 = 0; while (_local2 < fields.length) { _local1 = fields[_local2]; if ((this[_local1] is Number)){ this[_local1] = NaN; } else { if ((this[_local1] is String)){ this[_local1] = ""; }; }; _local2++; }; resetTimestamp(); update(); } public function valueOf():String{ var _local1:Array; var _local2:String; var _local3:*; var _local4:int; _local1 = []; _local4 = 0; while (_local4 < fields.length) { _local2 = fields[_local4]; _local3 = this[_local2]; if ((_local3 is String)){ if (_local3 == ""){ _local3 = "-"; _local1.push(_local3); } else { _local1.push(_local3); }; } else { if ((_local3 is Number)){ if (_local3 == 0){ _local1.push(_local3); } else { if (isNaN(_local3)){ _local3 = "-"; _local1.push(_local3); } else { _local1.push(_local3); }; }; }; }; _local4++; }; return (("" + _local1.join("."))); } public function resetTimestamp(_arg1:Number=NaN):void{ if (!isNaN(_arg1)){ _timespan = _arg1; }; _creation = null; _expiration = null; _timestamp(_timespan); } public function get expiration():Date{ if (_expiration){ return (_expiration); }; return (new Date((new Date().valueOf() + 1000))); } public function toURLString():String{ return (((inURL + "=") + valueOf())); } public function toSharedObject():Object{ var _local1:Object; var _local2:String; var _local3:*; var _local4:int; _local1 = {}; _local4 = 0; for (;_local4 < fields.length;_local4++) { _local2 = fields[_local4]; _local3 = this[_local2]; if ((_local3 is String)){ _local1[_local2] = _local3; } else { if (_local3 == 0){ _local1[_local2] = _local3; } else { if (isNaN(_local3)){ continue; } else { _local1[_local2] = _local3; }; }; }; }; _local1.creation = creation; _local1.expiration = expiration; return (_local1); } public function toString(_arg1:Boolean=false):String{ var _local2:Array; var _local3:String; var _local4:*; var _local5:int; var _local6:int; var _local7:String; _local2 = []; _local5 = fields.length; _local6 = 0; for (;_local6 < _local5;_local6++) { _local3 = fields[_local6]; _local4 = this[_local3]; if ((_local4 is String)){ _local2.push((((_local3 + ": \"") + _local4) + "\"")); } else { if (_local4 == 0){ _local2.push(((_local3 + ": ") + _local4)); } else { if (isNaN(_local4)){ continue; } else { _local2.push(((_local3 + ": ") + _local4)); }; }; }; }; _local7 = (((name.toUpperCase() + " {") + _local2.join(", ")) + "}"); if (_arg1){ _local7 = (_local7 + (((" creation:" + creation) + ", expiration:") + expiration)); }; return (_local7); } public function set creation(_arg1:Date):void{ _creation = _arg1; } } }//package com.google.analytics.data
Section 117
//UTMK (com.google.analytics.data.UTMK) package com.google.analytics.data { public class UTMK extends UTMCookie { private var _hash:Number; public function UTMK(_arg1:Number=NaN){ super("utmk", "__utmk", ["hash"]); this.hash = _arg1; } public function get hash():Number{ return (_hash); } public function set hash(_arg1:Number):void{ _hash = _arg1; update(); } } }//package com.google.analytics.data
Section 118
//UTMV (com.google.analytics.data.UTMV) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMV extends UTMCookie { private var _domainHash:Number; private var _value:String; public function UTMV(_arg1:Number=NaN, _arg2:String=""){ super("utmv", "__utmv", ["domainHash", "value"], (Timespan.twoyears * 1000)); this.domainHash = _arg1; this.value = _arg2; } public function get value():String{ return (_value); } public function set value(_arg1:String):void{ _value = _arg1; update(); } override public function toURLString():String{ return (((inURL + "=") + encodeURI(valueOf()))); } public function get domainHash():Number{ return (_domainHash); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } } }//package com.google.analytics.data
Section 119
//UTMZ (com.google.analytics.data.UTMZ) package com.google.analytics.data { import com.google.analytics.utils.*; public class UTMZ extends UTMCookie { private var _domainHash:Number; private var _campaignSessions:Number; private var _campaignTracking:String; private var _responseCount:Number; private var _campaignCreation:Number; public static var defaultTimespan:Number = Timespan.sixmonths; public function UTMZ(_arg1:Number=NaN, _arg2:Number=NaN, _arg3:Number=NaN, _arg4:Number=NaN, _arg5:String=""){ super("utmz", "__utmz", ["domainHash", "campaignCreation", "campaignSessions", "responseCount", "campaignTracking"], (defaultTimespan * 1000)); this.domainHash = _arg1; this.campaignCreation = _arg2; this.campaignSessions = _arg3; this.responseCount = _arg4; this.campaignTracking = _arg5; } public function get campaignCreation():Number{ return (_campaignCreation); } public function set campaignSessions(_arg1:Number):void{ _campaignSessions = _arg1; update(); } public function set responseCount(_arg1:Number):void{ _responseCount = _arg1; update(); } public function set campaignCreation(_arg1:Number):void{ _campaignCreation = _arg1; update(); } public function get campaignSessions():Number{ return (_campaignSessions); } public function get responseCount():Number{ return (_responseCount); } public function set domainHash(_arg1:Number):void{ _domainHash = _arg1; update(); } public function get campaignTracking():String{ return (_campaignTracking); } public function set campaignTracking(_arg1:String):void{ _campaignTracking = _arg1; update(); } public function get domainHash():Number{ return (_domainHash); } } }//package com.google.analytics.data
Section 120
//X10 (com.google.analytics.data.X10) package com.google.analytics.data { public class X10 { private var _delimEnd:String;// = ")" private var _delimSet:String;// = "*" private var _escapeChar:String;// = "'" private var _delimBegin:String;// = "(" private var _delimNumValue:String;// = "!" private var _key:String;// = "k" private var _set:Array; private var _projectData:Object; private var _hasData:int; private var _escapeCharMap:Object; private var _minimum:int; private var _value:String;// = "v" public function X10(){ _key = "k"; _value = "v"; _set = [_key, _value]; _delimBegin = "("; _delimEnd = ")"; _delimSet = "*"; _delimNumValue = "!"; _escapeChar = "'"; super(); _projectData = {}; _escapeCharMap = {}; _escapeCharMap[_escapeChar] = "'0"; _escapeCharMap[_delimEnd] = "'1"; _escapeCharMap[_delimSet] = "'2"; _escapeCharMap[_delimNumValue] = "'3"; _minimum = 1; } private function _clearInternal(_arg1:Number, _arg2:String):void{ var _local3:Boolean; var _local4:int; var _local5:int; if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){ _projectData[_arg1][_arg2] = undefined; _local3 = true; _local5 = _set.length; _local4 = 0; while (_local4 < _local5) { if (_projectData[_arg1][_set[_local4]] != undefined){ _local3 = false; break; }; _local4++; }; if (_local3){ _projectData[_arg1] = undefined; _hasData = (_hasData - 1); }; }; } public function hasData():Boolean{ return ((_hasData > 0)); } private function _setInternal(_arg1:Number, _arg2:String, _arg3:Number, _arg4:String):void{ if (!hasProject(_arg1)){ _projectData[_arg1] = {}; }; if (_projectData[_arg1][_arg2] == undefined){ _projectData[_arg1][_arg2] = []; }; _projectData[_arg1][_arg2][_arg3] = _arg4; _hasData = (_hasData + 1); } public function hasProject(_arg1:Number):Boolean{ return (_projectData[_arg1]); } public function clearKey(_arg1:Number):void{ _clearInternal(_arg1, _key); } private function _renderDataType(_arg1:Array):String{ var _local2:Array; var _local3:String; var _local4:int; _local2 = []; _local4 = 0; while (_local4 < _arg1.length) { if (_arg1[_local4] != undefined){ _local3 = ""; if (((!((_local4 == _minimum))) && ((_arg1[(_local4 - 1)] == undefined)))){ _local3 = (_local3 + _local4.toString()); _local3 = (_local3 + _delimNumValue); }; _local3 = (_local3 + _escapeExtensibleValue(_arg1[_local4])); _local2.push(_local3); }; _local4++; }; return (((_delimBegin + _local2.join(_delimSet)) + _delimEnd)); } public function getKey(_arg1:Number, _arg2:Number):String{ return ((_getInternal(_arg1, _key, _arg2) as String)); } public function clearValue(_arg1:Number):void{ _clearInternal(_arg1, _value); } public function renderMergedUrlString(_arg1:X10=null):String{ var _local2:Array; var _local3:String; if (!_arg1){ return (renderUrlString()); }; _local2 = [_arg1.renderUrlString()]; for (_local3 in _projectData) { if (((hasProject(Number(_local3))) && (!(_arg1.hasProject(Number(_local3)))))){ _local2.push((_local3 + _renderProject(_projectData[_local3]))); }; }; return (_local2.join("")); } public function setValue(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ if (((((!((Math.round(_arg3) == _arg3))) || (isNaN(_arg3)))) || ((_arg3 == Infinity)))){ return (false); }; _setInternal(_arg1, _value, _arg2, _arg3.toString()); return (true); } public function renderUrlString():String{ var _local1:Array; var _local2:String; _local1 = []; for (_local2 in _projectData) { if (hasProject(Number(_local2))){ _local1.push((_local2 + _renderProject(_projectData[_local2]))); }; }; return (_local1.join("")); } private function _getInternal(_arg1:Number, _arg2:String, _arg3:Number):Object{ if (((hasProject(_arg1)) && (!((_projectData[_arg1][_arg2] == undefined))))){ return (_projectData[_arg1][_arg2][_arg3]); }; return (undefined); } public function setKey(_arg1:Number, _arg2:Number, _arg3:String):Boolean{ _setInternal(_arg1, _key, _arg2, _arg3); return (true); } public function getValue(_arg1:Number, _arg2:Number){ var _local3:*; _local3 = _getInternal(_arg1, _value, _arg2); if (_local3 == null){ return (null); }; return (Number(_local3)); } private function _renderProject(_arg1:Object):String{ var _local2:String; var _local3:Boolean; var _local4:int; var _local5:Array; var _local6:int; _local2 = ""; _local3 = false; _local6 = _set.length; _local4 = 0; while (_local4 < _local6) { _local5 = _arg1[_set[_local4]]; if (_local5){ if (_local3){ _local2 = (_local2 + _set[_local4]); }; _local2 = (_local2 + _renderDataType(_local5)); _local3 = false; } else { _local3 = true; }; _local4++; }; return (_local2); } private function _escapeExtensibleValue(_arg1:String):String{ var _local2:String; var _local3:int; var _local4:String; var _local5:String; _local2 = ""; _local3 = 0; while (_local3 < _arg1.length) { _local4 = _arg1.charAt(_local3); _local5 = _escapeCharMap[_local4]; if (_local5){ _local2 = (_local2 + _local5); } else { _local2 = (_local2 + _local4); }; _local3++; }; return (_local2); } } }//package com.google.analytics.data
Section 121
//_Style (com.google.analytics.debug._Style) package com.google.analytics.debug { import flash.net.*; import flash.text.*; public class _Style { public var borderColor:uint; public var backgroundColor:uint; private var _sheet:StyleSheet; public var roundedCorner:uint; public var alertColor:uint; public var infoColor:uint; public var successColor:uint; private var _loader:URLLoader; public var failureColor:uint; private var _defaultSheet:String; public var warningColor:uint; public function _Style(){ _sheet = new StyleSheet(); _loader = new URLLoader(); _init(); } private function _parseSheet(_arg1:String):void{ _sheet.parseCSS(_arg1); } public function get sheet():StyleSheet{ return (_sheet); } private function _init():void{ _defaultSheet = ""; _defaultSheet = (_defaultSheet + "a{text-decoration: underline;}\n"); _defaultSheet = (_defaultSheet + ".uiLabel{color: #000000;font-family: Arial;font-size: 12;margin-left: 2;margin-right: 2;}\n"); _defaultSheet = (_defaultSheet + ".uiWarning{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlert{color: #ffffff;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiInfo{color: #000000;font-family: Arial;font-size: 14;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiSuccess{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiFailure{color: #ffffff;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlertAction{color: #ffffff;text-align: center;font-family: Arial;font-size: 12;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + ".uiAlertTitle{color: #ffffff;font-family: Arial;font-size: 16;font-weight: bold;margin-left: 6;margin-right: 6;}\n"); _defaultSheet = (_defaultSheet + "\n"); roundedCorner = 6; backgroundColor = 0xCCCCCC; borderColor = 0x555555; infoColor = 16777113; alertColor = 0xFFCC00; warningColor = 0xCC0000; successColor = 0xFF00; failureColor = 0xFF0000; _parseSheet(_defaultSheet); } } }//package com.google.analytics.debug
Section 122
//Alert (com.google.analytics.debug.Alert) package com.google.analytics.debug { import flash.events.*; public class Alert extends Label { public var actionOnNextLine:Boolean;// = true public var autoClose:Boolean;// = true private var _actions:Array; public function Alert(_arg1:String, _arg2:Array, _arg3:String="uiAlert", _arg4:uint=0, _arg5:Align=null, _arg6:Boolean=false, _arg7:Boolean=true){ var _local8:int; autoClose = true; actionOnNextLine = true; if (_arg4 == 0){ _arg4 = Style.alertColor; }; if (_arg5 == null){ _arg5 = Align.center; }; super(_arg1, _arg3, _arg4, _arg5, _arg6); this.selectable = true; super.mouseChildren = true; this.buttonMode = true; this.mouseEnabled = true; this.useHandCursor = true; this.actionOnNextLine = _arg7; _actions = []; _local8 = 0; while (_local8 < _arg2.length) { _arg2[_local8].container = this; _actions.push(_arg2[_local8]); _local8++; }; } protected function getAction(_arg1:String):AlertAction{ var _local2:int; _local2 = 0; while (_local2 < _actions.length) { if (_arg1 == _actions[_local2].activator){ return (_actions[_local2]); }; _local2++; }; return (null); } override protected function layout():void{ super.layout(); _defineActions(); } protected function spaces(_arg1:int):String{ var _local2:String; var _local3:String; var _local4:int; _local2 = ""; _local3 = " "; _local4 = 0; while (_local4 < (_arg1 + 1)) { _local2 = (_local2 + _local3); _local4++; }; return (_local2); } override public function onLink(_arg1:TextEvent):void{ var _local2:AlertAction; if (isValidAction(_arg1.text)){ _local2 = getAction(_arg1.text); if (_local2){ _local2.execute(); }; }; if (autoClose){ close(); }; } protected function isValidAction(_arg1:String):Boolean{ var _local2:int; _local2 = 0; while (_local2 < _actions.length) { if (_arg1 == _actions[_local2].activator){ return (true); }; _local2++; }; return (false); } private function _defineActions():void{ var _local1:String; var _local2:Array; var _local3:AlertAction; var _local4:int; _local1 = ""; if (actionOnNextLine){ _local1 = (_local1 + "\n"); } else { _local1 = (_local1 + " |"); }; _local1 = (_local1 + " "); _local2 = []; _local4 = 0; while (_local4 < _actions.length) { _local3 = _actions[_local4]; _local2.push((((("<a href=\"event:" + _local3.activator) + "\">") + _local3.name) + "</a>")); _local4++; }; _local1 = (_local1 + _local2.join(" | ")); appendText(_local1, "uiAlertAction"); } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 123
//AlertAction (com.google.analytics.debug.AlertAction) package com.google.analytics.debug { public class AlertAction { public var container:Alert; private var _callback; public var name:String; public var activator:String; public function AlertAction(_arg1:String, _arg2:String, _arg3){ this.name = _arg1; this.activator = _arg2; _callback = _arg3; } public function execute():void{ if (_callback){ if ((_callback is Function)){ (_callback as Function)(); } else { if ((_callback is String)){ var _local1 = container; _local1[_callback](); }; }; }; } } }//package com.google.analytics.debug
Section 124
//Align (com.google.analytics.debug.Align) package com.google.analytics.debug { public class Align { private var _value:int; private var _name:String; public static const bottomRight:Align = new Align(18, "bottomRight"); ; public static const right:Align = new Align(16, "right"); ; public static const left:Align = new Align(32, "left"); ; public static const topRight:Align = new Align(17, "topRight"); ; public static const bottom:Align = new Align(2, "bottom"); ; public static const bottomLeft:Align = new Align(34, "bottomLeft"); ; public static const topLeft:Align = new Align(33, "topLeft"); ; public static const center:Align = new Align(0x0100, "center"); ; public static const none:Align = new Align(0, "none"); ; public static const top:Align = new Align(1, "top"); ; public function Align(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.debug
Section 125
//Background (com.google.analytics.debug.Background) package com.google.analytics.debug { import flash.display.*; public class Background { public static function drawRounded(_arg1, _arg2:Graphics, _arg3:uint=0, _arg4:uint=0):void{ var _local5:uint; var _local6:uint; var _local7:uint; _local7 = Style.roundedCorner; if ((((_arg3 > 0)) && ((_arg4 > 0)))){ _local5 = _arg3; _local6 = _arg4; } else { _local5 = _arg1.width; _local6 = _arg1.height; }; if (((_arg1.stickToEdge) && (!((_arg1.alignement == Align.none))))){ switch (_arg1.alignement){ case Align.top: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, _local7); break; case Align.topLeft: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, 0, _local7); break; case Align.topRight: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, 0, _local7, 0); break; case Align.bottom: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, _local7, 0, 0); break; case Align.bottomLeft: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, 0); break; case Align.bottomRight: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, 0, 0); break; case Align.left: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, 0, _local7, 0, _local7); break; case Align.right: _arg2.drawRoundRectComplex(0, 0, _local5, _local6, _local7, 0, _local7, 0); break; case Align.center: _arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7); break; }; } else { _arg2.drawRoundRect(0, 0, _local5, _local6, _local7, _local7); }; } } }//package com.google.analytics.debug
Section 126
//Debug (com.google.analytics.debug.Debug) package com.google.analytics.debug { import flash.events.*; import flash.ui.*; public class Debug extends Label { private var _lines:Array; private var _preferredForcedWidth:uint;// = 540 public var maxLines:uint;// = 16 private var _linediff:int;// = 0 public static var count:uint = 0; public function Debug(_arg1:uint=0, _arg2:Align=null, _arg3:Boolean=false){ _linediff = 0; _preferredForcedWidth = 540; maxLines = 16; if (_arg2 == null){ _arg2 = Align.bottom; }; super("", "uiLabel", _arg1, _arg2, _arg3); this.name = ("Debug" + count++); _lines = []; selectable = true; addEventListener(KeyboardEvent.KEY_DOWN, onKey); } public function close():void{ dispose(); } public function writeBold(_arg1:String):void{ write(_arg1, true); } override protected function dispose():void{ removeEventListener(KeyboardEvent.KEY_DOWN, onKey); super.dispose(); } override public function get forcedWidth():uint{ if (this.parent){ if (UISprite(this.parent).forcedWidth > _preferredForcedWidth){ return (_preferredForcedWidth); }; return (UISprite(this.parent).forcedWidth); } else { }; return (!NULL!); } private function onKey(_arg1:KeyboardEvent=null):void{ var _local2:Array; switch (_arg1.keyCode){ case Keyboard.DOWN: _local2 = _getLinesToDisplay(1); break; case Keyboard.UP: _local2 = _getLinesToDisplay(-1); break; default: _local2 = null; }; if (_local2 == null){ return; }; text = _local2.join("\n"); } public function write(_arg1:String, _arg2:Boolean=false):void{ var _local3:Array; var _local4:String; var _local5:String; var _local6:int; var _local7:Array; if (_arg1.indexOf("") > -1){ _local3 = _arg1.split("\n"); } else { _local3 = [_arg1]; }; _local4 = ""; _local5 = ""; if (_arg2){ _local4 = "<b>"; _local5 = "</b>"; }; _local6 = 0; while (_local6 < _local3.length) { _lines.push(((_local4 + _local3[_local6]) + _local5)); _local6++; }; _local7 = _getLinesToDisplay(); text = _local7.join("\n"); } private function _getLinesToDisplay(_arg1:int=0):Array{ var _local2:Array; var _local3:uint; var _local4:uint; if ((_lines.length - 1) > maxLines){ if ((_linediff <= 0)){ _linediff = (_linediff + _arg1); } else { if ((((_linediff > 0)) && ((_arg1 < 0)))){ _linediff = (_linediff + _arg1); }; }; _local3 = ((_lines.length - maxLines) + _linediff); _local4 = (_local3 + maxLines); _local2 = _lines.slice(_local3, _local4); } else { _local2 = _lines; }; return (_local2); } } }//package com.google.analytics.debug
Section 127
//DebugConfiguration (com.google.analytics.debug.DebugConfiguration) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.utils.*; import flash.ui.*; public class DebugConfiguration { public var showHideKey:Number; private var _mode:VisualDebugMode; private var _verbose:Boolean;// = false public var destroyKey:Number; public var GIFRequests:Boolean;// = false public var infoTimeout:Number;// = 1000 public var showInfos:Boolean;// = true public var minimizedOnStart:Boolean;// = false private var _active:Boolean;// = false public var traceOutput:Boolean;// = false public var layout:ILayout; public var warningTimeout:Number;// = 1500 public var javascript:Boolean;// = false public var showWarnings:Boolean;// = true private var _visualInitialized:Boolean;// = false public function DebugConfiguration(){ _active = false; _verbose = false; _visualInitialized = false; _mode = VisualDebugMode.basic; traceOutput = false; javascript = false; GIFRequests = false; showInfos = true; infoTimeout = 1000; showWarnings = true; warningTimeout = 1500; minimizedOnStart = false; showHideKey = Keyboard.SPACE; destroyKey = Keyboard.BACKSPACE; super(); } public function get verbose():Boolean{ return (_verbose); } public function set verbose(_arg1:Boolean):void{ _verbose = _arg1; } public function set mode(_arg1):void{ if ((_arg1 is String)){ switch (_arg1){ case "geek": _arg1 = VisualDebugMode.geek; break; case "advanced": _arg1 = VisualDebugMode.advanced; break; case "basic": default: _arg1 = VisualDebugMode.basic; }; }; _mode = _arg1; } public function success(_arg1:String):void{ if (layout){ layout.createSuccessAlert(_arg1); }; if (traceOutput){ trace((("[+] " + _arg1) + " !!")); }; } public function get active():Boolean{ return (_active); } private function _initializeVisual():void{ if (layout){ layout.init(); _visualInitialized = true; }; } private function _destroyVisual():void{ if (((layout) && (_visualInitialized))){ layout.destroy(); }; } public function warning(_arg1:String, _arg2:VisualDebugMode=null):void{ if (_filter(_arg2)){ return; }; if (((layout) && (showWarnings))){ layout.createWarning(_arg1); }; if (traceOutput){ trace((("## " + _arg1) + " ##")); }; } private function _filter(_arg1:VisualDebugMode=null):Boolean{ return (((_arg1) && ((int(_arg1) >= int(this.mode))))); } public function failure(_arg1:String):void{ if (layout){ layout.createFailureAlert(_arg1); }; if (traceOutput){ trace((("[-] " + _arg1) + " !!")); }; } public function get mode(){ return (_mode); } public function set active(_arg1:Boolean):void{ _active = _arg1; if (_active){ _initializeVisual(); } else { _destroyVisual(); }; } protected function trace(_arg1:String):void{ var _local2:Array; var _local3:String; var _local4:String; var _local5:int; var _local6:int; var _local7:Array; var _local8:int; _local2 = []; _local3 = ""; _local4 = ""; if (this.mode == VisualDebugMode.geek){ _local3 = (getTimer() + " - "); _local4 = (new Array(_local3.length).join(" ") + " "); }; if (_arg1.indexOf("\n") > -1){ _local7 = _arg1.split("\n"); _local8 = 0; while (_local8 < _local7.length) { if (_local7[_local8] == ""){ } else { if (_local8 == 0){ _local2.push((_local3 + _local7[_local8])); } else { _local2.push((_local4 + _local7[_local8])); }; }; _local8++; }; } else { _local2.push((_local3 + _arg1)); }; _local5 = _local2.length; _local6 = 0; while (_local6 < _local5) { trace(_local2[_local6]); _local6++; }; } public function alert(_arg1:String):void{ if (layout){ layout.createAlert(_arg1); }; if (traceOutput){ trace((("!! " + _arg1) + " !!")); }; } public function info(_arg1:String, _arg2:VisualDebugMode=null):void{ if (_filter(_arg2)){ return; }; if (((layout) && (showInfos))){ layout.createInfo(_arg1); }; if (traceOutput){ trace(_arg1); }; } public function alertGifRequest(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{ if (layout){ layout.createGIFRequestAlert(_arg1, _arg2, _arg3); }; if (traceOutput){ trace(((">> " + _arg1) + " <<")); }; } } }//package com.google.analytics.debug
Section 128
//FailureAlert (com.google.analytics.debug.FailureAlert) package com.google.analytics.debug { public class FailureAlert extends Alert { public function FailureAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){ var _local4:Align; var _local5:Boolean; var _local6:Boolean; _local4 = Align.bottomLeft; _local5 = true; _local6 = false; if (_arg1.verbose){ _arg2 = ((("<u><span class=\"uiAlertTitle\">Failure</span>" + spaces(18)) + "</u>\n\n") + _arg2); _local4 = Align.center; _local5 = false; _local6 = true; }; super(_arg2, _arg3, "uiFailure", Style.failureColor, _local4, _local5, _local6); } } }//package com.google.analytics.debug
Section 129
//GIFRequestAlert (com.google.analytics.debug.GIFRequestAlert) package com.google.analytics.debug { public class GIFRequestAlert extends Alert { public function GIFRequestAlert(_arg1:String, _arg2:Array){ super(_arg1, _arg2); } } }//package com.google.analytics.debug
Section 130
//ILayout (com.google.analytics.debug.ILayout) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.display.*; public interface ILayout { function createWarning(_arg1:String):void; function addToStage(_arg1:DisplayObject):void; function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void; function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void; function createInfo(_arg1:String):void; function createFailureAlert(_arg1:String):void; function addToPanel(_arg1:String, _arg2:DisplayObject):void; function init():void; function createSuccessAlert(_arg1:String):void; function createVisualDebug():void; function createAlert(_arg1:String):void; function destroy():void; function bringToFront(_arg1:DisplayObject):void; function isAvailable():Boolean; } }//package com.google.analytics.debug
Section 131
//Info (com.google.analytics.debug.Info) package com.google.analytics.debug { import flash.events.*; import flash.utils.*; public class Info extends Label { private var _timer:Timer; public function Info(_arg1:String="", _arg2:uint=3000){ super(_arg1, "uiInfo", Style.infoColor, Align.top, true); if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.start(); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true); }; } public function onComplete(_arg1:TimerEvent):void{ close(); } override public function onLink(_arg1:TextEvent):void{ switch (_arg1.text){ case "hide": close(); break; }; } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 132
//Label (com.google.analytics.debug.Label) package com.google.analytics.debug { import flash.events.*; import flash.display.*; import flash.text.*; public class Label extends UISprite { private var _text:String; private var _textField:TextField; private var _color:uint; protected var selectable:Boolean; public var stickToEdge:Boolean; private var _background:Shape; private var _tag:String; public static var count:uint = 0; public function Label(_arg1:String="", _arg2:String="uiLabel", _arg3:uint=0, _arg4:Align=null, _arg5:Boolean=false){ this.name = ("Label" + count++); selectable = false; _background = new Shape(); _textField = new TextField(); _text = _arg1; _tag = _arg2; if (_arg4 == null){ _arg4 = Align.none; }; this.alignement = _arg4; this.stickToEdge = _arg5; if (_arg3 == 0){ _arg3 = Style.backgroundColor; }; _color = _arg3; _textField.addEventListener(TextEvent.LINK, onLink); } override protected function dispose():void{ _textField.removeEventListener(TextEvent.LINK, onLink); super.dispose(); } private function _draw():void{ var _local1:Graphics; var _local2:uint; var _local3:uint; _local1 = _background.graphics; _local1.clear(); _local1.beginFill(_color); _local2 = _textField.width; _local3 = _textField.height; if (forcedWidth > 0){ _local2 = forcedWidth; }; Background.drawRounded(this, _local1, _local2, _local3); _local1.endFill(); } override protected function layout():void{ _textField.type = TextFieldType.DYNAMIC; _textField.autoSize = TextFieldAutoSize.LEFT; _textField.background = false; _textField.selectable = selectable; _textField.multiline = true; _textField.styleSheet = Style.sheet; this.text = _text; addChild(_background); addChild(_textField); } public function get text():String{ return (_textField.text); } public function set tag(_arg1:String):void{ _tag = _arg1; text = ""; } public function set text(_arg1:String):void{ if (_arg1 == ""){ _arg1 = _text; }; _textField.htmlText = (((("<span class=\"" + tag) + "\">") + _arg1) + "</span>"); _text = _arg1; _draw(); resize(); } public function appendText(_arg1:String, _arg2:String=""):void{ if (_arg1 == ""){ return; }; if (_arg2 == ""){ _arg2 = tag; }; _textField.htmlText = (_textField.htmlText + (((("<span class=\"" + _arg2) + "\">") + _arg1) + "</span>")); _text = (_text + _arg1); _draw(); resize(); } public function onLink(_arg1:TextEvent):void{ } public function get tag():String{ return (_tag); } } }//package com.google.analytics.debug
Section 133
//Layout (com.google.analytics.debug.Layout) package com.google.analytics.debug { import com.google.analytics.core.*; import flash.net.*; import flash.events.*; import flash.display.*; import com.google.analytics.*; public class Layout implements ILayout { private var _display:DisplayObject; private var _infoQueue:Array; private var _maxCharPerLine:int;// = 85 private var _hasInfo:Boolean; private var _warningQueue:Array; private var _hasDebug:Boolean; private var _hasWarning:Boolean; private var _mainPanel:Panel; private var _GRAlertQueue:Array; private var _debug:DebugConfiguration; public var visualDebug:Debug; private var _hasGRAlert:Boolean; public function Layout(_arg1:DebugConfiguration, _arg2:DisplayObject){ _maxCharPerLine = 85; super(); _display = _arg2; _debug = _arg1; _hasWarning = false; _hasInfo = false; _hasDebug = false; _hasGRAlert = false; _warningQueue = []; _infoQueue = []; _GRAlertQueue = []; } private function onKey(_arg1:KeyboardEvent=null):void{ switch (_arg1.keyCode){ case _debug.showHideKey: _mainPanel.visible = !(_mainPanel.visible); break; case _debug.destroyKey: destroy(); break; }; } public function bringToFront(_arg1:DisplayObject):void{ _display.stage.setChildIndex(_arg1, (_display.stage.numChildren - 1)); } public function createFailureAlert(_arg1:String):void{ var _local2:AlertAction; var _local3:Alert; if (_debug.verbose){ _arg1 = _filterMaxChars(_arg1); _local2 = new AlertAction("Close", "close", "close"); } else { _local2 = new AlertAction("X", "close", "close"); }; _local3 = new FailureAlert(_debug, _arg1, [_local2]); addToPanel("analytics", _local3); if (_hasDebug){ if (_debug.verbose){ _arg1 = _arg1.split("\n").join(""); _arg1 = _filterMaxChars(_arg1, 66); }; visualDebug.writeBold(_arg1); }; } public function init():void{ var _local1:int; var _local2:uint; var _local3:uint; var _local4:Panel; _local1 = 10; _local2 = (_display.stage.stageWidth - (_local1 * 2)); _local3 = (_display.stage.stageHeight - (_local1 * 2)); _local4 = new Panel("analytics", _local2, _local3); _local4.alignement = Align.top; _local4.stickToEdge = false; _local4.title = ("Google Analytics v" + GATracker.version); _mainPanel = _local4; addToStage(_local4); bringToFront(_local4); if (_debug.minimizedOnStart){ _mainPanel.onToggle(); }; createVisualDebug(); _display.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey, false, 0, true); } public function addToPanel(_arg1:String, _arg2:DisplayObject):void{ var _local3:DisplayObject; var _local4:Panel; _local3 = _display.stage.getChildByName(_arg1); if (_local3){ _local4 = (_local3 as Panel); _local4.addData(_arg2); } else { trace((("panel \"" + _arg1) + "\" not found")); }; } private function _clearInfo(_arg1:Event):void{ _hasInfo = false; if (_infoQueue.length > 0){ createInfo(_infoQueue.shift()); }; } private function _filterMaxChars(_arg1:String, _arg2:int=0):String{ var _local3:String; var _local4:Array; var _local5:Array; var _local6:String; var _local7:int; _local3 = "\n"; _local4 = []; _local5 = _arg1.split(_local3); if (_arg2 == 0){ _arg2 = _maxCharPerLine; }; _local7 = 0; while (_local7 < _local5.length) { _local6 = _local5[_local7]; while (_local6.length > _arg2) { _local4.push(_local6.substr(0, _arg2)); _local6 = _local6.substring(_arg2); }; _local4.push(_local6); _local7++; }; return (_local4.join(_local3)); } public function createWarning(_arg1:String):void{ var _local2:Warning; if (((_hasWarning) || (!(isAvailable())))){ _warningQueue.push(_arg1); return; }; _arg1 = _filterMaxChars(_arg1); _hasWarning = true; _local2 = new Warning(_arg1, _debug.warningTimeout); addToPanel("analytics", _local2); _local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearWarning, false, 0, true); if (_hasDebug){ visualDebug.writeBold(_arg1); }; } private function _clearGRAlert(_arg1:Event):void{ _hasGRAlert = false; if (_GRAlertQueue.length > 0){ createGIFRequestAlert.apply(this, _GRAlertQueue.shift()); }; } public function createSuccessAlert(_arg1:String):void{ var _local2:AlertAction; var _local3:Alert; if (_debug.verbose){ _arg1 = _filterMaxChars(_arg1); _local2 = new AlertAction("Close", "close", "close"); } else { _local2 = new AlertAction("X", "close", "close"); }; _local3 = new SuccessAlert(_debug, _arg1, [_local2]); addToPanel("analytics", _local3); if (_hasDebug){ if (_debug.verbose){ _arg1 = _arg1.split("\n").join(""); _arg1 = _filterMaxChars(_arg1, 66); }; visualDebug.writeBold(_arg1); }; } public function isAvailable():Boolean{ return (!((_display.stage == null))); } public function createAlert(_arg1:String):void{ var _local2:Alert; _arg1 = _filterMaxChars(_arg1); _local2 = new Alert(_arg1, [new AlertAction("Close", "close", "close")]); addToPanel("analytics", _local2); if (_hasDebug){ visualDebug.writeBold(_arg1); }; } public function createInfo(_arg1:String):void{ var _local2:Info; if (((_hasInfo) || (!(isAvailable())))){ _infoQueue.push(_arg1); return; }; _arg1 = _filterMaxChars(_arg1); _hasInfo = true; _local2 = new Info(_arg1, _debug.infoTimeout); addToPanel("analytics", _local2); _local2.addEventListener(Event.REMOVED_FROM_STAGE, _clearInfo, false, 0, true); if (_hasDebug){ visualDebug.write(_arg1); }; } public function createGIFRequestAlert(_arg1:String, _arg2:URLRequest, _arg3:GIFRequest):void{ var f:Function; var gra:GIFRequestAlert; var message = _arg1; var request = _arg2; var ref = _arg3; if (_hasGRAlert){ _GRAlertQueue.push([message, request, ref]); return; }; _hasGRAlert = true; f = function ():void{ ref.sendRequest(request); }; message = _filterMaxChars(message); gra = new GIFRequestAlert(message, [new AlertAction("OK", "ok", f), new AlertAction("Cancel", "cancel", "close")]); addToPanel("analytics", gra); gra.addEventListener(Event.REMOVED_FROM_STAGE, _clearGRAlert, false, 0, true); if (_hasDebug){ if (_debug.verbose){ message = message.split("\n").join(""); message = _filterMaxChars(message, 66); }; visualDebug.write(message); }; } public function createVisualDebug():void{ if (!visualDebug){ visualDebug = new Debug(); visualDebug.alignement = Align.bottom; visualDebug.stickToEdge = true; addToPanel("analytics", visualDebug); _hasDebug = true; }; } public function addToStage(_arg1:DisplayObject):void{ _display.stage.addChild(_arg1); } private function _clearWarning(_arg1:Event):void{ _hasWarning = false; if (_warningQueue.length > 0){ createWarning(_warningQueue.shift()); }; } public function createPanel(_arg1:String, _arg2:uint, _arg3:uint):void{ var _local4:Panel; _local4 = new Panel(_arg1, _arg2, _arg3); _local4.alignement = Align.center; _local4.stickToEdge = false; addToStage(_local4); bringToFront(_local4); } public function destroy():void{ _mainPanel.close(); _debug.layout = null; } } }//package com.google.analytics.debug
Section 134
//Margin (com.google.analytics.debug.Margin) package com.google.analytics.debug { public class Margin { public var bottom:int; public var top:int; public var right:int; public var left:int; public function Margin(_arg1:int=0, _arg2:int=0, _arg3:int=0, _arg4:int=0){ this.top = _arg1; this.bottom = _arg2; this.left = _arg3; this.right = _arg4; } } }//package com.google.analytics.debug
Section 135
//Panel (com.google.analytics.debug.Panel) package com.google.analytics.debug { import flash.events.*; import flash.display.*; public class Panel extends UISprite { protected var baseAlpha:Number; private var _border:Shape; private var _name:String; private var _title:Label; private var _data:UISprite; private var _backgroundColor:uint; private var _colapsed:Boolean; private var _stickToEdge:Boolean; private var _background:Shape; private var _savedW:uint; private var _mask:Sprite; private var _savedH:uint; private var _borderColor:uint; public function Panel(_arg1:String, _arg2:uint, _arg3:uint, _arg4:uint=0, _arg5:uint=0, _arg6:Number=0.3, _arg7:Align=null, _arg8:Boolean=false){ _name = _arg1; this.name = _arg1; this.mouseEnabled = false; _colapsed = false; forcedWidth = _arg2; forcedHeight = _arg3; this.baseAlpha = _arg6; _background = new Shape(); _data = new UISprite(); _data.forcedWidth = _arg2; _data.forcedHeight = _arg3; _data.mouseEnabled = false; _title = new Label(_arg1, "uiLabel", 0xFFFFFF, Align.topLeft, _arg8); _title.buttonMode = true; _title.margin.top = 0.6; _title.margin.left = 0.6; _title.addEventListener(MouseEvent.CLICK, onToggle); _title.mouseChildren = false; _border = new Shape(); _mask = new Sprite(); _mask.useHandCursor = false; _mask.mouseEnabled = false; _mask.mouseChildren = false; if (_arg7 == null){ _arg7 = Align.none; }; this.alignement = _arg7; this.stickToEdge = _arg8; if (_arg4 == 0){ _arg4 = Style.backgroundColor; }; _backgroundColor = _arg4; if (_arg5 == 0){ _arg5 = Style.borderColor; }; _borderColor = _arg5; } public function set stickToEdge(_arg1:Boolean):void{ _stickToEdge = _arg1; _title.stickToEdge = _arg1; } public function onToggle(_arg1:MouseEvent=null):void{ if (_colapsed){ _data.visible = true; } else { _data.visible = false; }; _colapsed = !(_colapsed); _update(); resize(); } override protected function dispose():void{ _title.removeEventListener(MouseEvent.CLICK, onToggle); super.dispose(); } private function _draw():void{ var _local1:uint; var _local2:uint; var _local3:Graphics; var _local4:Graphics; var _local5:Graphics; var _local6:Graphics; if (((_savedW) && (_savedH))){ forcedWidth = _savedW; forcedHeight = _savedH; }; if (!_colapsed){ _local1 = forcedWidth; _local2 = forcedHeight; } else { _local1 = _title.width; _local2 = _title.height; _savedW = forcedWidth; _savedH = forcedHeight; forcedWidth = _local1; forcedHeight = _local2; }; _local3 = _background.graphics; _local3.clear(); _local3.beginFill(_backgroundColor); Background.drawRounded(this, _local3, _local1, _local2); _local3.endFill(); _local4 = _data.graphics; _local4.clear(); _local4.beginFill(_backgroundColor, 0); Background.drawRounded(this, _local4, _local1, _local2); _local4.endFill(); _local5 = _border.graphics; _local5.clear(); _local5.lineStyle(0.1, _borderColor); Background.drawRounded(this, _local5, _local1, _local2); _local5.endFill(); _local6 = _mask.graphics; _local6.clear(); _local6.beginFill(_backgroundColor); Background.drawRounded(this, _local6, (_local1 + 1), (_local2 + 1)); _local6.endFill(); } override protected function layout():void{ _update(); addChild(_background); addChild(_data); addChild(_title); addChild(_border); addChild(_mask); mask = _mask; } public function get title():String{ return (_title.text); } public function get stickToEdge():Boolean{ return (_stickToEdge); } public function set title(_arg1:String):void{ _title.text = _arg1; } private function _update():void{ _draw(); if (baseAlpha < 1){ _background.alpha = baseAlpha; _border.alpha = baseAlpha; }; } public function addData(_arg1:DisplayObject):void{ _data.addChild(_arg1); } public function close():void{ dispose(); if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 136
//Style (com.google.analytics.debug.Style) package com.google.analytics.debug { public const Style:_Style = new _Style(); }//package com.google.analytics.debug
Section 137
//SuccessAlert (com.google.analytics.debug.SuccessAlert) package com.google.analytics.debug { public class SuccessAlert extends Alert { public function SuccessAlert(_arg1:DebugConfiguration, _arg2:String, _arg3:Array){ var _local4:Align; var _local5:Boolean; var _local6:Boolean; _local4 = Align.bottomLeft; _local5 = true; _local6 = false; if (_arg1.verbose){ _arg2 = ((("<u><span class=\"uiAlertTitle\">Success</span>" + spaces(18)) + "</u>\n\n") + _arg2); _local4 = Align.center; _local5 = false; _local6 = true; }; super(_arg2, _arg3, "uiSuccess", Style.successColor, _local4, _local5, _local6); } } }//package com.google.analytics.debug
Section 138
//UISprite (com.google.analytics.debug.UISprite) package com.google.analytics.debug { import flash.events.*; import flash.display.*; public class UISprite extends Sprite { private var _forcedHeight:uint; protected var listenResize:Boolean; public var alignement:Align; private var _forcedWidth:uint; public var margin:Margin; protected var alignTarget:DisplayObject; public function UISprite(_arg1:DisplayObject=null){ listenResize = false; alignement = Align.none; this.alignTarget = _arg1; margin = new Margin(); addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage); addEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage); } protected function dispose():void{ var _local1:DisplayObject; var _local2:int; _local2 = 0; while (_local2 < numChildren) { _local1 = getChildAt(_local2); if (_local1){ removeChild(_local1); }; _local2++; }; } protected function layout():void{ } public function get forcedHeight():uint{ if (_forcedHeight){ return (_forcedHeight); }; return (height); } public function alignTo(_arg1:Align, _arg2:DisplayObject=null):void{ var _local3:uint; var _local4:uint; var _local5:uint; var _local6:uint; var _local7:UISprite; if (_arg2 == null){ if ((parent is Stage)){ _arg2 = this.stage; } else { _arg2 = parent; }; }; if (_arg2 == this.stage){ if (this.stage == null){ return; }; _local3 = this.stage.stageHeight; _local4 = this.stage.stageWidth; _local5 = 0; _local6 = 0; } else { _local7 = (_arg2 as UISprite); if (_local7.forcedHeight){ _local3 = _local7.forcedHeight; } else { _local3 = _local7.height; }; if (_local7.forcedWidth){ _local4 = _local7.forcedWidth; } else { _local4 = _local7.width; }; _local5 = 0; _local6 = 0; }; switch (_arg1){ case Align.top: x = ((_local4 / 2) - (forcedWidth / 2)); y = (_local6 + margin.top); break; case Align.bottom: x = ((_local4 / 2) - (forcedWidth / 2)); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; case Align.left: x = (_local5 + margin.left); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.right: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.center: x = ((_local4 / 2) - (forcedWidth / 2)); y = ((_local3 / 2) - (forcedHeight / 2)); break; case Align.topLeft: x = (_local5 + margin.left); y = (_local6 + margin.top); break; case Align.topRight: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = (_local6 + margin.top); break; case Align.bottomLeft: x = (_local5 + margin.left); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; case Align.bottomRight: x = (((_local5 + _local4) - forcedWidth) - margin.right); y = (((_local6 + _local3) - forcedHeight) - margin.bottom); break; }; if (((!(listenResize)) && (!((_arg1 == Align.none))))){ _arg2.addEventListener(Event.RESIZE, onResize, false, 0, true); listenResize = true; }; this.alignement = _arg1; this.alignTarget = _arg2; } public function get forcedWidth():uint{ if (_forcedWidth){ return (_forcedWidth); }; return (width); } protected function onResize(_arg1:Event):void{ resize(); } private function _onRemovedFromStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage); removeEventListener(Event.REMOVED_FROM_STAGE, _onRemovedFromStage); dispose(); } public function resize():void{ if (alignement != Align.none){ alignTo(alignement, alignTarget); }; } private function _onAddedToStage(_arg1:Event):void{ layout(); resize(); } public function set forcedHeight(_arg1:uint):void{ _forcedHeight = _arg1; } public function set forcedWidth(_arg1:uint):void{ _forcedWidth = _arg1; } } }//package com.google.analytics.debug
Section 139
//Warning (com.google.analytics.debug.Warning) package com.google.analytics.debug { import flash.events.*; import flash.utils.*; public class Warning extends Label { private var _timer:Timer; public function Warning(_arg1:String="", _arg2:uint=3000){ super(_arg1, "uiWarning", Style.warningColor, Align.top, false); margin.top = 32; if (_arg2 > 0){ _timer = new Timer(_arg2, 1); _timer.start(); _timer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete, false, 0, true); }; } public function onComplete(_arg1:TimerEvent):void{ close(); } override public function onLink(_arg1:TextEvent):void{ switch (_arg1.text){ case "hide": close(); break; }; } public function close():void{ if (parent != null){ parent.removeChild(this); }; } } }//package com.google.analytics.debug
Section 140
//VisualDebugMode (com.google.analytics.debug.VisualDebugMode) package com.google.analytics.debug { public class VisualDebugMode { private var _value:int; private var _name:String; public static const advanced:VisualDebugMode = new VisualDebugMode(1, "advanced"); ; public static const geek:VisualDebugMode = new VisualDebugMode(2, "geek"); ; public static const basic:VisualDebugMode = new VisualDebugMode(0, "basic"); ; public function VisualDebugMode(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.debug
Section 141
//AnalyticsEvent (com.google.analytics.events.AnalyticsEvent) package com.google.analytics.events { import flash.events.*; import com.google.analytics.*; public class AnalyticsEvent extends Event { public var tracker:AnalyticsTracker; public static const READY:String = "ready"; public function AnalyticsEvent(_arg1:String, _arg2:AnalyticsTracker, _arg3:Boolean=false, _arg4:Boolean=false){ super(_arg1, _arg3, _arg4); this.tracker = _arg2; } override public function clone():Event{ return (new AnalyticsEvent(type, tracker, bubbles, cancelable)); } } }//package com.google.analytics.events
Section 142
//AdSenseGlobals (com.google.analytics.external.AdSenseGlobals) package com.google.analytics.external { import com.google.analytics.debug.*; public class AdSenseGlobals extends JavascriptProxy { private var _gaGlobalVerified:Boolean;// = false public static var gaGlobal_js:XML = <script> <![CDATA[ function() { try { gaGlobal } catch(e) { gaGlobal = {} ; } } ]]> </script> ; public function AdSenseGlobals(_arg1:DebugConfiguration){ _gaGlobalVerified = false; super(_arg1); } public function set vid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.vid", _arg1); } public function get hid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.hid")); } public function get dh():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.dh")); } public function get gaGlobal():Object{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal")); } public function set hid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.hid", _arg1); } public function get sid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.sid")); } private function _verify():void{ if (!_gaGlobalVerified){ executeBlock(gaGlobal_js); _gaGlobalVerified = true; }; } public function get vid():String{ if (!isAvailable()){ return (null); }; _verify(); return (getProperty("gaGlobal.vid")); } public function set sid(_arg1:String):void{ if (!isAvailable()){ return; }; _verify(); setProperty("gaGlobal.sid", _arg1); } } }//package com.google.analytics.external
Section 143
//HTMLDOM (com.google.analytics.external.HTMLDOM) package com.google.analytics.external { import com.google.analytics.debug.*; public class HTMLDOM extends JavascriptProxy { private var _referrer:String; private var _protocol:String; private var _host:String; private var _location:String; private var _pathname:String; private var _title:String; private var _characterSet:String; private var _search:String; private var _language:String; private var _colorDepth:String; public static var cache_properties_js:XML = <script> <![CDATA[ function() { var obj = {}; obj.host = document.location.host; obj.language = navigator.language ? navigator.language : navigator.browserLanguage; obj.characterSet = document.characterSet ? document.characterSet : document.charset; obj.colorDepth = window.screen.colorDepth; obj.location = document.location.toString(); obj.pathname = document.location.pathname; obj.protocol = document.location.protocol; obj.search = document.location.search; obj.referrer = document.referrer; obj.title = document.title; return obj; } ]]> </script> ; public function HTMLDOM(_arg1:DebugConfiguration){ super(_arg1); } public function get search():String{ if (_search){ return (_search); }; if (!isAvailable()){ return (null); }; _search = getProperty("document.location.search"); return (_search); } public function get location():String{ if (_location){ return (_location); }; if (!isAvailable()){ return (null); }; _location = getPropertyString("document.location"); return (_location); } public function get pathname():String{ if (_pathname){ return (_pathname); }; if (!isAvailable()){ return (null); }; _pathname = getProperty("document.location.pathname"); return (_pathname); } public function get referrer():String{ if (_referrer){ return (_referrer); }; if (!isAvailable()){ return (null); }; _referrer = getProperty("document.referrer"); return (_referrer); } public function get protocol():String{ if (_protocol){ return (_protocol); }; if (!isAvailable()){ return (null); }; _protocol = getProperty("document.location.protocol"); return (_protocol); } public function cacheProperties():void{ var _local1:Object; if (!isAvailable()){ return; }; _local1 = call(cache_properties_js); if (_local1){ _host = _local1.host; _language = _local1.language; _characterSet = _local1.characterSet; _colorDepth = _local1.colorDepth; _location = _local1.location; _pathname = _local1.pathname; _protocol = _local1.protocol; _search = _local1.search; _referrer = _local1.referrer; _title = _local1.title; }; } public function get colorDepth():String{ if (_colorDepth){ return (_colorDepth); }; if (!isAvailable()){ return (null); }; _colorDepth = getProperty("window.screen.colorDepth"); return (_colorDepth); } public function get title():String{ if (_title){ return (_title); }; if (!isAvailable()){ return (null); }; _title = getProperty("document.title"); return (_title); } public function get host():String{ if (_host){ return (_host); }; if (!isAvailable()){ return (null); }; _host = getProperty("document.location.host"); return (_host); } public function get characterSet():String{ var _local1:String; if (_characterSet){ return (_characterSet); }; if (!isAvailable()){ return (null); }; _local1 = getProperty("document.characterSet"); if (_local1 == null){ _local1 = getProperty("document.charset"); }; _characterSet = _local1; return (_characterSet); } public function get language():String{ var _local1:String; if (_language){ return (_language); }; if (!isAvailable()){ return (null); }; _local1 = getProperty("navigator.language"); if (_local1 == null){ _local1 = getProperty("navigator.browserLanguage"); }; _language = _local1; return (_language); } } }//package com.google.analytics.external
Section 144
//JavascriptProxy (com.google.analytics.external.JavascriptProxy) package com.google.analytics.external { import com.google.analytics.debug.*; import flash.system.*; import flash.external.*; public class JavascriptProxy { private var _notAvailableWarning:Boolean;// = true private var _debug:DebugConfiguration; public static var setProperty_js:XML = <script> <![CDATA[ function( path , value ) { var paths; var prop; if( path.indexOf(".") > 0 ) { paths = path.split("."); prop = paths.pop() ; } else { paths = []; prop = path; } var target = window ; var len = paths.length ; for( var i = 0 ; i < len ; i++ ) { target = target[ paths[i] ] ; } target[ prop ] = value ; } ]]> </script> ; public static var hasProperty_js:XML = <script> <![CDATA[ function( path ) { var paths; if( path.indexOf(".") > 0 ) { paths = path.split("."); } else { paths = [path]; } var target = window ; var len = paths.length ; for( var i = 0 ; i < len ; i++ ) { target = target[ paths[i] ] ; } if( target ) { return true; } else { return false; } } ]]> </script> ; public static var setPropertyRef_js:XML = <script> <![CDATA[ function( path , target ) { var paths; var prop; if( path.indexOf(".") > 0 ) { paths = path.split("."); prop = paths.pop() ; } else { paths = []; prop = path; } alert( "paths:"+paths.length+", prop:"+prop ); var targets; var name; if( target.indexOf(".") > 0 ) { targets = target.split("."); name = targets.pop(); } else { targets = []; name = target; } alert( "targets:"+targets.length+", name:"+name ); var root = window; var len = paths.length; for( var i = 0 ; i < len ; i++ ) { root = root[ paths[i] ] ; } var ref = window; var depth = targets.length; for( var j = 0 ; j < depth ; j++ ) { ref = ref[ targets[j] ] ; } root[ prop ] = ref[name] ; } ]]> </script> ; public function JavascriptProxy(_arg1:DebugConfiguration){ _notAvailableWarning = true; super(); _debug = _arg1; } public function getProperty(_arg1:String){ return (call((_arg1 + ".valueOf"))); } public function hasProperty(_arg1:String):Boolean{ return (call(hasProperty_js, _arg1)); } public function setProperty(_arg1:String, _arg2):void{ call(setProperty_js, _arg1, _arg2); } public function executeBlock(_arg1:String):void{ var data = _arg1; if (isAvailable()){ try { ExternalInterface.call(data); } catch(e:SecurityError) { if (_debug.javascript){ _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML."); }; } catch(e:Error) { if (_debug.javascript){ _debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message)); }; }; }; } public function getPropertyString(_arg1:String):String{ return (call((_arg1 + ".toString"))); } public function setPropertyByReference(_arg1:String, _arg2:String):void{ call(setPropertyRef_js, _arg1, _arg2); } public function call(_arg1:String, ... _args){ var output:String; var functionName = _arg1; var args = _args; if (isAvailable()){ try { if (((_debug.javascript) && (_debug.verbose))){ output = ""; output = ("Flash->JS: " + functionName); output = (output + "( "); if (args.length > 0){ output = (output + args.join(",")); }; output = (output + " )"); _debug.info(output); }; args.unshift(functionName); return (ExternalInterface.call.apply(ExternalInterface, args)); } catch(e:SecurityError) { if (_debug.javascript){ _debug.warning("ExternalInterface is not allowed.\nEnsure that allowScriptAccess is set to \"always\" in the Flash embed HTML."); }; } catch(e:Error) { if (_debug.javascript){ _debug.warning(("ExternalInterface failed to make the call\nreason: " + e.message)); }; }; }; return (null); } public function isAvailable():Boolean{ var _local1:Boolean; _local1 = ExternalInterface.available; if (((_local1) && ((Capabilities.playerType == "External")))){ _local1 = false; }; if (((((!(_local1)) && (_debug.javascript))) && (_notAvailableWarning))){ _debug.warning("ExternalInterface is not available."); _notAvailableWarning = false; }; return (_local1); } } }//package com.google.analytics.external
Section 145
//Environment (com.google.analytics.utils.Environment) package com.google.analytics.utils { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.external.*; import flash.system.*; public class Environment { private var _dom:HTMLDOM; private var _appName:String; private var _debug:DebugConfiguration; private var _appVersion:Version; private var _url:String; private var _protocol:Protocols; private var _userAgent:UserAgent; public function Environment(_arg1:String="", _arg2:String="", _arg3:String="", _arg4:DebugConfiguration=null, _arg5:HTMLDOM=null){ var _local6:Version; super(); if (_arg2 == ""){ if (isAIR()){ _arg2 = "AIR"; } else { _arg2 = "Flash"; }; }; if (_arg3 == ""){ _local6 = flashVersion; } else { _local6 = Version.fromString(_arg3); }; _url = _arg1; _appName = _arg2; _appVersion = _local6; _debug = _arg4; _dom = _arg5; } public function isAIR():Boolean{ return ((((playerType == "Desktop")) && ((Security.sandboxType.toString() == "application")))); } public function get playerType():String{ return (Capabilities.playerType); } public function get locationSearch():String{ var _local1:String; _local1 = _dom.search; if (_local1){ return (_local1); }; return (""); } public function get protocol():Protocols{ if (!_protocol){ _findProtocol(); }; return (_protocol); } public function get flashVersion():Version{ var _local1:Version; _local1 = Version.fromString(Capabilities.version.split(" ")[1], ","); return (_local1); } public function get screenWidth():Number{ return (Capabilities.screenResolutionX); } public function get languageEncoding():String{ var _local1:String; if (System.useCodePage){ _local1 = _dom.characterSet; if (_local1){ return (_local1); }; return ("-"); }; return ("UTF-8"); } public function get appName():String{ return (_appName); } public function get screenColorDepth():String{ var _local1:String; var _local2:String; switch (Capabilities.screenColor){ case "bw": _local1 = "1"; break; case "gray": _local1 = "2"; break; case "color": default: _local1 = "24"; }; _local2 = _dom.colorDepth; if (_local2){ _local1 = _local2; }; return (_local1); } private function _findProtocol():void{ var _local1:Protocols; var _local2:String; var _local3:String; var _local4:String; var _local5:String; _local1 = Protocols.none; if (_url != ""){ _local4 = _url.toLowerCase(); _local5 = _local4.substr(0, 5); switch (_local5){ case "file:": _local1 = Protocols.file; break; case "http:": _local1 = Protocols.HTTP; break; case "https": if (_local4.charAt(5) == ":"){ _local1 = Protocols.HTTPS; }; break; default: _protocol = Protocols.none; }; }; _local2 = _dom.protocol; _local3 = (_local1.toString() + ":").toLowerCase(); if (((((_local2) && (!((_local2 == _local3))))) && (_debug))){ _debug.warning(((("Protocol mismatch: SWF=" + _local3) + ", DOM=") + _local2)); }; _protocol = _local1; } public function get locationSWFPath():String{ return (_url); } public function get platform():String{ var _local1:String; _local1 = Capabilities.manufacturer; return (_local1.split("Adobe ")[1]); } public function get operatingSystem():String{ return (Capabilities.os); } public function set appName(_arg1:String):void{ _appName = _arg1; userAgent.applicationProduct = _arg1; } public function get userAgent():UserAgent{ if (!_userAgent){ _userAgent = new UserAgent(this, appName, appVersion.toString(4)); }; return (_userAgent); } ga_internal function set url(_arg1:String):void{ _url = _arg1; } public function get referrer():String{ var _local1:String; _local1 = _dom.referrer; if (_local1){ return (_local1); }; if (protocol == Protocols.file){ return ("localhost"); }; return (""); } public function isInHTML():Boolean{ return ((Capabilities.playerType == "PlugIn")); } public function get language():String{ var _local1:String; var _local2:String; _local1 = _dom.language; _local2 = Capabilities.language; if (_local1){ if ((((_local1.length > _local2.length)) && ((_local1.substr(0, _local2.length) == _local2)))){ _local2 = _local1; }; }; return (_local2); } public function get domainName():String{ var _local1:String; var _local2:String; var _local3:int; if ((((protocol == Protocols.HTTP)) || ((protocol == Protocols.HTTPS)))){ _local1 = _url.toLowerCase(); if (protocol == Protocols.HTTP){ _local2 = _local1.split("http://").join(""); } else { if (protocol == Protocols.HTTPS){ _local2 = _local1.split("https://").join(""); }; }; _local3 = _local2.indexOf("/"); if (_local3 > -1){ _local2 = _local2.substring(0, _local3); }; return (_local2); }; if (protocol == Protocols.file){ return ("localhost"); }; return (""); } public function set userAgent(_arg1:UserAgent):void{ _userAgent = _arg1; } public function set appVersion(_arg1:Version):void{ _appVersion = _arg1; userAgent.applicationVersion = _arg1.toString(4); } public function get screenHeight():Number{ return (Capabilities.screenResolutionY); } public function get locationPath():String{ var _local1:String; _local1 = _dom.pathname; if (_local1){ return (_local1); }; return (""); } public function get documentTitle():String{ var _local1:String; _local1 = _dom.title; if (_local1){ return (_local1); }; return (""); } public function get appVersion():Version{ return (_appVersion); } } }//package com.google.analytics.utils
Section 146
//Protocols (com.google.analytics.utils.Protocols) package com.google.analytics.utils { public class Protocols { private var _value:int; private var _name:String; public static const none:Protocols = new Protocols(0, "none"); ; public static const HTTPS:Protocols = new Protocols(3, "HTTPS"); ; public static const file:Protocols = new Protocols(1, "file"); ; public static const HTTP:Protocols = new Protocols(2, "HTTP"); ; public function Protocols(_arg1:int=0, _arg2:String=""){ _value = _arg1; _name = _arg2; } public function valueOf():int{ return (_value); } public function toString():String{ return (_name); } } }//package com.google.analytics.utils
Section 147
//Timespan (com.google.analytics.utils.Timespan) package com.google.analytics.utils { public class Timespan { public static var sixmonths:Number = 15768000; public static var twoyears:Number = 63072000; public static var thirtyminutes:Number = 1800; } }//package com.google.analytics.utils
Section 148
//URL (com.google.analytics.utils.URL) package com.google.analytics.utils { public class URL { private var _url:String; public function URL(_arg1:String=""){ _url = _arg1.toLowerCase(); } public function get domain():String{ var _local1:Array; if (((!((hostName == ""))) && ((hostName.indexOf(".") > -1)))){ _local1 = hostName.split("."); switch (_local1.length){ case 2: return (hostName); case 3: if (_local1[1] == "co"){ return (hostName); }; _local1.shift(); return (_local1.join(".")); case 4: _local1.shift(); return (_local1.join(".")); }; }; return (""); } public function get path():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf(hostName) == 0){ _local1 = _local1.substr(hostName.length); }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[0]; }; if (_local1.charAt(0) != "/"){ _local1 = ("/" + _local1); }; return (_local1); } public function get search():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf(hostName) == 0){ _local1 = _local1.substr(hostName.length); }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[1]; } else { _local1 = ""; }; return (_local1); } public function get subDomain():String{ if (((!((domain == ""))) && (!((domain == hostName))))){ return (hostName.split(("." + domain)).join("")); }; return (""); } public function get protocol():Protocols{ var _local1:String; _local1 = _url.split("://")[0]; switch (_local1){ case "file": return (Protocols.file); case "http": return (Protocols.HTTP); case "https": return (Protocols.HTTPS); default: return (Protocols.none); }; } public function get hostName():String{ var _local1:String; _local1 = _url; if (_local1.indexOf("://") > -1){ _local1 = _local1.split("://")[1]; }; if (_local1.indexOf("/") > -1){ _local1 = _local1.split("/")[0]; }; if (_local1.indexOf("?") > -1){ _local1 = _local1.split("?")[0]; }; if ((((protocol == Protocols.file)) || ((protocol == Protocols.none)))){ return (""); }; return (_local1); } } }//package com.google.analytics.utils
Section 149
//UserAgent (com.google.analytics.utils.UserAgent) package com.google.analytics.utils { import com.google.analytics.core.*; import flash.system.*; public class UserAgent { private var _version:Version; private var _localInfo:Environment; private var _applicationProduct:String; public static var minimal:Boolean = false; public function UserAgent(_arg1:Environment, _arg2:String="", _arg3:String=""){ _localInfo = _arg1; applicationProduct = _arg2; _version = Version.fromString(_arg3); } public function get tamarinProductToken():String{ if (UserAgent.minimal){ return (""); }; if (System.vmVersion){ return (("Tamarin/" + Utils.trim(System.vmVersion, true))); }; return (""); } public function set applicationProduct(_arg1:String):void{ _applicationProduct = _arg1; } public function get applicationVersion():String{ return (_version.toString(2)); } public function get applicationProductToken():String{ var _local1:String; _local1 = applicationProduct; if (applicationVersion != ""){ _local1 = (_local1 + ("/" + applicationVersion)); }; return (_local1); } public function get vendorProductToken():String{ var _local1:String; _local1 = ""; if (_localInfo.isAIR()){ _local1 = (_local1 + "AIR"); } else { _local1 = (_local1 + "FlashPlayer"); }; _local1 = (_local1 + "/"); _local1 = (_local1 + _version.toString(3)); return (_local1); } public function toString():String{ var _local1:String; _local1 = ""; _local1 = (_local1 + applicationProductToken); if (applicationComment != ""){ _local1 = (_local1 + (" " + applicationComment)); }; if (tamarinProductToken != ""){ _local1 = (_local1 + (" " + tamarinProductToken)); }; if (vendorProductToken != ""){ _local1 = (_local1 + (" " + vendorProductToken)); }; return (_local1); } public function get applicationComment():String{ var _local1:Array; _local1 = []; _local1.push(_localInfo.platform); _local1.push(_localInfo.playerType); if (!UserAgent.minimal){ _local1.push(_localInfo.operatingSystem); _local1.push(_localInfo.language); }; if (Capabilities.isDebugger){ _local1.push("DEBUG"); }; if (_local1.length > 0){ return ((("(" + _local1.join("; ")) + ")")); }; return (""); } public function set applicationVersion(_arg1:String):void{ _version = Version.fromString(_arg1); } public function get applicationProduct():String{ return (_applicationProduct); } } }//package com.google.analytics.utils
Section 150
//Variables (com.google.analytics.utils.Variables) package com.google.analytics.utils { import flash.net.*; public dynamic class Variables { public var post:Array; public var URIencode:Boolean; public var pre:Array; public var sort:Boolean;// = true public function Variables(_arg1:String=null, _arg2:Array=null, _arg3:Array=null){ pre = []; post = []; sort = true; super(); if (_arg1){ decode(_arg1); }; if (_arg2){ this.pre = _arg2; }; if (_arg3){ this.post = _arg3; }; } private function _join(_arg1:Variables):void{ var _local2:String; if (!_arg1){ return; }; for (_local2 in _arg1) { this[_local2] = _arg1[_local2]; }; } public function join(... _args):void{ var _local2:int; var _local3:int; _local2 = _args.length; _local3 = 0; while (_local3 < _local2) { if (!(_args[_local3] is Variables)){ } else { _join(_args[_local3]); }; _local3++; }; } public function toString():String{ var _local1:Array; var _local2:String; var _local3:String; var _local4:String; var _local5:int; var _local6:int; var _local7:String; var _local8:String; _local1 = []; for (_local3 in this) { _local2 = this[_local3]; if (URIencode){ _local2 = encodeURI(_local2); }; _local1.push(((_local3 + "=") + _local2)); }; if (sort){ _local1.sort(); }; if (pre.length > 0){ pre.reverse(); _local5 = 0; while (_local5 < pre.length) { _local7 = pre[_local5]; _local6 = 0; while (_local6 < _local1.length) { _local4 = _local1[_local6]; if (_local4.indexOf(_local7) == 0){ _local1.unshift(_local1.splice(_local6, 1)[0]); }; _local6++; }; _local5++; }; pre.reverse(); }; if (post.length > 0){ _local5 = 0; while (_local5 < post.length) { _local8 = post[_local5]; _local6 = 0; while (_local6 < _local1.length) { _local4 = _local1[_local6]; if (_local4.indexOf(_local8) == 0){ _local1.push(_local1.splice(_local6, 1)[0]); }; _local6++; }; _local5++; }; }; return (_local1.join("&")); } public function decode(_arg1:String):void{ var _local2:Array; var _local3:String; var _local4:String; var _local5:String; var _local6:Array; var _local7:int; if (_arg1 == ""){ return; }; if (_arg1.indexOf("&") > -1){ _local2 = _arg1.split("&"); } else { _local2 = [_arg1]; }; _local7 = 0; while (_local7 < _local2.length) { _local3 = _local2[_local7]; if (_local3.indexOf("=") > -1){ _local6 = _local3.split("="); _local4 = _local6[0]; _local5 = decodeURI(_local6[1]); this[_local4] = _local5; }; _local7++; }; } public function toURLVariables():URLVariables{ var _local1:URLVariables; var _local2:String; _local1 = new URLVariables(); for (_local2 in this) { _local1[_local2] = this[_local2]; }; return (_local1); } } }//package com.google.analytics.utils
Section 151
//Version (com.google.analytics.utils.Version) package com.google.analytics.utils { public class Version { private var _maxBuild:uint;// = 0xFF private var _maxMinor:uint;// = 15 private var _maxMajor:uint;// = 15 private var _revision:uint; private var _separator:String;// = "." private var _maxRevision:uint;// = 0xFFFF private var _build:uint; private var _minor:uint; private var _major:uint; public function Version(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0, _arg4:uint=0){ var _local5:Version; _maxMajor = 15; _maxMinor = 15; _maxBuild = 0xFF; _maxRevision = 0xFFFF; _separator = "."; super(); if ((((((((_arg1 > _maxMajor)) && ((_arg2 == 0)))) && ((_arg3 == 0)))) && ((_arg4 == 0)))){ _local5 = Version.fromNumber(_arg1); _arg1 = _local5.major; _arg2 = _local5.minor; _arg3 = _local5.build; _arg4 = _local5.revision; }; this.major = _arg1; this.minor = _arg2; this.build = _arg3; this.revision = _arg4; } public function toString(_arg1:int=0):String{ var _local2:Array; if ((((_arg1 <= 0)) || ((_arg1 > 4)))){ _arg1 = getFields(); }; switch (_arg1){ case 1: _local2 = [major]; break; case 2: _local2 = [major, minor]; break; case 3: _local2 = [major, minor, build]; break; case 4: default: _local2 = [major, minor, build, revision]; }; return (_local2.join(_separator)); } public function get revision():uint{ return (_revision); } public function set build(_arg1:uint):void{ _build = Math.min(_arg1, _maxBuild); } public function set minor(_arg1:uint):void{ _minor = Math.min(_arg1, _maxMinor); } public function get build():uint{ return (_build); } public function set major(_arg1:uint):void{ _major = Math.min(_arg1, _maxMajor); } public function get minor():uint{ return (_minor); } public function valueOf():uint{ return (((((major << 28) | (minor << 24)) | (build << 16)) | revision)); } public function get major():uint{ return (_major); } public function set revision(_arg1:uint):void{ _revision = Math.min(_arg1, _maxRevision); } private function getFields():int{ var _local1:int; _local1 = 4; if (revision == 0){ _local1--; }; if ((((_local1 == 3)) && ((build == 0)))){ _local1--; }; if ((((_local1 == 2)) && ((minor == 0)))){ _local1--; }; return (_local1); } public function equals(_arg1):Boolean{ if (!(_arg1 is Version)){ return (false); }; if ((((((((_arg1.major == major)) && ((_arg1.minor == minor)))) && ((_arg1.build == build)))) && ((_arg1.revision == revision)))){ return (true); }; return (false); } public static function fromString(_arg1:String="", _arg2:String="."):Version{ var _local3:Version; var _local4:Array; _local3 = new (Version); if ((((_arg1 == "")) || ((_arg1 == null)))){ return (_local3); }; if (_arg1.indexOf(_arg2) > -1){ _local4 = _arg1.split(_arg2); _local3.major = parseInt(_local4[0]); _local3.minor = parseInt(_local4[1]); _local3.build = parseInt(_local4[2]); _local3.revision = parseInt(_local4[3]); } else { _local3.major = parseInt(_arg1); }; return (_local3); } public static function fromNumber(_arg1:Number=0):Version{ var _local2:Version; _local2 = new (Version); if (((((((((((isNaN(_arg1)) || ((_arg1 == 0)))) || ((_arg1 < 0)))) || ((_arg1 == Number.MAX_VALUE)))) || ((_arg1 == Number.POSITIVE_INFINITY)))) || ((_arg1 == Number.NEGATIVE_INFINITY)))){ return (_local2); }; _local2.major = (_arg1 >>> 28); _local2.minor = ((_arg1 & 251658240) >>> 24); _local2.build = ((_arg1 & 0xFF0000) >>> 16); _local2.revision = (_arg1 & 0xFFFF); return (_local2); } } }//package com.google.analytics.utils
Section 152
//Bridge (com.google.analytics.v4.Bridge) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.external.*; public class Bridge implements GoogleAnalyticsAPI { private var _debug:DebugConfiguration; private var _proxy:JavascriptProxy; private var _jsContainer:String;// = "_GATracker" private var _hasGATracker:Boolean;// = false private var _account:String; private static var _linkTrackingObject_js:XML = <script> <![CDATA[ function( container , target ) { var targets ; var name ; if( target.indexOf(".") > 0 ) { targets = target.split("."); name = targets.pop(); } else { targets = []; name = target; } var ref = window; var depth = targets.length; for( var j = 0 ; j < depth ; j++ ) { ref = ref[ targets[j] ] ; } window[container][target] = ref[name] ; } ]]> </script> ; private static var _createTrackingObject_js:XML = <script> <![CDATA[ function( acct ) { _GATracker[acct] = _gat._getTracker(acct); } ]]> </script> ; private static var _injectTrackingObject_js:XML = <script> <![CDATA[ function() { try { _GATracker } catch(e) { _GATracker = {}; } } ]]> </script> ; private static var _checkGAJS_js:XML = <script> <![CDATA[ function() { if( _gat && _gat._getTracker ) { return true; } return false; } ]]> </script> ; private static var _checkValidTrackingObject_js:XML = <script> <![CDATA[ function(acct) { if( _GATracker[acct] && (_GATracker[acct]._getAccount) ) { return true ; } else { return false; } } ]]> </script> ; public function Bridge(_arg1:String, _arg2:DebugConfiguration, _arg3:JavascriptProxy){ var _local4:String; var _local5:String; var _local6:String; _hasGATracker = false; _jsContainer = "_GATracker"; super(); _account = _arg1; _debug = _arg2; _proxy = _arg3; if (!_checkGAJS()){ _local4 = ""; _local4 = (_local4 + "ga.js not found, be sure to check if\n"); _local4 = (_local4 + "<script src=\"http://www.google-analytics.com/ga.js\"></script>\n"); _local4 = (_local4 + "is included in the HTML."); _debug.warning(_local4); throw (new Error(_local4)); }; if (!_hasGATracker){ if (((_debug.javascript) && (_debug.verbose))){ _local5 = ""; _local5 = (_local5 + "The Google Analytics tracking code was not found on the container page\n"); _local5 = (_local5 + "we create it"); _debug.info(_local5, VisualDebugMode.advanced); }; _injectTrackingObject(); }; if (Utils.validateAccount(_arg1)){ _createTrackingObject(_arg1); } else { if (_checkTrackingObject(_arg1)){ _linkTrackingObject(_arg1); } else { _local6 = ""; _local6 = (_local6 + (("JS Object \"" + _arg1) + "\" doesn't exist in DOM\n")); _local6 = (_local6 + "Bridge object not created."); _debug.warning(_local6); throw (new Error(_local6)); }; }; } public function link(_arg1:String, _arg2:Boolean=false):void{ _debug.info((((("link( " + _arg1) + ", ") + _arg2) + " )")); _call("_link", _arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ _debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )")); _call("_addOrganic", _arg1); } public function setAllowLinker(_arg1:Boolean):void{ _debug.info((("setAllowLinker( " + _arg1) + " )")); _call("_setAllowLinker", _arg1); } private function _linkTrackingObject(_arg1:String):void{ _proxy.call(_linkTrackingObject_js, _jsContainer, _arg1); } public function setClientInfo(_arg1:Boolean):void{ _debug.info((("setClientInfo( " + _arg1) + " )")); _call("_setClientInfo", _arg1); } public function trackTrans():void{ _debug.info("trackTrans()"); _call("_trackTrans"); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ var _local5:int; _local5 = 2; if (((_arg3) && (!((_arg3 == ""))))){ _local5 = 3; }; if ((((_local5 == 3)) && (!(isNaN(_arg4))))){ _local5 = 4; }; switch (_local5){ case 4: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2, _arg3, _arg4)); case 3: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2, _arg3)); case 2: default: _debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )")); return (_call("_trackEvent", _arg1, _arg2)); }; } public function trackPageview(_arg1:String=""):void{ _debug.info((("trackPageview( " + _arg1) + " )")); _call("_trackPageview", _arg1); } public function setCookieTimeout(_arg1:int):void{ _debug.info((("setCookieTimeout( " + _arg1) + " )")); _call("_setCookieTimeout", _arg1); } private function _checkValidTrackingObject(_arg1:String):Boolean{ return (_proxy.call(_checkValidTrackingObject_js, _arg1)); } private function _checkGAJS():Boolean{ return (_proxy.call(_checkGAJS_js)); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _debug.warning((((("linkByPost( " + _arg1) + ", ") + _arg2) + " ) not implemented")); } public function getClientInfo():Boolean{ _debug.info("getClientInfo()"); return (_call("_getClientInfo")); } private function _call(_arg1:String, ... _args){ _args.unshift(((((("window." + _jsContainer) + "[\"") + _account) + "\"].") + _arg1)); return (_proxy.call.apply(_proxy, _args)); } public function hasGAJS():Boolean{ return (_checkGAJS()); } private function _checkTrackingObject(_arg1:String):Boolean{ var _local2:Boolean; var _local3:Boolean; _local2 = _proxy.hasProperty(_arg1); _local3 = _proxy.hasProperty((_arg1 + "._getAccount")); return (((_local2) && (_local3))); } public function resetSession():void{ _debug.warning("resetSession() not implemented"); } public function getDetectTitle():Boolean{ _debug.info("getDetectTitle()"); return (_call("_getDetectTitle")); } public function setDetectFlash(_arg1:Boolean):void{ _debug.info((("setDetectFlash( " + _arg1) + " )")); _call("_setDetectFlash", _arg1); } public function setCampNameKey(_arg1:String):void{ _debug.info((("setCampNameKey( " + _arg1) + " )")); _call("_setCampNameKey", _arg1); } public function createEventTracker(_arg1:String):EventTracker{ _debug.info((("createEventTracker( " + _arg1) + " )")); return (new EventTracker(_arg1, this)); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _debug.info((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " )")); _call("_addItem", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } public function clearIgnoredOrganic():void{ _debug.info("clearIgnoredOrganic()"); _call("_clearIgnoreOrganic"); } public function setVar(_arg1:String):void{ _debug.info((("setVar( " + _arg1) + " )")); _call("_setVar", _arg1); } public function setDomainName(_arg1:String):void{ _debug.info((("setDomainName( " + _arg1) + " )")); _call("_setDomainName", _arg1); } public function hasTrackingAccount(_arg1:String):Boolean{ if (Utils.validateAccount(_arg1)){ return (_checkValidTrackingObject(_arg1)); }; return (_checkTrackingObject(_arg1)); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ _debug.info((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " )")); _call("_addTrans", _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); return (null); } public function setCampSourceKey(_arg1:String):void{ _debug.info((("setCampSourceKey( " + _arg1) + " )")); _call("_setCampSourceKey", _arg1); } public function setCampContentKey(_arg1:String):void{ _debug.info((("setCampContentKey( " + _arg1) + " )")); _call("_setCampContentKey", _arg1); } public function clearIgnoredRef():void{ _debug.info("clearIgnoredRef()"); _call("_clearIgnoreRef"); } public function setLocalServerMode():void{ _debug.info("setLocalServerMode()"); _call("_setLocalServerMode"); } public function getLocalGifPath():String{ _debug.info("getLocalGifPath()"); return (_call("_getLocalGifPath")); } public function setAllowAnchor(_arg1:Boolean):void{ _debug.info((("setAllowAnchor( " + _arg1) + " )")); _call("_setAllowAnchor", _arg1); } public function setLocalGifPath(_arg1:String):void{ _debug.info((("setLocalGifPath( " + _arg1) + " )")); _call("_setLocalGifPath", _arg1); } public function getVersion():String{ _debug.info("getVersion()"); return (_call("_getVersion")); } private function _injectTrackingObject():void{ _proxy.executeBlock(_injectTrackingObject_js); _hasGATracker = true; } public function setCookiePath(_arg1:String):void{ _debug.info((("setCookiePath( " + _arg1) + " )")); _call("_setCookiePath", _arg1); } public function setSampleRate(_arg1:Number):void{ _debug.info((("setSampleRate( " + _arg1) + " )")); _call("_setSampleRate", _arg1); } public function setAllowHash(_arg1:Boolean):void{ _debug.info((("setAllowHash( " + _arg1) + " )")); _call("_setAllowHash", _arg1); } public function addIgnoredOrganic(_arg1:String):void{ _debug.info((("addIgnoredOrganic( " + _arg1) + " )")); _call("_addIgnoredOrganic", _arg1); } public function setCampNOKey(_arg1:String):void{ _debug.info((("setCampNOKey( " + _arg1) + " )")); _call("_setCampNOKey", _arg1); } public function cookiePathCopy(_arg1:String):void{ _debug.info((("cookiePathCopy( " + _arg1) + " )")); _call("_cookiePathCopy", _arg1); } public function setLocalRemoteServerMode():void{ _debug.info("setLocalRemoteServerMode()"); _call("_setLocalRemoteServerMode"); } public function getServiceMode():ServerOperationMode{ _debug.info("getServiceMode()"); return (_call("_getServiceMode")); } public function setDetectTitle(_arg1:Boolean):void{ _debug.info((("setDetectTitle( " + _arg1) + " )")); _call("_setDetectTitle", _arg1); } public function setCampTermKey(_arg1:String):void{ _debug.info((("setCampTermKey( " + _arg1) + " )")); _call("_setCampTermKey", _arg1); } private function _createTrackingObject(_arg1:String):void{ _proxy.call(_createTrackingObject_js, _arg1); } public function getDetectFlash():Boolean{ _debug.info("getDetectFlash()"); return (_call("_getDetectFlash")); } public function setCampaignTrack(_arg1:Boolean):void{ _debug.info((("setCampaignTrack( " + _arg1) + " )")); _call("_setCampaignTrack", _arg1); } public function clearOrganic():void{ _debug.info("clearOrganic()"); _call("_clearOrganic"); } public function addIgnoredRef(_arg1:String):void{ _debug.info((("addIgnoredRef( " + _arg1) + " )")); _call("_addIgnoredRef", _arg1); } public function setCampMediumKey(_arg1:String):void{ _debug.info((("setCampMediumKey( " + _arg1) + " )")); _call("_setCampMediumKey", _arg1); } public function setSessionTimeout(_arg1:int):void{ _debug.info((("setSessionTimeout( " + _arg1) + " )")); _call("_setSessionTimeout", _arg1); } public function setRemoteServerMode():void{ _debug.info("setRemoteServerMode()"); _call("_setRemoteServerMode"); } public function getAccount():String{ _debug.info("getAccount()"); return (_call("_getAccount")); } } }//package com.google.analytics.v4
Section 153
//Configuration (com.google.analytics.v4.Configuration) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import com.google.analytics.campaign.*; public class Configuration { public var serverMode:ServerOperationMode; public var detectFlash:Boolean;// = true public var allowLocalTracking:Boolean;// = true public var secureRemoteGIFpath:String;// = "https://ssl.google-analytics.com/__utm.gif" public var hasSiteOverlay:Boolean;// = false private var _version:String;// = "4.3as" public var allowDomainHash:Boolean;// = true public var detectClientInfo:Boolean;// = true public var idleLoop:Number;// = 30 public var isTrackOutboundSubdomains:Boolean;// = false public var cookiePath:String;// = "/" public var transactionFieldDelim:String;// = "|" private var _organic:Organic; private var _cookieName:String;// = "analytics" public var campaignKey:CampaignKey; public var google:String;// = "google" public var googleCsePath:String;// = "cse" public var bucketCapacity:Number;// = 10 private var _sampleRate:Number;// = 1 public var remoteGIFpath:String;// = "http://www.google-analytics.com/__utm.gif" public var googleSearchParam:String;// = "q" public var allowLinker:Boolean;// = false public var maxOutboundLinkExamined:Number;// = 1000 private var _debug:DebugConfiguration; private var _trackingLimitPerSession:int;// = 500 private var _domain:Domain; public var allowAnchor:Boolean;// = false public var tokenCliff:int;// = 10 public var sessionTimeout:Number; public var idleTimeout:Number;// = 60 public var campaignTracking:Boolean;// = true public var domainName:String;// = "" public var detectTitle:Boolean;// = true public var tokenRate:Number;// = 0.2 public var conversionTimeout:Number; public var localGIFpath:String;// = "/__utm.gif" public function Configuration(_arg1:DebugConfiguration=null){ _version = "4.3as"; _sampleRate = 1; _trackingLimitPerSession = 500; _organic = new Organic(); googleCsePath = "cse"; googleSearchParam = "q"; google = "google"; _cookieName = "analytics"; allowDomainHash = true; allowAnchor = false; allowLinker = false; hasSiteOverlay = false; tokenRate = 0.2; conversionTimeout = Timespan.sixmonths; sessionTimeout = Timespan.thirtyminutes; idleLoop = 30; idleTimeout = 60; maxOutboundLinkExamined = 1000; tokenCliff = 10; bucketCapacity = 10; detectClientInfo = true; detectFlash = true; detectTitle = true; campaignKey = new CampaignKey(); campaignTracking = true; isTrackOutboundSubdomains = false; serverMode = ServerOperationMode.remote; localGIFpath = "/__utm.gif"; remoteGIFpath = "http://www.google-analytics.com/__utm.gif"; secureRemoteGIFpath = "https://ssl.google-analytics.com/__utm.gif"; cookiePath = "/"; transactionFieldDelim = "|"; domainName = ""; allowLocalTracking = true; super(); _debug = _arg1; _domain = new Domain(DomainNameMode.auto, "", _debug); serverMode = ServerOperationMode.remote; _initOrganicSources(); } public function get organic():Organic{ return (_organic); } public function get trackingLimitPerSession():int{ return (_trackingLimitPerSession); } private function _initOrganicSources():void{ addOrganicSource(google, googleSearchParam); addOrganicSource("yahoo", "p"); addOrganicSource("msn", "q"); addOrganicSource("aol", "query"); addOrganicSource("aol", "encquery"); addOrganicSource("lycos", "query"); addOrganicSource("ask", "q"); addOrganicSource("altavista", "q"); addOrganicSource("netscape", "query"); addOrganicSource("cnn", "query"); addOrganicSource("looksmart", "qt"); addOrganicSource("about", "terms"); addOrganicSource("mamma", "query"); addOrganicSource("alltheweb", "q"); addOrganicSource("gigablast", "q"); addOrganicSource("voila", "rdata"); addOrganicSource("virgilio", "qs"); addOrganicSource("live", "q"); addOrganicSource("baidu", "wd"); addOrganicSource("alice", "qs"); addOrganicSource("yandex", "text"); addOrganicSource("najdi", "q"); addOrganicSource("aol", "q"); addOrganicSource("club-internet", "q"); addOrganicSource("mama", "query"); addOrganicSource("seznam", "q"); addOrganicSource("search", "q"); addOrganicSource("wp", "szukaj"); addOrganicSource("onet", "qt"); addOrganicSource("netsprint", "q"); addOrganicSource("google.interia", "q"); addOrganicSource("szukacz", "q"); addOrganicSource("yam", "k"); addOrganicSource("pchome", "q"); addOrganicSource("kvasir", "searchExpr"); addOrganicSource("sesam", "q"); addOrganicSource("ozu", "q"); addOrganicSource("terra", "query"); addOrganicSource("nostrum", "query"); addOrganicSource("mynet", "q"); addOrganicSource("ekolay", "q"); addOrganicSource("search.ilse", "search_for"); } public function get sampleRate():Number{ return (_sampleRate); } public function get cookieName():String{ return (_cookieName); } public function addOrganicSource(_arg1:String, _arg2:String):void{ var engine = _arg1; var keyword = _arg2; try { _organic.addSource(engine, keyword); } catch(e:Error) { if (((_debug) && (_debug.active))){ _debug.warning(e.message); }; }; } public function get domain():Domain{ return (_domain); } public function set sampleRate(_arg1:Number):void{ if (_arg1 <= 0){ _arg1 = 0.1; }; if (_arg1 > 1){ _arg1 = 1; }; _arg1 = Number(_arg1.toFixed(2)); _sampleRate = _arg1; } public function get version():String{ return (_version); } } }//package com.google.analytics.v4
Section 154
//GoogleAnalyticsAPI (com.google.analytics.v4.GoogleAnalyticsAPI) package com.google.analytics.v4 { import com.google.analytics.core.*; public interface GoogleAnalyticsAPI { function getServiceMode():ServerOperationMode; function setLocalRemoteServerMode():void; function setCampSourceKey(_arg1:String):void; function setCampContentKey(_arg1:String):void; function addOrganic(_arg1:String, _arg2:String):void; function setDetectFlash(_arg1:Boolean):void; function resetSession():void; function setCampTermKey(_arg1:String):void; function setCampNameKey(_arg1:String):void; function addIgnoredOrganic(_arg1:String):void; function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void; function setAllowLinker(_arg1:Boolean):void; function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object; function getDetectFlash():Boolean; function setCampaignTrack(_arg1:Boolean):void; function createEventTracker(_arg1:String):EventTracker; function setCookieTimeout(_arg1:int):void; function setAllowAnchor(_arg1:Boolean):void; function trackTrans():void; function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean; function trackPageview(_arg1:String=""):void; function setLocalGifPath(_arg1:String):void; function getVersion():String; function getLocalGifPath():String; function setVar(_arg1:String):void; function clearIgnoredOrganic():void; function setCampMediumKey(_arg1:String):void; function addIgnoredRef(_arg1:String):void; function setClientInfo(_arg1:Boolean):void; function setCookiePath(_arg1:String):void; function setSampleRate(_arg1:Number):void; function setSessionTimeout(_arg1:int):void; function setRemoteServerMode():void; function clearIgnoredRef():void; function linkByPost(_arg1:Object, _arg2:Boolean=false):void; function setLocalServerMode():void; function setDetectTitle(_arg1:Boolean):void; function setAllowHash(_arg1:Boolean):void; function clearOrganic():void; function getAccount():String; function setDomainName(_arg1:String):void; function link(_arg1:String, _arg2:Boolean=false):void; function setCampNOKey(_arg1:String):void; function getClientInfo():Boolean; function cookiePathCopy(_arg1:String):void; function getDetectTitle():Boolean; } }//package com.google.analytics.v4
Section 155
//Tracker (com.google.analytics.v4.Tracker) package com.google.analytics.v4 { import com.google.analytics.core.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import com.google.analytics.data.*; import com.google.analytics.external.*; import com.google.analytics.campaign.*; public class Tracker implements GoogleAnalyticsAPI { private const EVENT_TRACKER_LABEL_KEY_NUM:int = 3; private const EVENT_TRACKER_VALUE_VALUE_NUM:int = 1; private const EVENT_TRACKER_PROJECT_ID:int = 5; private const EVENT_TRACKER_OBJECT_NAME_KEY_NUM:int = 1; private const EVENT_TRACKER_TYPE_KEY_NUM:int = 2; private var _adSense:AdSenseGlobals; private var _eventTracker:X10; private var _noSessionInformation:Boolean;// = false private var _browserInfo:BrowserInfo; private var _debug:DebugConfiguration; private var _isNewVisitor:Boolean;// = false private var _buffer:Buffer; private var _config:Configuration; private var _x10Module:X10; private var _campaign:CampaignManager; private var _formatedReferrer:String; private var _timeStamp:Number; private var _info:Environment; private var _domainHash:Number; private var _campaignInfo:CampaignInfo; private var _gifRequest:GIFRequest; private var _hasInitData:Boolean;// = false private var _account:String; public function Tracker(_arg1:String, _arg2:Configuration, _arg3:DebugConfiguration, _arg4:Environment, _arg5:Buffer, _arg6:GIFRequest, _arg7:AdSenseGlobals){ var _local8:String; _hasInitData = false; _isNewVisitor = false; _noSessionInformation = false; super(); _account = _arg1; _config = _arg2; _debug = _arg3; _info = _arg4; _buffer = _arg5; _gifRequest = _arg6; _adSense = _arg7; if (!Utils.validateAccount(_arg1)){ _local8 = (("Account \"" + _arg1) + "\" is not valid."); _debug.warning(_local8); throw (new Error(_local8)); }; _initData(); } private function _doTracking():Boolean{ if (((((!((_info.protocol == Protocols.file))) && (!((_info.protocol == Protocols.none))))) && (_isNotGoogleSearch()))){ return (true); }; if (_config.allowLocalTracking){ return (true); }; return (false); } public function addOrganic(_arg1:String, _arg2:String):void{ _debug.info((("addOrganic( " + [_arg1, _arg2].join(", ")) + " )")); _config.organic.addSource(_arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ _config.allowLinker = _arg1; _debug.info((("setAllowLinker( " + _config.allowLinker) + " )")); } public function trackPageview(_arg1:String=""):void{ _debug.info((("trackPageview( " + _arg1) + " )")); if (_doTracking()){ _initData(); _trackMetrics(_arg1); _noSessionInformation = false; } else { _debug.warning((("trackPageview( " + _arg1) + " ) failed")); }; } public function setCookieTimeout(_arg1:int):void{ _config.conversionTimeout = _arg1; _debug.info((("setCookieTimeout( " + _config.conversionTimeout) + " )")); } public function trackTrans():void{ _debug.warning("trackTrans() not implemented"); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ var _local5:Boolean; var _local6:int; _local5 = true; _local6 = 2; if (((!((_arg1 == ""))) && (!((_arg2 == ""))))){ _eventTracker.clearKey(EVENT_TRACKER_PROJECT_ID); _eventTracker.clearValue(EVENT_TRACKER_PROJECT_ID); _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_OBJECT_NAME_KEY_NUM, _arg1); _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_TYPE_KEY_NUM, _arg2); if (((_arg3) && (!((_arg3 == ""))))){ _local5 = _eventTracker.setKey(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_LABEL_KEY_NUM, _arg3); _local6 = 3; if (!isNaN(_arg4)){ _local5 = _eventTracker.setValue(EVENT_TRACKER_PROJECT_ID, EVENT_TRACKER_VALUE_VALUE_NUM, _arg4); _local6 = 4; }; }; if (_local5){ _debug.info(((("valid event tracking call\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek); _sendXEvent(_eventTracker); }; } else { _debug.warning(((("event tracking call is not valid, failed!\ncategory: " + _arg1) + "\naction: ") + _arg2), VisualDebugMode.geek); _local5 = false; }; switch (_local6){ case 4: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3, _arg4].join(", ")) + " )")); break; case 3: _debug.info((("trackEvent( " + [_arg1, _arg2, _arg3].join(", ")) + " )")); break; case 2: default: _debug.info((("trackEvent( " + [_arg1, _arg2].join(", ")) + " )")); }; return (_local5); } public function setClientInfo(_arg1:Boolean):void{ _config.detectClientInfo = _arg1; _debug.info((("setClientInfo( " + _config.detectClientInfo) + " )")); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _debug.warning((("linkByPost( " + [_arg1, _arg2].join(", ")) + " ) not implemented")); } private function _initData():void{ var _local1:String; var _local2:String; if (!_hasInitData){ _updateDomainName(); _domainHash = _getDomainHash(); _timeStamp = Math.round((new Date().getTime() / 1000)); if (_debug.verbose){ _local1 = ""; _local1 = (_local1 + "_initData 0"); _local1 = (_local1 + ("\ndomain name: " + _config.domainName)); _local1 = (_local1 + ("\ndomain hash: " + _domainHash)); _local1 = (_local1 + (((("\ntimestamp: " + _timeStamp) + " (") + new Date((_timeStamp * 1000))) + ")")); _debug.info(_local1, VisualDebugMode.geek); }; }; if (_doTracking()){ _handleCookie(); }; if (!_hasInitData){ if (_doTracking()){ _formatedReferrer = _formatReferrer(); _browserInfo = new BrowserInfo(_config, _info); _debug.info(("browserInfo: " + _browserInfo.toURLString()), VisualDebugMode.advanced); if (_config.campaignTracking){ _campaign = new CampaignManager(_config, _debug, _buffer, _domainHash, _formatedReferrer, _timeStamp); _campaignInfo = _campaign.getCampaignInformation(_info.locationSearch, _noSessionInformation); _debug.info(("campaignInfo: " + _campaignInfo.toURLString()), VisualDebugMode.advanced); }; }; _x10Module = new X10(); _eventTracker = new X10(); _hasInitData = true; }; if (_config.hasSiteOverlay){ _debug.warning("Site Overlay is not supported"); }; if (_debug.verbose){ _local2 = ""; _local2 = (_local2 + "_initData (misc)"); _local2 = (_local2 + ("\nflash version: " + _info.flashVersion.toString(4))); _local2 = (_local2 + ("\nprotocol: " + _info.protocol)); _local2 = (_local2 + (("\ndefault domain name (auto): \"" + _info.domainName) + "\"")); _local2 = (_local2 + ("\nlanguage: " + _info.language)); _local2 = (_local2 + ("\ndomain hash: " + _getDomainHash())); _local2 = (_local2 + ("\nuser-agent: " + _info.userAgent)); _debug.info(_local2, VisualDebugMode.geek); }; } public function getDetectTitle():Boolean{ _debug.info("getDetectTitle()"); return (_config.detectTitle); } public function resetSession():void{ _debug.info("resetSession()"); _buffer.resetCurrentSession(); } private function _sendXEvent(_arg1:X10=null):void{ var _local2:Variables; var _local3:EventInfo; var _local4:Variables; var _local5:Variables; _initData(); if (_takeSample()){ _local2 = new Variables(); _local2.URIencode = true; _local3 = new EventInfo(true, _x10Module, _arg1); _local4 = _local3.toVariables(); _local5 = _renderMetricsSearchVariables(); _local2.join(_local4, _local5); _gifRequest.send(_account, _local2, false, true); }; } public function setDetectFlash(_arg1:Boolean):void{ _config.detectFlash = _arg1; _debug.info((("setDetectFlash( " + _config.detectFlash) + " )")); } public function setCampNameKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCCN = _arg1; _local2 = (("setCampNameKey( " + _config.campaignKey.UCCN) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCCN]")); } else { _debug.info(_local2); }; } private function _formatReferrer():String{ var _local1:String; var _local2:String; var _local3:URL; var _local4:URL; _local1 = _info.referrer; if ((((_local1 == "")) || ((_local1 == "localhost")))){ _local1 = "-"; } else { _local2 = _info.domainName; _local3 = new URL(_local1); _local4 = new URL(("http://" + _local2)); if (_local3.hostName == _local2){ return ("-"); }; if (_local4.domain == _local3.domain){ if (_local4.subDomain != _local3.subDomain){ _local1 = "0"; }; }; if ((((_local1.charAt(0) == "[")) && (_local1.charAt((_local1.length - 1))))){ _local1 = "-"; }; }; _debug.info(("formated referrer: " + _local1), VisualDebugMode.advanced); return (_local1); } private function _visitCode():Number{ if (_debug.verbose){ _debug.info(("visitCode: " + _buffer.utma.sessionId), VisualDebugMode.geek); }; return (_buffer.utma.sessionId); } public function createEventTracker(_arg1:String):EventTracker{ _debug.info((("createEventTracker( " + _arg1) + " )")); return (new EventTracker(_arg1, this)); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _debug.warning((("addItem( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6].join(", ")) + " ) not implemented")); } public function clearIgnoredOrganic():void{ _debug.info("clearIgnoredOrganic()"); _config.organic.clearIgnoredKeywords(); } public function setVar(_arg1:String):void{ var _local2:Variables; if (((!((_arg1 == ""))) && (_isNotGoogleSearch()))){ _initData(); _buffer.utmv.domainHash = _domainHash; _buffer.utmv.value = _arg1; if (_debug.verbose){ _debug.info(_buffer.utmv.toString(), VisualDebugMode.geek); }; _debug.info((("setVar( " + _arg1) + " )")); if (_takeSample()){ _local2 = new Variables(); _local2.utmt = "var"; _gifRequest.send(_account, _local2); }; } else { _debug.warning((("setVar \"" + _arg1) + "\" is ignored")); }; } public function setDomainName(_arg1:String):void{ if (_arg1 == "auto"){ _config.domain.mode = DomainNameMode.auto; } else { if (_arg1 == "none"){ _config.domain.mode = DomainNameMode.none; } else { _config.domain.mode = DomainNameMode.custom; _config.domain.name = _arg1; }; }; _updateDomainName(); _debug.info((("setDomainName( " + _config.domainName) + " )")); } public function getClientInfo():Boolean{ _debug.info("getClientInfo()"); return (_config.detectClientInfo); } private function _updateDomainName():void{ var _local1:String; if (_config.domain.mode == DomainNameMode.auto){ _local1 = _info.domainName; if (_local1.substring(0, 4) == "www."){ _local1 = _local1.substring(4); }; _config.domain.name = _local1; }; _config.domainName = _config.domain.name.toLowerCase(); _debug.info(("domain name: " + _config.domainName), VisualDebugMode.advanced); } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ _debug.warning((("addTrans( " + [_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8].join(", ")) + " ) not implemented")); return (null); } public function setCampContentKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCCT = _arg1; _local2 = (("setCampContentKey( " + _config.campaignKey.UCCT) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCCT]")); } else { _debug.info(_local2); }; } private function _handleCookie():void{ var _local1:String; var _local2:String; var _local3:Array; var _local4:String; if (_config.allowLinker){ }; if (((_buffer.hasUTMA()) && (!(_buffer.utma.isEmpty())))){ if (((!(_buffer.hasUTMB())) || (!(_buffer.hasUTMC())))){ _buffer.updateUTMA(_timeStamp); _noSessionInformation = true; }; if (_debug.verbose){ _debug.info(("from cookie " + _buffer.utma.toString()), VisualDebugMode.geek); }; } else { _debug.info("create a new utma", VisualDebugMode.advanced); _buffer.utma.domainHash = _domainHash; _buffer.utma.sessionId = _getUniqueSessionId(); _buffer.utma.firstTime = _timeStamp; _buffer.utma.lastTime = _timeStamp; _buffer.utma.currentTime = _timeStamp; _buffer.utma.sessionCount = 1; if (_debug.verbose){ _debug.info(_buffer.utma.toString(), VisualDebugMode.geek); }; _noSessionInformation = true; _isNewVisitor = true; }; if (((_adSense.gaGlobal) && ((_adSense.dh == String(_domainHash))))){ if (_adSense.sid){ _buffer.utma.currentTime = Number(_adSense.sid); if (_debug.verbose){ _local1 = ""; _local1 = (_local1 + "AdSense sid found\n"); _local1 = (_local1 + (((("Override currentTime(" + _buffer.utma.currentTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")")); _debug.info(_local1, VisualDebugMode.geek); }; }; if (_isNewVisitor){ if (_adSense.sid){ _buffer.utma.lastTime = Number(_adSense.sid); if (_debug.verbose){ _local2 = ""; _local2 = (_local2 + "AdSense sid found (new visitor)\n"); _local2 = (_local2 + (((("Override lastTime(" + _buffer.utma.lastTime) + ") from AdSense sid(") + Number(_adSense.sid)) + ")")); _debug.info(_local2, VisualDebugMode.geek); }; }; if (_adSense.vid){ _local3 = _adSense.vid.split("."); _buffer.utma.sessionId = Number(_local3[0]); _buffer.utma.firstTime = Number(_local3[1]); if (_debug.verbose){ _local4 = ""; _local4 = (_local4 + "AdSense vid found (new visitor)\n"); _local4 = (_local4 + (((("Override sessionId(" + _buffer.utma.sessionId) + ") from AdSense vid(") + Number(_local3[0])) + ")\n")); _local4 = (_local4 + (((("Override firstTime(" + _buffer.utma.firstTime) + ") from AdSense vid(") + Number(_local3[1])) + ")")); _debug.info(_local4, VisualDebugMode.geek); }; }; if (_debug.verbose){ _debug.info(("AdSense modified : " + _buffer.utma.toString()), VisualDebugMode.geek); }; }; }; _buffer.utmb.domainHash = _domainHash; if (isNaN(_buffer.utmb.trackCount)){ _buffer.utmb.trackCount = 0; }; if (isNaN(_buffer.utmb.token)){ _buffer.utmb.token = _config.tokenCliff; }; if (isNaN(_buffer.utmb.lastTime)){ _buffer.utmb.lastTime = _buffer.utma.currentTime; }; _buffer.utmc.domainHash = _domainHash; if (_debug.verbose){ _debug.info(_buffer.utmb.toString(), VisualDebugMode.advanced); _debug.info(_buffer.utmc.toString(), VisualDebugMode.advanced); }; } public function setLocalServerMode():void{ _config.serverMode = ServerOperationMode.local; _debug.info("setLocalServerMode()"); } private function _renderMetricsSearchVariables(_arg1:String=""):Variables{ var _local2:Variables; var _local3:DocumentInfo; var _local4:Variables; var _local5:Variables; _local2 = new Variables(); _local2.URIencode = true; _local3 = new DocumentInfo(_config, _info, _formatedReferrer, _arg1, _adSense); _debug.info(("docInfo: " + _local3.toURLString()), VisualDebugMode.geek); if (_config.campaignTracking){ _local4 = _campaignInfo.toVariables(); }; _local5 = _browserInfo.toVariables(); _local2.join(_local3.toVariables(), _local5, _local4); return (_local2); } public function clearIgnoredRef():void{ _debug.info("clearIgnoredRef()"); _config.organic.clearIgnoredReferrals(); } public function setCampSourceKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCSR = _arg1; _local2 = (("setCampSourceKey( " + _config.campaignKey.UCSR) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCSR]")); } else { _debug.info(_local2); }; } public function getLocalGifPath():String{ _debug.info("getLocalGifPath()"); return (_config.localGIFpath); } public function setLocalGifPath(_arg1:String):void{ _config.localGIFpath = _arg1; _debug.info((("setLocalGifPath( " + _config.localGIFpath) + " )")); } public function getVersion():String{ _debug.info("getVersion()"); return (_config.version); } public function setAllowAnchor(_arg1:Boolean):void{ _config.allowAnchor = _arg1; _debug.info((("setAllowAnchor( " + _config.allowAnchor) + " )")); } private function _isNotGoogleSearch():Boolean{ var _local1:String; var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; _local1 = _config.domainName; _local2 = (_local1.indexOf("www.google.") < 0); _local3 = (_local1.indexOf(".google.") < 0); _local4 = (_local1.indexOf("google.") < 0); _local5 = (_local1.indexOf("google.org") > -1); return (((((((((_local2) || (_local3))) || (_local4))) || (!((_config.cookiePath == "/"))))) || (_local5))); } public function setSampleRate(_arg1:Number):void{ if (_arg1 < 0){ _debug.warning("sample rate can not be negative, ignoring value."); } else { _config.sampleRate = _arg1; }; _debug.info((("setSampleRate( " + _config.sampleRate) + " )")); } private function _takeSample():Boolean{ if (_debug.verbose){ _debug.info((((("takeSample: (" + (_visitCode() % 10000)) + ") < (") + (_config.sampleRate * 10000)) + ")"), VisualDebugMode.geek); }; return (((_visitCode() % 10000) < (_config.sampleRate * 10000))); } public function setCookiePath(_arg1:String):void{ _config.cookiePath = _arg1; _debug.info((("setCookiePath( " + _config.cookiePath) + " )")); } public function setAllowHash(_arg1:Boolean):void{ _config.allowDomainHash = _arg1; _debug.info((("setAllowHash( " + _config.allowDomainHash) + " )")); } private function _generateUserDataHash():Number{ var _local1:String; _local1 = ""; _local1 = (_local1 + _info.appName); _local1 = (_local1 + _info.appVersion); _local1 = (_local1 + _info.language); _local1 = (_local1 + _info.platform); _local1 = (_local1 + _info.userAgent.toString()); _local1 = (_local1 + (((_info.screenWidth + "x") + _info.screenHeight) + _info.screenColorDepth)); _local1 = (_local1 + _info.referrer); return (Utils.generateHash(_local1)); } public function addIgnoredOrganic(_arg1:String):void{ _debug.info((("addIgnoredOrganic( " + _arg1) + " )")); _config.organic.addIgnoredKeyword(_arg1); } public function setLocalRemoteServerMode():void{ _config.serverMode = ServerOperationMode.both; _debug.info("setLocalRemoteServerMode()"); } public function cookiePathCopy(_arg1:String):void{ _debug.warning((("cookiePathCopy( " + _arg1) + " ) not implemented")); } public function setDetectTitle(_arg1:Boolean):void{ _config.detectTitle = _arg1; _debug.info((("setDetectTitle( " + _config.detectTitle) + " )")); } public function setCampTermKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCTR = _arg1; _local2 = (("setCampTermKey( " + _config.campaignKey.UCTR) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCTR]")); } else { _debug.info(_local2); }; } public function getServiceMode():ServerOperationMode{ _debug.info("getServiceMode()"); return (_config.serverMode); } public function setCampNOKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCNO = _arg1; _local2 = (("setCampNOKey( " + _config.campaignKey.UCNO) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCNO]")); } else { _debug.info(_local2); }; } private function _trackMetrics(_arg1:String=""):void{ var _local2:Variables; var _local3:Variables; var _local4:Variables; var _local5:EventInfo; if (_takeSample()){ _local2 = new Variables(); _local2.URIencode = true; if (((_x10Module) && (_x10Module.hasData()))){ _local5 = new EventInfo(false, _x10Module); _local3 = _local5.toVariables(); }; _local4 = _renderMetricsSearchVariables(_arg1); _local2.join(_local3, _local4); _gifRequest.send(_account, _local2); }; } public function setCampaignTrack(_arg1:Boolean):void{ _config.campaignTracking = _arg1; _debug.info((("setCampaignTrack( " + _config.campaignTracking) + " )")); } public function addIgnoredRef(_arg1:String):void{ _debug.info((("addIgnoredRef( " + _arg1) + " )")); _config.organic.addIgnoredReferral(_arg1); } public function clearOrganic():void{ _debug.info("clearOrganic()"); _config.organic.clearEngines(); } public function getDetectFlash():Boolean{ _debug.info("getDetectFlash()"); return (_config.detectFlash); } public function setCampMediumKey(_arg1:String):void{ var _local2:String; _config.campaignKey.UCMD = _arg1; _local2 = (("setCampMediumKey( " + _config.campaignKey.UCMD) + " )"); if (_debug.mode == VisualDebugMode.geek){ _debug.info((_local2 + " [UCMD]")); } else { _debug.info(_local2); }; } private function _getUniqueSessionId():Number{ var _local1:Number; _local1 = ((Utils.generate32bitRandom() ^ _generateUserDataHash()) * 2147483647); _debug.info(("Session ID: " + _local1), VisualDebugMode.geek); return (_local1); } private function _getDomainHash():Number{ if (((((!(_config.domainName)) || ((_config.domainName == "")))) || ((_config.domain.mode == DomainNameMode.none)))){ _config.domainName = ""; return (1); }; _updateDomainName(); if (_config.allowDomainHash){ return (Utils.generateHash(_config.domainName)); }; return (1); } public function setSessionTimeout(_arg1:int):void{ _config.sessionTimeout = _arg1; _debug.info((("setSessionTimeout( " + _config.sessionTimeout) + " )")); } public function getAccount():String{ _debug.info("getAccount()"); return (_account); } public function link(_arg1:String, _arg2:Boolean=false):void{ _debug.warning((("link( " + [_arg1, _arg2].join(", ")) + " ) not implemented")); } public function setRemoteServerMode():void{ _config.serverMode = ServerOperationMode.remote; _debug.info("setRemoteServerMode()"); } } }//package com.google.analytics.v4
Section 156
//AnalyticsTracker (com.google.analytics.AnalyticsTracker) package com.google.analytics { import com.google.analytics.v4.*; import com.google.analytics.debug.*; import flash.events.*; public interface AnalyticsTracker extends GoogleAnalyticsAPI, IEventDispatcher { function set config(_arg1:Configuration):void; function isReady():Boolean; function get mode():String; function set debug(_arg1:DebugConfiguration):void; function get account():String; function set mode(_arg1:String):void; function get config():Configuration; function get debug():DebugConfiguration; function set account(_arg1:String):void; function get visualDebug():Boolean; function set visualDebug(_arg1:Boolean):void; } }//package com.google.analytics
Section 157
//API (com.google.analytics.API) package com.google.analytics { import com.google.analytics.utils.*; public class API { public static var version:Version = new Version(); version.major = 1; version.minor = 0; version.build = 1; version.revision = "$Rev: 234 $ ".split(" ")[1]; } }//package com.google.analytics
Section 158
//GATracker (com.google.analytics.GATracker) package com.google.analytics { import com.google.analytics.core.*; import com.google.analytics.v4.*; import com.google.analytics.debug.*; import com.google.analytics.utils.*; import flash.events.*; import flash.display.*; import com.google.analytics.external.*; import com.google.analytics.events.*; public class GATracker implements AnalyticsTracker { private var _adSense:AdSenseGlobals; private var _env:Environment; private var _visualDebug:Boolean; private var _idleTimer:IdleTimer; private var _debug:DebugConfiguration; private var _buffer:Buffer; private var _config:Configuration; private var _mode:String; private var _display:DisplayObject; private var _jsproxy:JavascriptProxy; private var _dom:HTMLDOM; private var _eventDispatcher:EventDispatcher; private var _ready:Boolean;// = false private var _gifRequest:GIFRequest; private var _account:String; private var _tracker:GoogleAnalyticsAPI; public static var version:Version = API.version; public static var autobuild:Boolean = true; public function GATracker(_arg1:DisplayObject, _arg2:String, _arg3:String="AS3", _arg4:Boolean=false, _arg5:Configuration=null, _arg6:DebugConfiguration=null){ _ready = false; super(); _display = _arg1; _eventDispatcher = new EventDispatcher(this); _tracker = new TrackerCache(); this.account = _arg2; this.mode = _arg3; this.visualDebug = _arg4; if (!_arg6){ this.debug = new DebugConfiguration(); }; if (!_arg5){ this.config = new Configuration(_arg6); }; if (autobuild){ _factory(); }; } public function link(_arg1:String, _arg2:Boolean=false):void{ _tracker.link(_arg1, _arg2); } public function addOrganic(_arg1:String, _arg2:String):void{ _tracker.addOrganic(_arg1, _arg2); } public function setAllowLinker(_arg1:Boolean):void{ _tracker.setAllowLinker(_arg1); } public function trackEvent(_arg1:String, _arg2:String, _arg3:String=null, _arg4:Number=NaN):Boolean{ return (_tracker.trackEvent(_arg1, _arg2, _arg3, _arg4)); } public function setCookieTimeout(_arg1:int):void{ _tracker.setCookieTimeout(_arg1); } public function trackTrans():void{ _tracker.trackTrans(); } public function trackPageview(_arg1:String=""):void{ _tracker.trackPageview(_arg1); } public function getClientInfo():Boolean{ return (_tracker.getClientInfo()); } public function setClientInfo(_arg1:Boolean):void{ _tracker.setClientInfo(_arg1); } public function get account():String{ return (_account); } public function linkByPost(_arg1:Object, _arg2:Boolean=false):void{ _tracker.linkByPost(_arg1, _arg2); } public function getDetectTitle():Boolean{ return (_tracker.getDetectTitle()); } public function dispatchEvent(_arg1:Event):Boolean{ return (_eventDispatcher.dispatchEvent(_arg1)); } public function get config():Configuration{ return (_config); } public function set mode(_arg1:String):void{ _mode = _arg1; } public function removeEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false):void{ _eventDispatcher.removeEventListener(_arg1, _arg2, _arg3); } public function setDetectFlash(_arg1:Boolean):void{ _tracker.setDetectFlash(_arg1); } public function resetSession():void{ _tracker.resetSession(); } public function setCampNameKey(_arg1:String):void{ _tracker.setCampNameKey(_arg1); } public function get debug():DebugConfiguration{ return (_debug); } public function addItem(_arg1:String, _arg2:String, _arg3:String, _arg4:String, _arg5:Number, _arg6:int):void{ _tracker.addItem(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); } private function _bridgeFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (Bridge) v" + version) + "\naccount: ") + account)); return (new Bridge(account, _debug, _jsproxy)); } public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ _eventDispatcher.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); } public function clearIgnoredOrganic():void{ _tracker.clearIgnoredOrganic(); } public function set account(_arg1:String):void{ _account = _arg1; } public function setVar(_arg1:String):void{ _tracker.setVar(_arg1); } public function build():void{ if (!isReady()){ _factory(); }; } public function setDomainName(_arg1:String):void{ _tracker.setDomainName(_arg1); } public function createEventTracker(_arg1:String):EventTracker{ return (_tracker.createEventTracker(_arg1)); } public function set config(_arg1:Configuration):void{ _config = _arg1; } public function addTrans(_arg1:String, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:String, _arg7:String, _arg8:String):Object{ return (_tracker.addTrans(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8)); } public function setCampSourceKey(_arg1:String):void{ _tracker.setCampSourceKey(_arg1); } public function setCampContentKey(_arg1:String):void{ _tracker.setCampContentKey(_arg1); } public function willTrigger(_arg1:String):Boolean{ return (_eventDispatcher.willTrigger(_arg1)); } public function setLocalServerMode():void{ _tracker.setLocalServerMode(); } public function isReady():Boolean{ return (_ready); } public function getLocalGifPath():String{ return (_tracker.getLocalGifPath()); } public function setAllowAnchor(_arg1:Boolean):void{ _tracker.setAllowAnchor(_arg1); } public function clearIgnoredRef():void{ _tracker.clearIgnoredRef(); } public function get mode():String{ return (_mode); } public function set debug(_arg1:DebugConfiguration):void{ _debug = _arg1; } public function setLocalGifPath(_arg1:String):void{ _tracker.setLocalGifPath(_arg1); } public function getVersion():String{ return (_tracker.getVersion()); } public function setSampleRate(_arg1:Number):void{ _tracker.setSampleRate(_arg1); } public function setCookiePath(_arg1:String):void{ _tracker.setCookiePath(_arg1); } public function setAllowHash(_arg1:Boolean):void{ _tracker.setAllowHash(_arg1); } public function setCampNOKey(_arg1:String):void{ _tracker.setCampNOKey(_arg1); } public function addIgnoredOrganic(_arg1:String):void{ _tracker.addIgnoredOrganic(_arg1); } public function setLocalRemoteServerMode():void{ _tracker.setLocalRemoteServerMode(); } public function cookiePathCopy(_arg1:String):void{ _tracker.cookiePathCopy(_arg1); } private function _factory():void{ var _local1:GoogleAnalyticsAPI; var _local2:TrackerCache; _jsproxy = new JavascriptProxy(debug); if (visualDebug){ debug.layout = new Layout(debug, _display); debug.active = visualDebug; }; _local2 = (_tracker as TrackerCache); switch (mode){ case TrackerMode.BRIDGE: _local1 = _bridgeFactory(); break; case TrackerMode.AS3: default: _local1 = _trackerFactory(); }; if (!_local2.isEmpty()){ _local2.tracker = _local1; _local2.flush(); }; _tracker = _local1; _ready = true; dispatchEvent(new AnalyticsEvent(AnalyticsEvent.READY, this)); } public function setCampTermKey(_arg1:String):void{ _tracker.setCampTermKey(_arg1); } private function _trackerFactory():GoogleAnalyticsAPI{ debug.info(((("GATracker (AS3) v" + version) + "\naccount: ") + account)); _adSense = new AdSenseGlobals(debug); _dom = new HTMLDOM(debug); _dom.cacheProperties(); _env = new Environment("", "", "", debug, _dom); _buffer = new Buffer(config, debug, false); _gifRequest = new GIFRequest(config, debug, _buffer, _env); _idleTimer = new IdleTimer(config, debug, _display, _buffer); _env.url = _display.stage.loaderInfo.url; return (new Tracker(account, config, debug, _env, _buffer, _gifRequest, _adSense)); } public function setDetectTitle(_arg1:Boolean):void{ _tracker.setDetectTitle(_arg1); } public function getServiceMode():ServerOperationMode{ return (_tracker.getServiceMode()); } public function clearOrganic():void{ _tracker.clearOrganic(); } public function setCampaignTrack(_arg1:Boolean):void{ _tracker.setCampaignTrack(_arg1); } public function addIgnoredRef(_arg1:String):void{ _tracker.addIgnoredRef(_arg1); } public function set visualDebug(_arg1:Boolean):void{ _visualDebug = _arg1; } public function setCampMediumKey(_arg1:String):void{ _tracker.setCampMediumKey(_arg1); } public function setSessionTimeout(_arg1:int):void{ _tracker.setSessionTimeout(_arg1); } public function getDetectFlash():Boolean{ return (_tracker.getDetectFlash()); } public function get visualDebug():Boolean{ return (_visualDebug); } public function getAccount():String{ return (_tracker.getAccount()); } public function hasEventListener(_arg1:String):Boolean{ return (_eventDispatcher.hasEventListener(_arg1)); } public function setRemoteServerMode():void{ _tracker.setRemoteServerMode(); } } var _local1:* = ServerOperationMode; return (_local1); }//package com.google.analytics
Section 159
//PropTween (com.greensock.core.PropTween) package com.greensock.core { public class PropTween { public var priority:int; public var start:Number; public var prevNode:PropTween; public var change:Number; public var target:Object; public var name:String; public var property:String; public var nextNode:PropTween; public var isPlugin:Boolean; public function PropTween(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:PropTween=null, _arg8:int=0){ this.target = _arg1; this.property = _arg2; this.start = _arg3; this.change = _arg4; this.name = _arg5; this.isPlugin = _arg6; if (_arg7){ _arg7.prevNode = this; this.nextNode = _arg7; }; this.priority = _arg8; } } }//package com.greensock.core
Section 160
//SimpleTimeline (com.greensock.core.SimpleTimeline) package com.greensock.core { public class SimpleTimeline extends TweenCore { public var autoRemoveChildren:Boolean; protected var _lastChild:TweenCore; protected var _firstChild:TweenCore; public function SimpleTimeline(_arg1:Object=null){ super(0, _arg1); } override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local5:Number; var _local6:TweenCore; var _local4:TweenCore = _firstChild; this.cachedTotalTime = _arg1; this.cachedTime = _arg1; while (_local4) { _local6 = _local4.nextNode; if (((_local4.active) || ((((((_arg1 >= _local4.cachedStartTime)) && (!(_local4.cachedPaused)))) && (!(_local4.gc)))))){ if (!_local4.cachedReversed){ _local4.renderTime(((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale), _arg2, false); } else { _local5 = (_local4.cacheIsDirty) ? _local4.totalDuration : _local4.cachedTotalDuration; _local4.renderTime((_local5 - ((_arg1 - _local4.cachedStartTime) * _local4.cachedTimeScale)), _arg2, false); }; }; _local4 = _local6; }; } public function addChild(_arg1:TweenCore):void{ if (((!(_arg1.gc)) && (_arg1.timeline))){ _arg1.timeline.remove(_arg1, true); }; _arg1.timeline = this; if (_arg1.gc){ _arg1.setEnabled(true, true); }; if (_firstChild){ _firstChild.prevNode = _arg1; }; _arg1.nextNode = _firstChild; _firstChild = _arg1; _arg1.prevNode = null; } public function remove(_arg1:TweenCore, _arg2:Boolean=false):void{ if (((!(_arg1.gc)) && (!(_arg2)))){ _arg1.setEnabled(false, true); }; if (_arg1.nextNode){ _arg1.nextNode.prevNode = _arg1.prevNode; } else { if (_lastChild == _arg1){ _lastChild = _arg1.prevNode; }; }; if (_arg1.prevNode){ _arg1.prevNode.nextNode = _arg1.nextNode; } else { if (_firstChild == _arg1){ _firstChild = _arg1.nextNode; }; }; } public function get rawTime():Number{ return (this.cachedTotalTime); } } }//package com.greensock.core
Section 161
//TweenCore (com.greensock.core.TweenCore) package com.greensock.core { import com.greensock.*; public class TweenCore { public var initted:Boolean; protected var _hasUpdate:Boolean; public var active:Boolean; protected var _delay:Number; public var cachedTime:Number; public var cachedReversed:Boolean; public var nextNode:TweenCore; protected var _rawPrevTime:Number;// = -1 public var vars:Object; public var cachedTotalTime:Number; public var timeline:SimpleTimeline; public var data; public var cachedStartTime:Number; public var prevNode:TweenCore; public var cachedDuration:Number; public var gc:Boolean; protected var _pauseTime:Number; public var cacheIsDirty:Boolean; public var cachedPaused:Boolean; public var cachedTimeScale:Number; public var cachedTotalDuration:Number; public static const version:Number = 1.13; protected static var _classInitted:Boolean; public function TweenCore(_arg1:Number=0, _arg2:Object=null){ this.vars = ((_arg2) || ({})); this.cachedDuration = (this.cachedTotalDuration = ((_arg1) || (0))); _delay = ((this.vars.delay) || (0)); this.cachedTimeScale = ((this.vars.timeScale) || (1)); this.active = Boolean((((((_arg1 == 0)) && ((_delay == 0)))) && (!((this.vars.immediateRender == false))))); this.cachedTotalTime = (this.cachedTime = 0); this.data = this.vars.data; if (!_classInitted){ if (isNaN(TweenLite.rootFrame)){ TweenLite.initClass(); _classInitted = true; } else { return; }; }; var _local3:SimpleTimeline = ((this.vars.timeline is SimpleTimeline)) ? this.vars.timeline : (this.vars.useFrames) ? TweenLite.rootFramesTimeline : TweenLite.rootTimeline; this.cachedStartTime = (_local3.cachedTotalTime + _delay); _local3.addChild(this); if (this.vars.reversed){ this.cachedReversed = true; }; if (this.vars.paused){ this.paused = true; }; } public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ } public function get delay():Number{ return (_delay); } public function get duration():Number{ return (this.cachedDuration); } public function restart(_arg1:Boolean=false, _arg2:Boolean=true):void{ this.reversed = false; this.paused = false; this.setTotalTime((_arg1) ? -(_delay) : 0, _arg2); } public function set reversed(_arg1:Boolean):void{ if (_arg1 != this.cachedReversed){ this.cachedReversed = _arg1; setTotalTime(this.cachedTotalTime, true); }; } public function set startTime(_arg1:Number):void{ var _local2:Boolean = Boolean(((!((this.timeline == null))) && (((!((_arg1 == this.cachedStartTime))) || (this.gc))))); this.cachedStartTime = _arg1; if (_local2){ this.timeline.addChild(this); }; } public function set delay(_arg1:Number):void{ this.startTime = (this.startTime + (_arg1 - _delay)); _delay = _arg1; } public function resume():void{ this.paused = false; } public function get paused():Boolean{ return (this.cachedPaused); } public function play():void{ this.reversed = false; this.paused = false; } public function set duration(_arg1:Number):void{ this.cachedDuration = (this.cachedTotalDuration = _arg1); setDirtyCache(false); } public function complete(_arg1:Boolean=false, _arg2:Boolean=false):void{ if (!_arg1){ renderTime(this.cachedTotalDuration, _arg2, false); return; }; if (this.timeline.autoRemoveChildren){ this.setEnabled(false, false); } else { this.active = false; }; if (!_arg2){ if (((((this.vars.onComplete) && ((this.cachedTotalTime == this.cachedTotalDuration)))) && (!(this.cachedReversed)))){ this.vars.onComplete.apply(null, this.vars.onCompleteParams); } else { if (((((this.cachedReversed) && ((this.cachedTotalTime == 0)))) && (this.vars.onReverseComplete))){ this.vars.onReverseComplete.apply(null, this.vars.onReverseCompleteParams); }; }; }; } public function invalidate():void{ } public function get totalTime():Number{ return (this.cachedTotalTime); } public function get reversed():Boolean{ return (this.cachedReversed); } public function get startTime():Number{ return (this.cachedStartTime); } public function set currentTime(_arg1:Number):void{ setTotalTime(_arg1, false); } protected function setDirtyCache(_arg1:Boolean=true):void{ var _local2:TweenCore = (_arg1) ? this : this.timeline; while (_local2) { _local2.cacheIsDirty = true; _local2 = _local2.timeline; }; } public function reverse(_arg1:Boolean=true):void{ this.reversed = true; if (_arg1){ this.paused = false; } else { if (this.gc){ this.setEnabled(true, false); }; }; } public function set paused(_arg1:Boolean):void{ if (((!((_arg1 == this.cachedPaused))) && (this.timeline))){ if (_arg1){ _pauseTime = this.timeline.rawTime; } else { this.cachedStartTime = (this.cachedStartTime + (this.timeline.rawTime - _pauseTime)); _pauseTime = NaN; setDirtyCache(false); }; this.cachedPaused = _arg1; this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); }; if (((!(_arg1)) && (this.gc))){ this.setTotalTime(this.cachedTotalTime, false); this.setEnabled(true, false); }; } public function kill():void{ setEnabled(false, false); } public function set totalTime(_arg1:Number):void{ setTotalTime(_arg1, false); } public function get currentTime():Number{ return (this.cachedTime); } protected function setTotalTime(_arg1:Number, _arg2:Boolean=false):void{ var _local3:Number; var _local4:Number; if (this.timeline){ _local3 = (((_pauseTime) || ((_pauseTime == 0)))) ? _pauseTime : this.timeline.cachedTotalTime; if (this.cachedReversed){ _local4 = (this.cacheIsDirty) ? this.totalDuration : this.cachedTotalDuration; this.cachedStartTime = (_local3 - ((_local4 - _arg1) / this.cachedTimeScale)); } else { this.cachedStartTime = (_local3 - (_arg1 / this.cachedTimeScale)); }; if (!this.timeline.cacheIsDirty){ setDirtyCache(false); }; if (this.cachedTotalTime != _arg1){ renderTime(_arg1, _arg2, false); }; }; } public function pause():void{ this.paused = true; } public function set totalDuration(_arg1:Number):void{ this.duration = _arg1; } public function get totalDuration():Number{ return (this.cachedTotalDuration); } public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):Boolean{ if (_arg1){ this.active = Boolean(((((!(this.cachedPaused)) && ((this.cachedTotalTime > 0)))) && ((this.cachedTotalTime < this.cachedTotalDuration)))); if (((!(_arg2)) && (this.gc))){ this.timeline.addChild(this); }; } else { this.active = false; if (!_arg2){ this.timeline.remove(this, true); }; }; this.gc = !(_arg1); return (false); } } }//package com.greensock.core
Section 162
//Back (com.greensock.easing.Back) package com.greensock.easing { public class Back { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{ _arg1 = (_arg1 / _arg4); return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{ _arg1 = (_arg1 / (_arg4 * 0.5)); if (_arg1 < 1){ _arg5 = (_arg5 * 1.525); return ((((_arg3 * 0.5) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2)); }; _arg1 = (_arg1 - 2); _arg5 = (_arg5 * 1.525); return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2)); } } }//package com.greensock.easing
Section 163
//Elastic (com.greensock.easing.Elastic) package com.greensock.easing { public class Elastic { private static const _2PI:Number = 6.28318530717959; public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; if (!_arg6){ _arg6 = (_arg4 * 0.3); }; if (((((!(_arg5)) || ((((_arg3 > 0)) && ((_arg5 < _arg3)))))) || ((((_arg3 < 0)) && ((_arg5 < -(_arg3))))))){ _arg5 = _arg3; _local7 = (_arg6 / 4); } else { _local7 = ((_arg6 / _2PI) * Math.asin((_arg3 / _arg5))); }; --_arg1; return ((-(((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6)))) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / (_arg4 * 0.5)); if (_arg1 == 2){ return ((_arg2 + _arg3)); }; if (!_arg6){ _arg6 = (_arg4 * (0.3 * 1.5)); }; if (((((!(_arg5)) || ((((_arg3 > 0)) && ((_arg5 < _arg3)))))) || ((((_arg3 < 0)) && ((_arg5 < -(_arg3))))))){ _arg5 = _arg3; _local7 = (_arg6 / 4); } else { _local7 = ((_arg6 / _2PI) * Math.asin((_arg3 / _arg5))); }; if (_arg1 < 1){ --_arg1; return (((-0.5 * ((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6)))) + _arg2)); }; --_arg1; return ((((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6))) * 0.5) + _arg3) + _arg2)); } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=0, _arg6:Number=0):Number{ var _local7:Number; if (_arg1 == 0){ return (_arg2); }; _arg1 = (_arg1 / _arg4); if (_arg1 == 1){ return ((_arg2 + _arg3)); }; if (!_arg6){ _arg6 = (_arg4 * 0.3); }; if (((((!(_arg5)) || ((((_arg3 > 0)) && ((_arg5 < _arg3)))))) || ((((_arg3 < 0)) && ((_arg5 < -(_arg3))))))){ _arg5 = _arg3; _local7 = (_arg6 / 4); } else { _local7 = ((_arg6 / _2PI) * Math.asin((_arg3 / _arg5))); }; return (((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * _2PI) / _arg6))) + _arg3) + _arg2)); } } }//package com.greensock.easing
Section 164
//Sine (com.greensock.easing.Sine) package com.greensock.easing { public class Sine { private static const _HALF_PI:Number = 1.5707963267949; public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg3 * Math.sin(((_arg1 / _arg4) * _HALF_PI))) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * _HALF_PI))) + _arg3) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((-(_arg3) * 0.5) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2)); } } }//package com.greensock.easing
Section 165
//Strong (com.greensock.easing.Strong) package com.greensock.easing { public class Strong { public static const power:uint = 4; public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 * 0.5)); if (_arg1 < 1){ return ((((((((_arg3 * 0.5) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 * 0.5) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2)); } } }//package com.greensock.easing
Section 166
//TweenLite (com.greensock.TweenLite) package com.greensock { import flash.events.*; import flash.display.*; import com.greensock.core.*; import flash.utils.*; import com.greensock.plugins.*; public class TweenLite extends TweenCore { protected var _hasPlugins:Boolean; public var propTweenLookup:Object; public var cachedPT1:PropTween; protected var _overwrite:uint; protected var _ease:Function; public var target:Object; public var ratio:Number;// = 0 protected var _overwrittenProps:Object; protected var _notifyPluginsOfEnabled:Boolean; public static const version:Number = 11.131; public static var rootTimeline:SimpleTimeline; public static var fastEaseLookup:Dictionary = new Dictionary(false); public static var onPluginEvent:Function; public static var rootFramesTimeline:SimpleTimeline; public static var defaultEase:Function = TweenLite.easeOut; public static var plugins:Object = {}; public static var masterList:Dictionary = new Dictionary(false); public static var overwriteManager:Object; public static var rootFrame:Number; public static var killDelayedCallsTo:Function = TweenLite.killTweensOf; private static var _shape:Shape = new Shape(); protected static var _reservedProps:Object = {ease:1, delay:1, overwrite:1, onComplete:1, onCompleteParams:1, useFrames:1, runBackwards:1, startAt:1, onUpdate:1, onUpdateParams:1, roundProps:1, onStart:1, onStartParams:1, onReverseComplete:1, onReverseCompleteParams:1, onRepeat:1, onRepeatParams:1, proxiedEase:1, easeParams:1, yoyo:1, onCompleteListener:1, onUpdateListener:1, onStartListener:1, onReverseCompleteListener:1, onRepeatListener:1, orientToBezier:1, timeScale:1, immediateRender:1, repeat:1, repeatDelay:1, timeline:1, data:1, paused:1}; public function TweenLite(_arg1:Object, _arg2:Number, _arg3:Object){ var _local5:TweenLite; super(_arg2, _arg3); this.target = _arg1; if ((((this.target is TweenCore)) && (("timeScale" in this.vars)))){ this.cachedTimeScale = 1; }; propTweenLookup = {}; _ease = defaultEase; _overwrite = (((!((Number(_arg3.overwrite) > -1))) || (((!(overwriteManager.enabled)) && ((_arg3.overwrite > 1)))))) ? overwriteManager.mode : int(_arg3.overwrite); var _local4:Array = masterList[_arg1]; if (!_local4){ masterList[_arg1] = [this]; } else { if (_overwrite == 1){ for each (_local5 in _local4) { if (!_local5.gc){ _local5.setEnabled(false, false); }; }; masterList[_arg1] = [this]; } else { _local4[_local4.length] = this; }; }; if (((this.active) || (this.vars.immediateRender))){ renderTime(0, false, true); }; } protected function easeProxy(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (this.vars.proxiedEase.apply(null, arguments.concat(this.vars.easeParams))); } override public function renderTime(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=false):void{ var _local4:Boolean; var _local5:Number = this.cachedTime; if (_arg1 >= this.cachedDuration){ this.cachedTotalTime = (this.cachedTime = this.cachedDuration); this.ratio = 1; _local4 = true; if (this.cachedDuration == 0){ if ((((((_arg1 == 0)) || ((_rawPrevTime < 0)))) && (!((_rawPrevTime == _arg1))))){ _arg3 = true; }; _rawPrevTime = _arg1; }; } else { if (_arg1 <= 0){ this.cachedTotalTime = (this.cachedTime = (this.ratio = 0)); if (_arg1 < 0){ this.active = false; if (this.cachedDuration == 0){ if (_rawPrevTime > 0){ _arg3 = true; _local4 = true; }; _rawPrevTime = _arg1; }; }; if (((this.cachedReversed) && (!((_local5 == 0))))){ _local4 = true; }; } else { this.cachedTotalTime = (this.cachedTime = _arg1); this.ratio = _ease(_arg1, 0, 1, this.cachedDuration); }; }; if ((((this.cachedTime == _local5)) && (!(_arg3)))){ return; }; if (!this.initted){ init(); if (((!(_local4)) && (this.cachedTime))){ this.ratio = _ease(this.cachedTime, 0, 1, this.cachedDuration); }; }; if (((!(this.active)) && (!(this.cachedPaused)))){ this.active = true; }; if ((((((((_local5 == 0)) && (this.vars.onStart))) && (!((this.cachedTime == 0))))) && (!(_arg2)))){ this.vars.onStart.apply(null, this.vars.onStartParams); }; var _local6:PropTween = this.cachedPT1; while (_local6) { _local6.target[_local6.property] = (_local6.start + (this.ratio * _local6.change)); _local6 = _local6.nextNode; }; if (((_hasUpdate) && (!(_arg2)))){ this.vars.onUpdate.apply(null, this.vars.onUpdateParams); }; if (_local4){ if (((_hasPlugins) && (this.cachedPT1))){ onPluginEvent("onComplete", this); }; complete(true, _arg2); }; } override public function setEnabled(_arg1:Boolean, _arg2:Boolean=false):Boolean{ var _local3:Array; if (_arg1){ _local3 = TweenLite.masterList[this.target]; if (!_local3){ TweenLite.masterList[this.target] = [this]; } else { _local3[_local3.length] = this; }; }; super.setEnabled(_arg1, _arg2); if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){ return (onPluginEvent((_arg1) ? "onEnable" : "onDisable", this)); }; return (false); } protected function init():void{ var _local1:String; var _local2:int; var _local3:*; var _local4:Boolean; var _local5:Array; var _local6:PropTween; if (typeof(this.vars.ease) == "function"){ _ease = this.vars.ease; }; if (this.vars.easeParams){ this.vars.proxiedEase = _ease; _ease = easeProxy; }; this.cachedPT1 = null; this.propTweenLookup = {}; for (_local1 in this.vars) { if ((((_local1 in _reservedProps)) && (!((((_local1 == "timeScale")) && ((this.target is TweenCore))))))){ } else { if ((((_local1 in plugins)) && (new ((plugins[_local1] as Class)).onInitTween(this.target, this.vars[_local1], this)))){ this.cachedPT1 = new PropTween(_local3, "changeFactor", 0, 1, ((_local3.overwriteProps.length)==1) ? _local3.overwriteProps[0] : "_MULTIPLE_", true, this.cachedPT1); if (this.cachedPT1.name == "_MULTIPLE_"){ _local2 = _local3.overwriteProps.length; while (_local2--) { this.propTweenLookup[_local3.overwriteProps[_local2]] = this.cachedPT1; }; } else { this.propTweenLookup[this.cachedPT1.name] = this.cachedPT1; }; if (_local3.priority){ this.cachedPT1.priority = _local3.priority; _local4 = true; }; if (((_local3.onDisable) || (_local3.onEnable))){ _notifyPluginsOfEnabled = true; }; _hasPlugins = true; } else { this.cachedPT1 = new PropTween(this.target, _local1, Number(this.target[_local1]), ((typeof(this.vars[_local1]))=="number") ? (Number(this.vars[_local1]) - this.target[_local1]) : Number(this.vars[_local1]), _local1, false, this.cachedPT1); this.propTweenLookup[_local1] = this.cachedPT1; }; }; }; if (_local4){ onPluginEvent("onInit", this); }; if (this.vars.runBackwards){ _local6 = this.cachedPT1; while (_local6) { _local6.start = (_local6.start + _local6.change); _local6.change = -(_local6.change); _local6 = _local6.nextNode; }; }; _hasUpdate = Boolean(!((this.vars.onUpdate == null))); if (_overwrittenProps){ killVars(_overwrittenProps); if (this.cachedPT1 == null){ this.setEnabled(false, false); }; }; if ((((((((_overwrite > 1)) && (this.cachedPT1))) && (masterList[this.target]))) && ((_local5.length > 1)))){ if (overwriteManager.manageOverwrites(this, this.propTweenLookup, _local5, _overwrite)){ init(); }; }; this.initted = true; } public function killVars(_arg1:Object, _arg2:Boolean=true):Boolean{ var _local3:String; var _local4:PropTween; var _local5:Boolean; if (_overwrittenProps == null){ _overwrittenProps = {}; }; for (_local3 in _arg1) { if ((_local3 in propTweenLookup)){ _local4 = propTweenLookup[_local3]; if (((_local4.isPlugin) && ((_local4.name == "_MULTIPLE_")))){ _local4.target.killProps(_arg1); if (_local4.target.overwriteProps.length == 0){ _local4.name = ""; }; }; if (_local4.name != "_MULTIPLE_"){ if (_local4.nextNode){ _local4.nextNode.prevNode = _local4.prevNode; }; if (_local4.prevNode){ _local4.prevNode.nextNode = _local4.nextNode; } else { if (this.cachedPT1 == _local4){ this.cachedPT1 = _local4.nextNode; }; }; if (((_local4.isPlugin) && (_local4.target.onDisable))){ _local4.target.onDisable(); if (_local4.target.activeDisable){ _local5 = true; }; }; delete propTweenLookup[_local3]; }; }; if (_arg2){ _overwrittenProps[_local3] = 1; }; }; return (_local5); } override public function invalidate():void{ if (((_notifyPluginsOfEnabled) && (this.cachedPT1))){ onPluginEvent("onDisable", this); }; this.cachedPT1 = null; _overwrittenProps = null; _hasUpdate = (this.initted = (this.active = (_notifyPluginsOfEnabled = false))); this.propTweenLookup = {}; } public static function initClass():void{ rootFrame = 0; rootTimeline = new SimpleTimeline(null); rootFramesTimeline = new SimpleTimeline(null); rootTimeline.cachedStartTime = (getTimer() * 0.001); rootFramesTimeline.cachedStartTime = rootFrame; rootTimeline.autoRemoveChildren = true; rootFramesTimeline.autoRemoveChildren = true; _shape.addEventListener(Event.ENTER_FRAME, updateAll, false, 0, true); if (overwriteManager == null){ overwriteManager = {mode:1, enabled:false}; }; } public static function killTweensOf(_arg1:Object, _arg2:Boolean=false):void{ var _local3:Array; var _local4:int; if ((_arg1 in masterList)){ _local3 = masterList[_arg1]; _local4 = _local3.length; while (_local4--) { if (!TweenLite(_local3[_local4]).gc){ if (_arg2){ TweenLite(_local3[_local4]).complete(false, false); } else { TweenLite(_local3[_local4]).setEnabled(false, false); }; }; }; delete masterList[_arg1]; }; } public static function from(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ _arg3.runBackwards = true; if (!("immediateRender" in _arg3)){ _arg3.immediateRender = true; }; return (new TweenLite(_arg1, _arg2, _arg3)); } protected static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (1 - (_arg1 / _arg4)); return ((1 - (_arg1 * _arg1))); } public static function delayedCall(_arg1:Number, _arg2:Function, _arg3:Array=null, _arg4:Boolean=false):TweenLite{ return (new TweenLite(_arg2, 0, {delay:_arg1, onComplete:_arg2, onCompleteParams:_arg3, immediateRender:false, useFrames:_arg4, overwrite:0})); } protected static function updateAll(_arg1:Event=null):void{ var _local2:Dictionary; var _local3:Object; var _local4:Array; var _local5:int; rootTimeline.renderTime((((getTimer() * 0.001) - rootTimeline.cachedStartTime) * rootTimeline.cachedTimeScale), false, false); rootFrame++; rootFramesTimeline.renderTime(((rootFrame - rootFramesTimeline.cachedStartTime) * rootFramesTimeline.cachedTimeScale), false, false); if (!(rootFrame % 60)){ _local2 = masterList; for (_local3 in _local2) { _local4 = _local2[_local3]; _local5 = _local4.length; while (_local5--) { if (TweenLite(_local4[_local5]).gc){ _local4.splice(_local5, 1); }; }; if (_local4.length == 0){ delete _local2[_local3]; }; }; }; } public static function to(_arg1:Object, _arg2:Number, _arg3:Object):TweenLite{ return (new TweenLite(_arg1, _arg2, _arg3)); } } }//package com.greensock
Section 167
//ARC4 (com.hurlant.crypto.prng.ARC4) package com.hurlant.crypto.prng { import flash.utils.*; import com.hurlant.util.*; import com.hurlant.crypto.symmetric.*; public class ARC4 implements IPRNG, IStreamCipher { private const psize:uint = 0x0100; private var S:ByteArray; private var i:int;// = 0 private var j:int;// = 0 public function ARC4(_arg1:ByteArray=null){ S = new ByteArray(); if (_arg1){ init(_arg1); }; } public function decrypt(_arg1:ByteArray):void{ encrypt(_arg1); } public function init(_arg1:ByteArray):void{ var _local2:int; var _local3:int; var _local4:int; _local2 = 0; while (_local2 < 0x0100) { S[_local2] = _local2; _local2++; }; _local3 = 0; _local2 = 0; while (_local2 < 0x0100) { _local3 = (((_local3 + S[_local2]) + _arg1[(_local2 % _arg1.length)]) & 0xFF); _local4 = S[_local2]; S[_local2] = S[_local3]; S[_local3] = _local4; _local2++; }; this.i = 0; this.j = 0; } public function next():uint{ var _local1:int; i = ((i + 1) & 0xFF); j = ((j + S[i]) & 0xFF); _local1 = S[i]; S[i] = S[j]; S[j] = _local1; return (S[((_local1 + S[i]) & 0xFF)]); } public function encrypt(_arg1:ByteArray):void{ var _local2:uint; while (_local2 < _arg1.length) { var _temp1 = _local2; _local2 = (_local2 + 1); var _local3 = _temp1; _arg1[_local3] = (_arg1[_local3] ^ next()); }; } public function dispose():void{ var _local1:uint; if (S != null){ _local1 = 0; while (_local1 < S.length) { S[_local1] = (Math.random() * 0x0100); _local1++; }; S.length = 0; S = null; }; this.i = 0; this.j = 0; Memory.gc(); } public function getBlockSize():uint{ return (1); } public function getPoolSize():uint{ return (psize); } public function toString():String{ return ("rc4"); } } }//package com.hurlant.crypto.prng
Section 168
//IPRNG (com.hurlant.crypto.prng.IPRNG) package com.hurlant.crypto.prng { import flash.utils.*; public interface IPRNG { function init(_arg1:ByteArray):void; function next():uint; function getPoolSize():uint; function toString():String; function dispose():void; } }//package com.hurlant.crypto.prng
Section 169
//Random (com.hurlant.crypto.prng.Random) package com.hurlant.crypto.prng { import flash.utils.*; import flash.text.*; import com.hurlant.util.*; import flash.system.*; public class Random { private var ready:Boolean;// = false private var pool:ByteArray; private var seeded:Boolean;// = false private var psize:int; private var state:IPRNG; private var pptr:int; public function Random(_arg1:Class=null){ var _local2:uint; super(); if (_arg1 == null){ _arg1 = ARC4; }; state = (new (_arg1) as IPRNG); psize = state.getPoolSize(); pool = new ByteArray(); pptr = 0; while (pptr < psize) { _local2 = (65536 * Math.random()); var _local3 = pptr++; pool[_local3] = (_local2 >>> 8); var _local4 = pptr++; pool[_local4] = (_local2 & 0xFF); }; pptr = 0; seed(); } public function autoSeed():void{ var _local3:Font; var _local1:ByteArray = new ByteArray(); _local1.writeUnsignedInt(System.totalMemory); _local1.writeUTF(Capabilities.serverString); _local1.writeUnsignedInt(getTimer()); _local1.writeUnsignedInt(new Date().getTime()); var _local2:Array = Font.enumerateFonts(true); for each (_local3 in _local2) { _local1.writeUTF(_local3.fontName); _local1.writeUTF(_local3.fontStyle); _local1.writeUTF(_local3.fontType); }; _local1.position = 0; while (_local1.bytesAvailable >= 4) { seed(_local1.readUnsignedInt()); }; } public function seed(_arg1:int=0):void{ if (_arg1 == 0){ _arg1 = new Date().getTime(); }; var _local2 = pptr++; pool[_local2] = (pool[_local2] ^ (_arg1 & 0xFF)); var _local3 = pptr++; pool[_local3] = (pool[_local3] ^ ((_arg1 >> 8) & 0xFF)); var _local4 = pptr++; pool[_local4] = (pool[_local4] ^ ((_arg1 >> 16) & 0xFF)); var _local5 = pptr++; pool[_local5] = (pool[_local5] ^ ((_arg1 >> 24) & 0xFF)); pptr = (pptr % psize); seeded = true; } public function toString():String{ return (("random-" + state.toString())); } public function dispose():void{ var _local1:uint; while (_local1 < pool.length) { pool[_local1] = (Math.random() * 0x0100); _local1++; }; pool.length = 0; pool = null; state.dispose(); state = null; psize = 0; pptr = 0; Memory.gc(); } public function nextBytes(_arg1:ByteArray, _arg2:int):void{ while (_arg2--) { _arg1.writeByte(nextByte()); }; } public function nextByte():int{ if (!ready){ if (!seeded){ autoSeed(); }; state.init(pool); pool.length = 0; pptr = 0; ready = true; }; return (state.next()); } } }//package com.hurlant.crypto.prng
Section 170
//RSAKey (com.hurlant.crypto.rsa.RSAKey) package com.hurlant.crypto.rsa { import com.hurlant.math.*; import com.hurlant.crypto.prng.*; import flash.utils.*; import com.hurlant.util.*; public class RSAKey { public var dmp1:BigInteger; protected var canDecrypt:Boolean; public var d:BigInteger; public var e:int; public var dmq1:BigInteger; public var n:BigInteger; public var p:BigInteger; public var q:BigInteger; protected var canEncrypt:Boolean; public var coeff:BigInteger; public function RSAKey(_arg1:BigInteger, _arg2:int, _arg3:BigInteger=null, _arg4:BigInteger=null, _arg5:BigInteger=null, _arg6:BigInteger=null, _arg7:BigInteger=null, _arg8:BigInteger=null){ this.n = _arg1; this.e = _arg2; this.d = _arg3; this.p = _arg4; this.q = _arg5; this.dmp1 = _arg6; this.dmq1 = _arg7; this.coeff = _arg8; canEncrypt = ((!((n == null))) && (!((e == 0)))); canDecrypt = ((canEncrypt) && (!((d == null)))); } public function verify(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _decrypt(doPublic, _arg1, _arg2, _arg3, _arg4, 1); } protected function doPrivate2(_arg1:BigInteger):BigInteger{ if ((((p == null)) && ((q == null)))){ return (_arg1.modPow(d, n)); }; var _local2:BigInteger = _arg1.mod(p).modPow(dmp1, p); var _local3:BigInteger = _arg1.mod(q).modPow(dmq1, q); while (_local2.compareTo(_local3) < 0) { _local2 = _local2.add(p); }; var _local4:BigInteger = _local2.subtract(_local3).multiply(coeff).mod(p).multiply(q).add(_local3); return (_local4); } public function dump():String{ var _local1 = ((((("N=" + n.toString(16)) + "\n") + "E=") + e.toString(16)) + "\n"); if (canDecrypt){ _local1 = (_local1 + (("D=" + d.toString(16)) + "\n")); if (((!((p == null))) && (!((q == null))))){ _local1 = (_local1 + (("P=" + p.toString(16)) + "\n")); _local1 = (_local1 + (("Q=" + q.toString(16)) + "\n")); _local1 = (_local1 + (("DMP1=" + dmp1.toString(16)) + "\n")); _local1 = (_local1 + (("DMQ1=" + dmq1.toString(16)) + "\n")); _local1 = (_local1 + (("IQMP=" + coeff.toString(16)) + "\n")); }; }; return (_local1); } public function decrypt(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _decrypt(doPrivate2, _arg1, _arg2, _arg3, _arg4, 2); } private function _decrypt(_arg1:Function, _arg2:ByteArray, _arg3:ByteArray, _arg4:uint, _arg5:Function, _arg6:int):void{ var _local9:BigInteger; var _local10:BigInteger; var _local11:ByteArray; if (_arg5 == null){ _arg5 = pkcs1unpad; }; if (_arg2.position >= _arg2.length){ _arg2.position = 0; }; var _local7:uint = getBlockSize(); var _local8:int = (_arg2.position + _arg4); while (_arg2.position < _local8) { _local9 = new BigInteger(_arg2, _arg4); _local10 = _arg1(_local9); _local11 = _arg5(_local10, _local7); _arg3.writeBytes(_local11); }; } protected function doPublic(_arg1:BigInteger):BigInteger{ return (_arg1.modPowInt(e, n)); } public function dispose():void{ e = 0; n.dispose(); n = null; Memory.gc(); } private function _encrypt(_arg1:Function, _arg2:ByteArray, _arg3:ByteArray, _arg4:uint, _arg5:Function, _arg6:int):void{ var _local9:BigInteger; var _local10:BigInteger; if (_arg5 == null){ _arg5 = pkcs1pad; }; if (_arg2.position >= _arg2.length){ _arg2.position = 0; }; var _local7:uint = getBlockSize(); var _local8:int = (_arg2.position + _arg4); while (_arg2.position < _local8) { _local9 = new BigInteger(_arg5(_arg2, _local8, _local7, _arg6), _local7); _local10 = _arg1(_local9); _local10.toArray(_arg3); }; } private function rawpad(_arg1:ByteArray, _arg2:int, _arg3:uint):ByteArray{ return (_arg1); } public function encrypt(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _encrypt(doPublic, _arg1, _arg2, _arg3, _arg4, 2); } private function pkcs1pad(_arg1:ByteArray, _arg2:int, _arg3:uint, _arg4:uint=2):ByteArray{ var _local9:int; var _local5:ByteArray = new ByteArray(); var _local6:uint = _arg1.position; _arg2 = Math.min(_arg2, _arg1.length, ((_local6 + _arg3) - 11)); _arg1.position = _arg2; var _local7:int = (_arg2 - 1); while ((((_local7 >= _local6)) && ((_arg3 > 11)))) { --_arg3; var _local10 = _arg3; var _temp1 = _local7; _local7 = (_local7 - 1); _local5[_local10] = _arg1[_temp1]; }; --_arg3; _local10 = _arg3; _local5[_local10] = 0; var _local8:Random = new Random(); while (_arg3 > 2) { _local9 = 0; while (_local9 == 0) { _local9 = ((_arg4)==2) ? _local8.nextByte() : 0xFF; }; --_arg3; var _local11 = _arg3; _local5[_local11] = _local9; }; --_arg3; _local11 = _arg3; _local5[_local11] = _arg4; --_arg3; var _local12 = _arg3; _local5[_local12] = 0; return (_local5); } private function pkcs1unpad(_arg1:BigInteger, _arg2:uint, _arg3:uint=2):ByteArray{ var _local4:ByteArray = _arg1.toByteArray(); var _local5:ByteArray = new ByteArray(); var _local6:int; while ((((_local6 < _local4.length)) && ((_local4[_local6] == 0)))) { _local6++; }; if (((!(((_local4.length - _local6) == (_arg2 - 1)))) || ((_local4[_local6] > 2)))){ trace(((("PKCS#1 unpad: i=" + _local6) + ", expected b[i]==[0,1,2], got b[i]=") + _local4[_local6].toString(16))); return (null); }; _local6++; while (_local4[_local6] != 0) { ++_local6; if (_local6 >= _local4.length){ trace((((("PKCS#1 unpad: i=" + _local6) + ", b[i-1]!=0 (=") + _local4[(_local6 - 1)].toString(16)) + ")")); return (null); }; }; while (++_local6 < _local4.length) { _local5.writeByte(_local4[_local6]); }; _local5.position = 0; return (_local5); } public function getBlockSize():uint{ return (((n.bitLength() + 7) / 8)); } public function toString():String{ return ("rsa"); } public function sign(_arg1:ByteArray, _arg2:ByteArray, _arg3:uint, _arg4:Function=null):void{ _encrypt(doPrivate2, _arg1, _arg2, _arg3, _arg4, 1); } protected function doPrivate(_arg1:BigInteger):BigInteger{ if ((((p == null)) || ((q == null)))){ return (_arg1.modPow(d, n)); }; var _local2:BigInteger = _arg1.mod(p).modPow(dmp1, p); var _local3:BigInteger = _arg1.mod(q).modPow(dmq1, q); while (_local2.compareTo(_local3) < 0) { _local2 = _local2.add(p); }; return (_local2.subtract(_local3).multiply(coeff).mod(p).multiply(q).add(_local3)); } protected static function bigRandom(_arg1:int, _arg2:Random):BigInteger{ if (_arg1 < 2){ return (BigInteger.nbv(1)); }; var _local3:ByteArray = new ByteArray(); _arg2.nextBytes(_local3, (_arg1 >> 3)); _local3.position = 0; var _local4:BigInteger = new BigInteger(_local3); _local4.primify(_arg1, 1); return (_local4); } public static function parsePublicKey(_arg1:String, _arg2:String):RSAKey{ return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16))); } public static function generate(_arg1:uint, _arg2:String):RSAKey{ var _local7:BigInteger; var _local8:BigInteger; var _local9:BigInteger; var _local10:BigInteger; var _local3:Random = new Random(); var _local4:uint = (_arg1 >> 1); var _local5:RSAKey = new RSAKey(null, 0, null); _local5.e = parseInt(_arg2, 16); var _local6:BigInteger = new BigInteger(_arg2, 16); while (true) { while (true) { _local5.p = bigRandom((_arg1 - _local4), _local3); if ((((_local5.p.subtract(BigInteger.ONE).gcd(_local6).compareTo(BigInteger.ONE) == 0)) && (_local5.p.isProbablePrime(10)))){ break; }; }; while (true) { _local5.q = bigRandom(_local4, _local3); if ((((_local5.q.subtract(BigInteger.ONE).gcd(_local6).compareTo(BigInteger.ONE) == 0)) && (_local5.q.isProbablePrime(10)))){ break; }; }; if (_local5.p.compareTo(_local5.q) <= 0){ _local10 = _local5.p; _local5.p = _local5.q; _local5.q = _local10; }; _local7 = _local5.p.subtract(BigInteger.ONE); _local8 = _local5.q.subtract(BigInteger.ONE); _local9 = _local7.multiply(_local8); if (_local9.gcd(_local6).compareTo(BigInteger.ONE) == 0){ _local5.n = _local5.p.multiply(_local5.q); _local5.d = _local6.modInverse(_local9); _local5.dmp1 = _local5.d.mod(_local7); _local5.dmq1 = _local5.d.mod(_local8); _local5.coeff = _local5.q.modInverse(_local5.p); break; }; }; return (_local5); } public static function parsePrivateKey(_arg1:String, _arg2:String, _arg3:String, _arg4:String=null, _arg5:String=null, _arg6:String=null, _arg7:String=null, _arg8:String=null):RSAKey{ if (_arg4 == null){ return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16), new BigInteger(_arg3, 16))); }; return (new RSAKey(new BigInteger(_arg1, 16), parseInt(_arg2, 16), new BigInteger(_arg3, 16), new BigInteger(_arg4, 16), new BigInteger(_arg5, 16), new BigInteger(_arg6, 16), new BigInteger(_arg7), new BigInteger(_arg8))); } } }//package com.hurlant.crypto.rsa
Section 171
//ICipher (com.hurlant.crypto.symmetric.ICipher) package com.hurlant.crypto.symmetric { import flash.utils.*; public interface ICipher { function encrypt(_arg1:ByteArray):void; function getBlockSize():uint; function toString():String; function decrypt(_arg1:ByteArray):void; function dispose():void; } }//package com.hurlant.crypto.symmetric
Section 172
//IStreamCipher (com.hurlant.crypto.symmetric.IStreamCipher) package com.hurlant.crypto.symmetric { public interface IStreamCipher extends ICipher { } }//package com.hurlant.crypto.symmetric
Section 173
//BarrettReduction (com.hurlant.math.BarrettReduction) package com.hurlant.math { import com.hurlant.math.*; class BarrettReduction implements IReduction { private var r2:BigInteger; private var q3:BigInteger; private var mu:BigInteger; private var m:BigInteger; function BarrettReduction(_arg1:BigInteger){ r2 = new BigInteger(); q3 = new BigInteger(); BigInteger.ONE.dlShiftTo((2 * _arg1.t), r2); mu = r2.divide(_arg1); this.m = _arg1; } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function convert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger; if ((((_arg1.s < 0)) || ((_arg1.t > (2 * m.t))))){ return (_arg1.mod(m)); }; if (_arg1.compareTo(m) < 0){ return (_arg1); }; _local2 = new BigInteger(); _arg1.copyTo(_local2); reduce(_local2); return (_local2); } public function reduce(_arg1:BigInteger):void{ var _local2:BigInteger = (_arg1 as BigInteger); _local2.drShiftTo((m.t - 1), r2); if (_local2.t > (m.t + 1)){ _local2.t = (m.t + 1); _local2.clamp(); }; mu.multiplyUpperTo(r2, (m.t + 1), q3); m.multiplyLowerTo(q3, (m.t + 1), r2); while (_local2.compareTo(r2) < 0) { _local2.dAddOffset(1, (m.t + 1)); }; _local2.subTo(r2, _local2); while (_local2.compareTo(m) >= 0) { _local2.subTo(m, _local2); }; } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } } }//package com.hurlant.math
Section 174
//bi_internal (com.hurlant.math.bi_internal) package com.hurlant.math { public namespace bi_internal = "http://crypto.hurlant.com/BigInteger"; }//package com.hurlant.math
Section 175
//BigInteger (com.hurlant.math.BigInteger) package com.hurlant.math { import com.hurlant.crypto.prng.*; import flash.utils.*; import com.hurlant.util.*; public class BigInteger { bi_internal var a:Array; bi_internal var s:int; public var t:int; public static const ONE:BigInteger = nbv(1); public static const ZERO:BigInteger = nbv(0); public static const DM:int = (DV - 1); public static const F1:int = 22; public static const F2:int = 8; public static const lplim:int = ((1 << 26) / lowprimes[(lowprimes.length - 1)]); public static const lowprimes:Array = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 0x0101, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509]; public static const FV:Number = Math.pow(2, BI_FP); public static const BI_FP:int = 52; public static const DV:int = (1 << DB); public static const DB:int = 30; public function BigInteger(_arg1=null, _arg2:int=0){ var _local3:ByteArray; var _local4:int; super(); a = new Array(); if ((_arg1 is String)){ _arg1 = Hex.toArray(_arg1); _arg2 = 0; }; if ((_arg1 is ByteArray)){ _local3 = (_arg1 as ByteArray); _local4 = ((_arg2) || ((_local3.length - _local3.position))); fromArray(_local3, _local4); }; } public function clearBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_andnot)); } private function op_or(_arg1:int, _arg2:int):int{ return ((_arg1 | _arg2)); } public function negate():BigInteger{ var _local1:BigInteger = nbi(); ZERO.subTo(this, _local1); return (_local1); } public function andNot(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_andnot, _local2); return (_local2); } public function modPow(_arg1:BigInteger, _arg2:BigInteger):BigInteger{ var _local4:int; var _local6:IReduction; var _local12:int; var _local15:BigInteger; var _local16:BigInteger; var _local3:int = _arg1.bitLength(); var _local5:BigInteger = nbv(1); if (_local3 <= 0){ return (_local5); }; if (_local3 < 18){ _local4 = 1; } else { if (_local3 < 48){ _local4 = 3; } else { if (_local3 < 144){ _local4 = 4; } else { if (_local3 < 0x0300){ _local4 = 5; } else { _local4 = 6; }; }; }; }; if (_local3 < 8){ _local6 = new ClassicReduction(_arg2); } else { if (_arg2.isEven()){ _local6 = new BarrettReduction(_arg2); } else { _local6 = new MontgomeryReduction(_arg2); }; }; var _local7:Array = []; var _local8 = 3; var _local9:int = (_local4 - 1); var _local10:int = ((1 << _local4) - 1); _local7[1] = _local6.convert(this); if (_local4 > 1){ _local16 = new BigInteger(); _local6.sqrTo(_local7[1], _local16); while (_local8 <= _local10) { _local7[_local8] = new BigInteger(); _local6.mulTo(_local16, _local7[(_local8 - 2)], _local7[_local8]); _local8 = (_local8 + 2); }; }; var _local11:int = (_arg1.t - 1); var _local13:Boolean; var _local14:BigInteger = new BigInteger(); _local3 = (nbits(_arg1.a[_local11]) - 1); while (_local11 >= 0) { if (_local3 >= _local9){ _local12 = ((_arg1.a[_local11] >> (_local3 - _local9)) & _local10); } else { _local12 = ((_arg1.a[_local11] & ((1 << (_local3 + 1)) - 1)) << (_local9 - _local3)); if (_local11 > 0){ _local12 = (_local12 | (_arg1.a[(_local11 - 1)] >> ((DB + _local3) - _local9))); }; }; _local8 = _local4; while ((_local12 & 1) == 0) { _local12 = (_local12 >> 1); _local8--; }; _local3 = (_local3 - _local8); if (_local3 < 0){ _local3 = (_local3 + DB); _local11--; }; if (_local13){ _local7[_local12].copyTo(_local5); _local13 = false; } else { while (_local8 > 1) { _local6.sqrTo(_local5, _local14); _local6.sqrTo(_local14, _local5); _local8 = (_local8 - 2); }; if (_local8 > 0){ _local6.sqrTo(_local5, _local14); } else { _local15 = _local5; _local5 = _local14; _local14 = _local15; }; _local6.mulTo(_local14, _local7[_local12], _local5); }; while ((((_local11 >= 0)) && (((_arg1.a[_local11] & (1 << _local3)) == 0)))) { _local6.sqrTo(_local5, _local14); _local15 = _local5; _local5 = _local14; _local14 = _local15; --_local3; if (_local3 < 0){ _local3 = (DB - 1); _local11--; }; }; }; return (_local6.revert(_local5)); } public function isProbablePrime(_arg1:int):Boolean{ var _local2:int; var _local4:int; var _local5:int; var _local3:BigInteger = abs(); if ((((_local3.t == 1)) && ((_local3.a[0] <= lowprimes[(lowprimes.length - 1)])))){ _local2 = 0; while (_local2 < lowprimes.length) { if (_local3[0] == lowprimes[_local2]){ return (true); }; _local2++; }; return (false); }; if (_local3.isEven()){ return (false); }; _local2 = 1; while (_local2 < lowprimes.length) { _local4 = lowprimes[_local2]; _local5 = (_local2 + 1); while ((((_local5 < lowprimes.length)) && ((_local4 < lplim)))) { var _temp1 = _local5; _local5 = (_local5 + 1); _local4 = (_local4 * lowprimes[_temp1]); }; _local4 = _local3.modInt(_local4); while (_local2 < _local5) { var _temp2 = _local4; var _temp3 = _local2; _local2 = (_local2 + 1); if ((_temp2 % lowprimes[_temp3]) == 0){ return (false); }; }; }; return (_local3.millerRabin(_arg1)); } public function divide(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); divRemTo(_arg1, _local2, null); return (_local2); } public function mod(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = nbi(); abs().divRemTo(_arg1, null, _local2); if ((((s < 0)) && ((_local2.compareTo(ZERO) > 0)))){ _arg1.subTo(_local2, _local2); }; return (_local2); } protected function addTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int = Math.min(_arg1.t, t); while (_local3 < _local5) { _local4 = (_local4 + (this.a[_local3] + _arg1.a[_local3])); var _temp1 = _local3; _local3 = (_local3 + 1); var _local6 = _temp1; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; if (_arg1.t < t){ _local4 = (_local4 + _arg1.s); while (_local3 < t) { _local4 = (_local4 + this.a[_local3]); var _temp2 = _local3; _local3 = (_local3 + 1); _local6 = _temp2; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + s); } else { _local4 = (_local4 + s); while (_local3 < _arg1.t) { _local4 = (_local4 + _arg1.a[_local3]); var _temp3 = _local3; _local3 = (_local3 + 1); _local6 = _temp3; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + _arg1.s); }; _arg2.s = ((_local4)<0) ? -1 : 0; if (_local4 > 0){ var _temp4 = _local3; _local3 = (_local3 + 1); _local6 = _temp4; _arg2.a[_local6] = _local4; } else { if (_local4 < -1){ var _temp5 = _local3; _local3 = (_local3 + 1); _local6 = _temp5; _arg2.a[_local6] = (DV + _local4); }; }; _arg2.t = _local3; _arg2.clamp(); } protected function bitwiseTo(_arg1:BigInteger, _arg2:Function, _arg3:BigInteger):void{ var _local4:int; var _local5:int; var _local6:int = Math.min(_arg1.t, t); _local4 = 0; while (_local4 < _local6) { _arg3.a[_local4] = _arg2(this.a[_local4], _arg1.a[_local4]); _local4++; }; if (_arg1.t < t){ _local5 = (_arg1.s & DM); _local4 = _local6; while (_local4 < t) { _arg3.a[_local4] = _arg2(this.a[_local4], _local5); _local4++; }; _arg3.t = t; } else { _local5 = (s & DM); _local4 = _local6; while (_local4 < _arg1.t) { _arg3.a[_local4] = _arg2(_local5, _arg1.a[_local4]); _local4++; }; _arg3.t = _arg1.t; }; _arg3.s = _arg2(s, _arg1.s); _arg3.clamp(); } protected function modInt(_arg1:int):int{ var _local4:int; if (_arg1 <= 0){ return (0); }; var _local2:int = (DV % _arg1); var _local3:int = ((s)<0) ? (_arg1 - 1) : 0; if (t > 0){ if (_local2 == 0){ _local3 = (a[0] % _arg1); } else { _local4 = (t - 1); while (_local4 >= 0) { _local3 = (((_local2 * _local3) + a[_local4]) % _arg1); _local4--; }; }; }; return (_local3); } protected function chunkSize(_arg1:Number):int{ return (Math.floor(((Math.LN2 * DB) / Math.log(_arg1)))); } public function gcd(_arg1:BigInteger):BigInteger{ var _local6:BigInteger; var _local2:BigInteger = ((s)<0) ? negate() : clone(); var _local3:BigInteger = ((_arg1.s)<0) ? _arg1.negate() : _arg1.clone(); if (_local2.compareTo(_local3) < 0){ _local6 = _local2; _local2 = _local3; _local3 = _local6; }; var _local4:int = _local2.getLowestSetBit(); var _local5:int = _local3.getLowestSetBit(); if (_local5 < 0){ return (_local2); }; if (_local4 < _local5){ _local5 = _local4; }; if (_local5 > 0){ _local2.rShiftTo(_local5, _local2); _local3.rShiftTo(_local5, _local3); }; while (_local2.sigNum() > 0) { _local4 = _local2.getLowestSetBit(); if (_local4 > 0){ _local2.rShiftTo(_local4, _local2); }; _local4 = _local3.getLowestSetBit(); if (_local4 > 0){ _local3.rShiftTo(_local4, _local3); }; if (_local2.compareTo(_local3) >= 0){ _local2.subTo(_local3, _local2); _local2.rShiftTo(1, _local2); } else { _local3.subTo(_local2, _local3); _local3.rShiftTo(1, _local3); }; }; if (_local5 > 0){ _local3.lShiftTo(_local5, _local3); }; return (_local3); } bi_internal function dAddOffset(_arg1:int, _arg2:int):void{ while (t <= _arg2) { var _local3 = t++; a[_local3] = 0; }; a[_arg2] = (a[_arg2] + _arg1); while (a[_arg2] >= DV) { a[_arg2] = (a[_arg2] - DV); ++_arg2; if (_arg2 >= t){ _local3 = t++; a[_local3] = 0; }; _local3 = a; var _local4 = _arg2; var _local5 = (_local3[_local4] + 1); _local3[_local4] = _local5; }; } bi_internal function lShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local8:int; var _local3:int = (_arg1 % DB); var _local4:int = (DB - _local3); var _local5:int = ((1 << _local4) - 1); var _local6:int = (_arg1 / DB); var _local7 = ((s << _local3) & DM); _local8 = (t - 1); while (_local8 >= 0) { _arg2.a[((_local8 + _local6) + 1)] = ((a[_local8] >> _local4) | _local7); _local7 = ((a[_local8] & _local5) << _local3); _local8--; }; _local8 = (_local6 - 1); while (_local8 >= 0) { _arg2.a[_local8] = 0; _local8--; }; _arg2.a[_local6] = _local7; _arg2.t = ((t + _local6) + 1); _arg2.s = s; _arg2.clamp(); } public function getLowestSetBit():int{ var _local1:int; while (_local1 < t) { if (a[_local1] != 0){ return (((_local1 * DB) + lbit(a[_local1]))); }; _local1++; }; if (s < 0){ return ((t * DB)); }; return (-1); } public function subtract(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); subTo(_arg1, _local2); return (_local2); } public function primify(_arg1:int, _arg2:int):void{ if (!testBit((_arg1 - 1))){ bitwiseTo(BigInteger.ONE.shiftLeft((_arg1 - 1)), op_or, this); }; if (isEven()){ dAddOffset(1, 0); }; while (!(isProbablePrime(_arg2))) { dAddOffset(2, 0); while (bitLength() > _arg1) { subTo(BigInteger.ONE.shiftLeft((_arg1 - 1)), this); }; }; } bi_internal function multiplyLowerTo(_arg1:BigInteger, _arg2:int, _arg3:BigInteger):void{ var _local5:int; var _local4:int = Math.min((t + _arg1.t), _arg2); _arg3.s = 0; _arg3.t = _local4; while (_local4 > 0) { --_local4; var _local6 = _local4; _arg3.a[_local6] = 0; }; _local5 = (_arg3.t - t); while (_local4 < _local5) { _arg3.a[(_local4 + t)] = am(0, _arg1.a[_local4], _arg3, _local4, 0, t); _local4++; }; _local5 = Math.min(_arg1.t, _arg2); while (_local4 < _local5) { am(0, _arg1.a[_local4], _arg3, _local4, 0, (_arg2 - _local4)); _local4++; }; _arg3.clamp(); } public function modPowInt(_arg1:int, _arg2:BigInteger):BigInteger{ var _local3:IReduction; if ((((_arg1 < 0x0100)) || (_arg2.isEven()))){ _local3 = new ClassicReduction(_arg2); } else { _local3 = new MontgomeryReduction(_arg2); }; return (exp(_arg1, _local3)); } bi_internal function intAt(_arg1:String, _arg2:int):int{ return (parseInt(_arg1.charAt(_arg2), 36)); } public function testBit(_arg1:int):Boolean{ var _local2:int = Math.floor((_arg1 / DB)); if (_local2 >= t){ return (!((s == 0))); }; return (!(((a[_local2] & (1 << (_arg1 % DB))) == 0))); } bi_internal function exp(_arg1:int, _arg2:IReduction):BigInteger{ var _local7:BigInteger; if ((((_arg1 > 4294967295)) || ((_arg1 < 1)))){ return (ONE); }; var _local3:BigInteger = nbi(); var _local4:BigInteger = nbi(); var _local5:BigInteger = _arg2.convert(this); var _local6:int = (nbits(_arg1) - 1); _local5.copyTo(_local3); while (--_local6 >= 0) { _arg2.sqrTo(_local3, _local4); if ((_arg1 & (1 << _local6)) > 0){ _arg2.mulTo(_local4, _local5, _local3); } else { _local7 = _local3; _local3 = _local4; _local4 = _local7; }; }; return (_arg2.revert(_local3)); } public function toArray(_arg1:ByteArray):uint{ var _local2 = 8; var _local3:int = ((1 << 8) - 1); var _local4:int; var _local5:int = t; var _local6:int = (DB - ((_local5 * DB) % _local2)); var _local7:Boolean; var _local8:int; var _temp1 = _local5; _local5 = (_local5 - 1); if (_temp1 > 0){ if ((((_local6 < DB)) && (((a[_local5] >> _local6) > 0)))){ _local7 = true; _arg1.writeByte(_local4); _local8++; }; while (_local5 >= 0) { if (_local6 < _local2){ _local4 = ((a[_local5] & ((1 << _local6) - 1)) << (_local2 - _local6)); var _temp2 = _local4; _local5 = (_local5 - 1); _local6 = (_local6 + (DB - _local2)); _local4 = (_temp2 | (a[_local5] >> _local6)); } else { _local6 = (_local6 - _local2); _local4 = ((a[_local5] >> _local6) & _local3); if (_local6 <= 0){ _local6 = (_local6 + DB); _local5--; }; }; if (_local4 > 0){ _local7 = true; }; if (_local7){ _arg1.writeByte(_local4); _local8++; }; }; }; return (_local8); } public function dispose():void{ var _local1:Random = new Random(); var _local2:uint; while (_local2 < a.length) { a[_local2] = _local1.nextByte(); delete a[_local2]; _local2++; }; a = null; t = 0; s = 0; Memory.gc(); } private function lbit(_arg1:int):int{ if (_arg1 == 0){ return (-1); }; var _local2:int; if ((_arg1 & 0xFFFF) == 0){ _arg1 = (_arg1 >> 16); _local2 = (_local2 + 16); }; if ((_arg1 & 0xFF) == 0){ _arg1 = (_arg1 >> 8); _local2 = (_local2 + 8); }; if ((_arg1 & 15) == 0){ _arg1 = (_arg1 >> 4); _local2 = (_local2 + 4); }; if ((_arg1 & 3) == 0){ _arg1 = (_arg1 >> 2); _local2 = (_local2 + 2); }; if ((_arg1 & 1) == 0){ _local2++; }; return (_local2); } bi_internal function divRemTo(_arg1:BigInteger, _arg2:BigInteger=null, _arg3:BigInteger=null):void{ var qd:int; var m = _arg1; var q = _arg2; var r = _arg3; var pm:BigInteger = m.abs(); if (pm.t <= 0){ return; }; var pt:BigInteger = abs(); if (pt.t < pm.t){ if (q != null){ q.fromInt(0); }; if (r != null){ copyTo(r); }; return; }; if (r == null){ r = nbi(); }; var y:BigInteger = nbi(); var ts:int = s; var ms:int = m.s; var nsh:int = (DB - nbits(pm.a[(pm.t - 1)])); if (nsh > 0){ pm.lShiftTo(nsh, y); pt.lShiftTo(nsh, r); } else { pm.copyTo(y); pt.copyTo(r); }; var ys:int = y.t; var y0:int = y.a[(ys - 1)]; if (y0 == 0){ return; }; var yt:Number = ((y0 * (1 << F1)) + ((ys)>1) ? (y.a[(ys - 2)] >> F2) : 0); var d1:Number = (FV / yt); var d2:Number = ((1 << F1) / yt); var e:Number = (1 << F2); var i:int = r.t; var j:int = (i - ys); var t:BigInteger = ((q)==null) ? nbi() : q; y.dlShiftTo(j, t); if (r.compareTo(t) >= 0){ var _local5 = r.t++; r.a[_local5] = 1; r.subTo(t, r); }; ONE.dlShiftTo(ys, t); t.subTo(y, y); while (y.t < ys) { y.(y.t++); //not popped }; while ((j = (j - 1)), (j - 1) >= 0) { i = (i - 1); qd = ((r.a[(i - 1)])==y0) ? DM : ((Number(r.a[i]) * d1) + ((Number(r.a[(i - 1)]) + e) * d2)); if ((r.a[i] = (r.a[i] + y.am(0, qd, r, j, 0, ys))) < qd){ y.dlShiftTo(j, t); r.subTo(t, r); while ((qd = (qd - 1)), r.a[i] < (qd - 1)) { r.subTo(t, r); }; }; }; if (q != null){ r.drShiftTo(ys, q); if (ts != ms){ ZERO.subTo(q, q); }; }; r.t = ys; r.clamp(); if (nsh > 0){ r.rShiftTo(nsh, r); }; if (ts < 0){ ZERO.subTo(r, r); }; } public function remainder(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); divRemTo(_arg1, null, _local2); return (_local2); } bi_internal function multiplyUpperTo(_arg1:BigInteger, _arg2:int, _arg3:BigInteger):void{ _arg2--; var _local4:int = (_arg3.t = ((t + _arg1.t) - _arg2)); _arg3.s = 0; while (--_local4 >= 0) { _arg3.a[_local4] = 0; }; _local4 = Math.max((_arg2 - t), 0); while (_local4 < _arg1.t) { _arg3.a[((t + _local4) - _arg2)] = am((_arg2 - _local4), _arg1.a[_local4], _arg3, 0, 0, ((t + _local4) - _arg2)); _local4++; }; _arg3.clamp(); _arg3.drShiftTo(1, _arg3); } public function divideAndRemainder(_arg1:BigInteger):Array{ var _local2:BigInteger = new BigInteger(); var _local3:BigInteger = new BigInteger(); divRemTo(_arg1, _local2, _local3); return ([_local2, _local3]); } public function valueOf():Number{ var _local1:Number = 1; var _local2:Number = 0; var _local3:uint; while (_local3 < t) { _local2 = (_local2 + (a[_local3] * _local1)); _local1 = (_local1 * DV); _local3++; }; return (_local2); } public function shiftLeft(_arg1:int):BigInteger{ var _local2:BigInteger = new BigInteger(); if (_arg1 < 0){ rShiftTo(-(_arg1), _local2); } else { lShiftTo(_arg1, _local2); }; return (_local2); } public function multiply(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); multiplyTo(_arg1, _local2); return (_local2); } bi_internal function am(_arg1:int, _arg2:int, _arg3:BigInteger, _arg4:int, _arg5:int, _arg6:int):int{ var _local9:int; var _local10:int; var _local11:int; var _local7 = (_arg2 & 32767); var _local8 = (_arg2 >> 15); while (--_arg6 >= 0) { _local9 = (a[_arg1] & 32767); var _temp1 = _arg1; _arg1 = (_arg1 + 1); _local10 = (a[_temp1] >> 15); _local11 = ((_local8 * _local9) + (_local10 * _local7)); _local9 = ((((_local7 * _local9) + ((_local11 & 32767) << 15)) + _arg3.a[_arg4]) + (_arg5 & 1073741823)); _arg5 = ((((_local9 >>> 30) + (_local11 >>> 15)) + (_local8 * _local10)) + (_arg5 >>> 30)); var _temp2 = _arg4; _arg4 = (_arg4 + 1); var _local12 = _temp2; _arg3.a[_local12] = (_local9 & 1073741823); }; return (_arg5); } bi_internal function drShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; _local3 = _arg1; while (_local3 < t) { _arg2.a[(_local3 - _arg1)] = a[_local3]; _local3++; }; _arg2.t = Math.max((t - _arg1), 0); _arg2.s = s; } public function add(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); addTo(_arg1, _local2); return (_local2); } protected function nbi(){ return (new BigInteger()); } protected function millerRabin(_arg1:int):Boolean{ var _local7:BigInteger; var _local8:int; var _local2:BigInteger = subtract(BigInteger.ONE); var _local3:int = _local2.getLowestSetBit(); if (_local3 <= 0){ return (false); }; var _local4:BigInteger = _local2.shiftRight(_local3); _arg1 = ((_arg1 + 1) >> 1); if (_arg1 > lowprimes.length){ _arg1 = lowprimes.length; }; var _local5:BigInteger = new BigInteger(); var _local6:int; while (_local6 < _arg1) { _local5.fromInt(lowprimes[_local6]); _local7 = _local5.modPow(_local4, this); if (((!((_local7.compareTo(BigInteger.ONE) == 0))) && (!((_local7.compareTo(_local2) == 0))))){ _local8 = 1; while ((((_local8++ < _local3)) && (!((_local7.compareTo(_local2) == 0))))) { _local7 = _local7.modPowInt(2, this); if (_local7.compareTo(BigInteger.ONE) == 0){ return (false); }; }; if (_local7.compareTo(_local2) != 0){ return (false); }; }; _local6++; }; return (true); } bi_internal function dMultiply(_arg1:int):void{ a[t] = am(0, (_arg1 - 1), this, 0, 0, t); t++; clamp(); } private function op_andnot(_arg1:int, _arg2:int):int{ return ((_arg1 & ~(_arg2))); } bi_internal function clamp():void{ var _local1 = (s & DM); while ((((t > 0)) && ((a[(t - 1)] == _local1)))) { t--; }; } bi_internal function invDigit():int{ if (t < 1){ return (0); }; var _local1:int = a[0]; if ((_local1 & 1) == 0){ return (0); }; var _local2 = (_local1 & 3); _local2 = ((_local2 * (2 - ((_local1 & 15) * _local2))) & 15); _local2 = ((_local2 * (2 - ((_local1 & 0xFF) * _local2))) & 0xFF); _local2 = ((_local2 * (2 - (((_local1 & 0xFFFF) * _local2) & 0xFFFF))) & 0xFFFF); _local2 = ((_local2 * (2 - ((_local1 * _local2) % DV))) % DV); return (((_local2)>0) ? (DV - _local2) : -(_local2)); } protected function changeBit(_arg1:int, _arg2:Function):BigInteger{ var _local3:BigInteger = BigInteger.ONE.shiftLeft(_arg1); bitwiseTo(_local3, _arg2, _local3); return (_local3); } public function equals(_arg1:BigInteger):Boolean{ return ((compareTo(_arg1) == 0)); } public function compareTo(_arg1:BigInteger):int{ var _local2:int = (s - _arg1.s); if (_local2 != 0){ return (_local2); }; var _local3:int = t; _local2 = (_local3 - _arg1.t); if (_local2 != 0){ return (_local2); }; while (--_local3 >= 0) { _local2 = (a[_local3] - _arg1.a[_local3]); if (_local2 != 0){ return (_local2); }; }; return (0); } public function shiftRight(_arg1:int):BigInteger{ var _local2:BigInteger = new BigInteger(); if (_arg1 < 0){ lShiftTo(-(_arg1), _local2); } else { rShiftTo(_arg1, _local2); }; return (_local2); } bi_internal function multiplyTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:BigInteger = abs(); var _local4:BigInteger = _arg1.abs(); var _local5:int = _local3.t; _arg2.t = (_local5 + _local4.t); while (--_local5 >= 0) { _arg2.a[_local5] = 0; }; _local5 = 0; while (_local5 < _local4.t) { _arg2.a[(_local5 + _local3.t)] = _local3.am(0, _local4.a[_local5], _arg2, _local5, 0, _local3.t); _local5++; }; _arg2.s = 0; _arg2.clamp(); if (s != _arg1.s){ ZERO.subTo(_arg2, _arg2); }; } public function bitCount():int{ var _local1:int; var _local2 = (s & DM); var _local3:int; while (_local3 < t) { _local1 = (_local1 + cbit((a[_local3] ^ _local2))); _local3++; }; return (_local1); } protected function toRadix(_arg1:uint=10):String{ if ((((((sigNum() == 0)) || ((_arg1 < 2)))) || ((_arg1 > 32)))){ return ("0"); }; var _local2:int = chunkSize(_arg1); var _local3:Number = Math.pow(_arg1, _local2); var _local4:BigInteger = nbv(_local3); var _local5:BigInteger = nbi(); var _local6:BigInteger = nbi(); var _local7 = ""; divRemTo(_local4, _local5, _local6); while (_local5.sigNum() > 0) { _local7 = ((_local3 + _local6.intValue()).toString(_arg1).substr(1) + _local7); _local5.divRemTo(_local4, _local5, _local6); }; return ((_local6.intValue().toString(_arg1) + _local7)); } private function cbit(_arg1:int):int{ var _local2:uint; while (_arg1 != 0) { _arg1 = (_arg1 & (_arg1 - 1)); _local2++; }; return (_local2); } bi_internal function rShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local7:int; _arg2.s = s; var _local3:int = (_arg1 / DB); if (_local3 >= t){ _arg2.t = 0; return; }; var _local4:int = (_arg1 % DB); var _local5:int = (DB - _local4); var _local6:int = ((1 << _local4) - 1); _arg2.a[0] = (a[_local3] >> _local4); _local7 = (_local3 + 1); while (_local7 < t) { _arg2.a[((_local7 - _local3) - 1)] = (_arg2.a[((_local7 - _local3) - 1)] | ((a[_local7] & _local6) << _local5)); _arg2.a[(_local7 - _local3)] = (a[_local7] >> _local4); _local7++; }; if (_local4 > 0){ _arg2.a[((t - _local3) - 1)] = (_arg2.a[((t - _local3) - 1)] | ((s & _local6) << _local5)); }; _arg2.t = (t - _local3); _arg2.clamp(); } public function modInverse(_arg1:BigInteger):BigInteger{ var _local2:Boolean = _arg1.isEven(); if (((((isEven()) && (_local2))) || ((_arg1.sigNum() == 0)))){ return (BigInteger.ZERO); }; var _local3:BigInteger = _arg1.clone(); var _local4:BigInteger = clone(); var _local5:BigInteger = nbv(1); var _local6:BigInteger = nbv(0); var _local7:BigInteger = nbv(0); var _local8:BigInteger = nbv(1); while (_local3.sigNum() != 0) { while (_local3.isEven()) { _local3.rShiftTo(1, _local3); if (_local2){ if (((!(_local5.isEven())) || (!(_local6.isEven())))){ _local5.addTo(this, _local5); _local6.subTo(_arg1, _local6); }; _local5.rShiftTo(1, _local5); } else { if (!_local6.isEven()){ _local6.subTo(_arg1, _local6); }; }; _local6.rShiftTo(1, _local6); }; while (_local4.isEven()) { _local4.rShiftTo(1, _local4); if (_local2){ if (((!(_local7.isEven())) || (!(_local8.isEven())))){ _local7.addTo(this, _local7); _local8.subTo(_arg1, _local8); }; _local7.rShiftTo(1, _local7); } else { if (!_local8.isEven()){ _local8.subTo(_arg1, _local8); }; }; _local8.rShiftTo(1, _local8); }; if (_local3.compareTo(_local4) >= 0){ _local3.subTo(_local4, _local3); if (_local2){ _local5.subTo(_local7, _local5); }; _local6.subTo(_local8, _local6); } else { _local4.subTo(_local3, _local4); if (_local2){ _local7.subTo(_local5, _local7); }; _local8.subTo(_local6, _local8); }; }; if (_local4.compareTo(BigInteger.ONE) != 0){ return (BigInteger.ZERO); }; if (_local8.compareTo(_arg1) >= 0){ return (_local8.subtract(_arg1)); }; if (_local8.sigNum() < 0){ _local8.addTo(_arg1, _local8); } else { return (_local8); }; if (_local8.sigNum() < 0){ return (_local8.add(_arg1)); }; return (_local8); } bi_internal function fromArray(_arg1:ByteArray, _arg2:int):void{ var _local7:int; var _local3:int = _arg1.position; var _local4:int = (_local3 + _arg2); var _local5:int; var _local6 = 8; t = 0; s = 0; while (--_local4 >= _local3) { _local7 = ((_local4 < _arg1.length)) ? _arg1[_local4] : 0; if (_local5 == 0){ var _local8 = t++; a[_local8] = _local7; } else { if ((_local5 + _local6) > DB){ a[(t - 1)] = (a[(t - 1)] | ((_local7 & ((1 << (DB - _local5)) - 1)) << _local5)); _local8 = t++; a[_local8] = (_local7 >> (DB - _local5)); } else { a[(t - 1)] = (a[(t - 1)] | (_local7 << _local5)); }; }; _local5 = (_local5 + _local6); if (_local5 >= DB){ _local5 = (_local5 - DB); }; }; clamp(); _arg1.position = Math.min((_local3 + _arg2), _arg1.length); } bi_internal function copyTo(_arg1:BigInteger):void{ var _local2:int = (t - 1); while (_local2 >= 0) { _arg1.a[_local2] = a[_local2]; _local2--; }; _arg1.t = t; _arg1.s = s; } public function intValue():int{ if (s < 0){ if (t == 1){ return ((a[0] - DV)); }; if (t == 0){ return (-1); }; } else { if (t == 1){ return (a[0]); }; if (t == 0){ return (0); }; }; return ((((a[1] & ((1 << (32 - DB)) - 1)) << DB) | a[0])); } public function min(_arg1:BigInteger):BigInteger{ return (((compareTo(_arg1))<0) ? this : _arg1); } public function bitLength():int{ if (t <= 0){ return (0); }; return (((DB * (t - 1)) + nbits((a[(t - 1)] ^ (s & DM))))); } public function shortValue():int{ return (((t)==0) ? s : ((a[0] << 16) >> 16)); } public function and(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_and, _local2); return (_local2); } public function byteValue():int{ return (((t)==0) ? s : ((a[0] << 24) >> 24)); } public function not():BigInteger{ var _local1:BigInteger = new BigInteger(); var _local2:int; while (_local2 < t) { _local1[_local2] = (DM & ~(a[_local2])); _local2++; }; _local1.t = t; _local1.s = ~(s); return (_local1); } bi_internal function subTo(_arg1:BigInteger, _arg2:BigInteger):void{ var _local3:int; var _local4:int; var _local5:int = Math.min(_arg1.t, t); while (_local3 < _local5) { _local4 = (_local4 + (a[_local3] - _arg1.a[_local3])); var _temp1 = _local3; _local3 = (_local3 + 1); var _local6 = _temp1; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; if (_arg1.t < t){ _local4 = (_local4 - _arg1.s); while (_local3 < t) { _local4 = (_local4 + a[_local3]); var _temp2 = _local3; _local3 = (_local3 + 1); _local6 = _temp2; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 + s); } else { _local4 = (_local4 + s); while (_local3 < _arg1.t) { _local4 = (_local4 - _arg1.a[_local3]); var _temp3 = _local3; _local3 = (_local3 + 1); _local6 = _temp3; _arg2.a[_local6] = (_local4 & DM); _local4 = (_local4 >> DB); }; _local4 = (_local4 - _arg1.s); }; _arg2.s = ((_local4)<0) ? -1 : 0; if (_local4 < -1){ var _temp4 = _local3; _local3 = (_local3 + 1); _local6 = _temp4; _arg2.a[_local6] = (DV + _local4); } else { if (_local4 > 0){ var _temp5 = _local3; _local3 = (_local3 + 1); _local6 = _temp5; _arg2.a[_local6] = _local4; }; }; _arg2.t = _local3; _arg2.clamp(); } public function clone():BigInteger{ var _local1:BigInteger = new BigInteger(); this.copyTo(_local1); return (_local1); } public function pow(_arg1:int):BigInteger{ return (exp(_arg1, new NullReduction())); } public function flipBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_xor)); } public function xor(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_xor, _local2); return (_local2); } public function or(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); bitwiseTo(_arg1, op_or, _local2); return (_local2); } public function max(_arg1:BigInteger):BigInteger{ return (((compareTo(_arg1))>0) ? this : _arg1); } bi_internal function fromInt(_arg1:int):void{ t = 1; s = ((_arg1)<0) ? -1 : 0; if (_arg1 > 0){ a[0] = _arg1; } else { if (_arg1 < -1){ a[0] = (_arg1 + DV); } else { t = 0; }; }; } bi_internal function isEven():Boolean{ return ((((t)>0) ? (a[0] & 1) : s == 0)); } public function toString(_arg1:Number=16):String{ var _local2:int; if (s < 0){ return (("-" + negate().toString(_arg1))); }; switch (_arg1){ case 2: _local2 = 1; break; case 4: _local2 = 2; break; case 8: _local2 = 3; break; case 16: _local2 = 4; break; case 32: _local2 = 5; break; }; var _local3:int = ((1 << _local2) - 1); var _local4:int; var _local5:Boolean; var _local6 = ""; var _local7:int = t; var _local8:int = (DB - ((_local7 * DB) % _local2)); var _temp1 = _local7; _local7 = (_local7 - 1); if (_temp1 > 0){ if ((((_local8 < DB)) && (((a[_local7] >> _local8) > 0)))){ _local5 = true; _local6 = _local4.toString(36); }; while (_local7 >= 0) { if (_local8 < _local2){ _local4 = ((a[_local7] & ((1 << _local8) - 1)) << (_local2 - _local8)); var _temp2 = _local4; _local7 = (_local7 - 1); _local8 = (_local8 + (DB - _local2)); _local4 = (_temp2 | (a[_local7] >> _local8)); } else { _local8 = (_local8 - _local2); _local4 = ((a[_local7] >> _local8) & _local3); if (_local8 <= 0){ _local8 = (_local8 + DB); _local7--; }; }; if (_local4 > 0){ _local5 = true; }; if (_local5){ _local6 = (_local6 + _local4.toString(36)); }; }; }; return ((_local5) ? _local6 : "0"); } public function setBit(_arg1:int):BigInteger{ return (changeBit(_arg1, op_or)); } public function abs():BigInteger{ return (((s)<0) ? negate() : this); } bi_internal function nbits(_arg1:int):int{ var _local3:int; var _local2 = 1; _local3 = (_arg1 >>> 16); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 16); }; _local3 = (_arg1 >> 8); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 8); }; _local3 = (_arg1 >> 4); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 4); }; _local3 = (_arg1 >> 2); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 2); }; _local3 = (_arg1 >> 1); if (_local3 != 0){ _arg1 = _local3; _local2 = (_local2 + 1); }; return (_local2); } public function sigNum():int{ if (s < 0){ return (-1); }; if ((((t <= 0)) || ((((t == 1)) && ((a[0] <= 0)))))){ return (0); }; return (1); } public function toByteArray():ByteArray{ var _local4:int; var _local1:int = t; var _local2:ByteArray = new ByteArray(); _local2[0] = s; var _local3:int = (DB - ((_local1 * DB) % 8)); var _local5:int; var _temp1 = _local1; _local1 = (_local1 - 1); if (_temp1 > 0){ if ((((_local3 < DB)) && (!(((a[_local1] >> _local3) == ((s & DM) >> _local3)))))){ var _temp2 = _local5; _local5 = (_local5 + 1); var _local6 = _temp2; _local2[_local6] = (_local4 | (s << (DB - _local3))); }; while (_local1 >= 0) { if (_local3 < 8){ _local4 = ((a[_local1] & ((1 << _local3) - 1)) << (8 - _local3)); var _temp3 = _local4; _local1 = (_local1 - 1); _local3 = (_local3 + (DB - 8)); _local4 = (_temp3 | (a[_local1] >> _local3)); } else { _local3 = (_local3 - 8); _local4 = ((a[_local1] >> _local3) & 0xFF); if (_local3 <= 0){ _local3 = (_local3 + DB); _local1--; }; }; if ((_local4 & 128) != 0){ _local4 = (_local4 | -256); }; if ((((_local5 == 0)) && (!(((s & 128) == (_local4 & 128)))))){ _local5++; }; if ((((_local5 > 0)) || (!((_local4 == s))))){ var _temp4 = _local5; _local5 = (_local5 + 1); _local6 = _temp4; _local2[_local6] = _local4; }; }; }; return (_local2); } bi_internal function squareTo(_arg1:BigInteger):void{ var _local4:int; var _local2:BigInteger = abs(); var _local3:int = (_arg1.t = (2 * _local2.t)); while (--_local3 >= 0) { _arg1.a[_local3] = 0; }; _local3 = 0; while (_local3 < (_local2.t - 1)) { _local4 = _local2.am(_local3, _local2.a[_local3], _arg1, (2 * _local3), 0, 1); if ((_arg1.a[(_local3 + _local2.t)] = (_arg1.a[(_local3 + _local2.t)] + _local2.am((_local3 + 1), (2 * _local2.a[_local3]), _arg1, ((2 * _local3) + 1), _local4, ((_local2.t - _local3) - 1)))) >= DV){ _arg1.a[(_local3 + _local2.t)] = (_arg1.a[(_local3 + _local2.t)] - DV); _arg1.a[((_local3 + _local2.t) + 1)] = 1; }; _local3++; }; if (_arg1.t > 0){ _arg1.a[(_arg1.t - 1)] = (_arg1.a[(_arg1.t - 1)] + _local2.am(_local3, _local2.a[_local3], _arg1, (2 * _local3), 0, 1)); }; _arg1.s = 0; _arg1.clamp(); } private function op_and(_arg1:int, _arg2:int):int{ return ((_arg1 & _arg2)); } protected function fromRadix(_arg1:String, _arg2:int=10):void{ var _local9:int; fromInt(0); var _local3:int = chunkSize(_arg2); var _local4:Number = Math.pow(_arg2, _local3); var _local5:Boolean; var _local6:int; var _local7:int; var _local8:int; while (_local8 < _arg1.length) { _local9 = intAt(_arg1, _local8); if (_local9 < 0){ if ((((_arg1.charAt(_local8) == "-")) && ((sigNum() == 0)))){ _local5 = true; }; } else { _local7 = ((_arg2 * _local7) + _local9); ++_local6; if (_local6 >= _local3){ dMultiply(_local4); dAddOffset(_local7, 0); _local6 = 0; _local7 = 0; }; }; _local8++; }; if (_local6 > 0){ dMultiply(Math.pow(_arg2, _local6)); dAddOffset(_local7, 0); }; if (_local5){ BigInteger.ZERO.subTo(this, this); }; } bi_internal function dlShiftTo(_arg1:int, _arg2:BigInteger):void{ var _local3:int; _local3 = (t - 1); while (_local3 >= 0) { _arg2.a[(_local3 + _arg1)] = a[_local3]; _local3--; }; _local3 = (_arg1 - 1); while (_local3 >= 0) { _arg2.a[_local3] = 0; _local3--; }; _arg2.t = (t + _arg1); _arg2.s = s; } private function op_xor(_arg1:int, _arg2:int):int{ return ((_arg1 ^ _arg2)); } public static function nbv(_arg1:int):BigInteger{ var _local2:BigInteger = new (BigInteger); _local2.fromInt(_arg1); return (_local2); } } }//package com.hurlant.math
Section 176
//ClassicReduction (com.hurlant.math.ClassicReduction) package com.hurlant.math { import com.hurlant.math.*; class ClassicReduction implements IReduction { private var m:BigInteger; function ClassicReduction(_arg1:BigInteger){ this.m = _arg1; } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function reduce(_arg1:BigInteger):void{ _arg1.divRemTo(m, null, _arg1); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function convert(_arg1:BigInteger):BigInteger{ if ((((_arg1.s < 0)) || ((_arg1.compareTo(m) >= 0)))){ return (_arg1.mod(m)); }; return (_arg1); } } }//package com.hurlant.math
Section 177
//IReduction (com.hurlant.math.IReduction) package com.hurlant.math { import com.hurlant.math.*; interface IReduction { function revert(_arg1:BigInteger):BigInteger; function reduce(_arg1:BigInteger):void; function convert(_arg1:BigInteger):BigInteger; function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void; function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void; } }//package com.hurlant.math
Section 178
//MontgomeryReduction (com.hurlant.math.MontgomeryReduction) package com.hurlant.math { import com.hurlant.math.*; class MontgomeryReduction implements IReduction { private var mp:int; private var mph:int; private var mpl:int; private var mt2:int; private var m:BigInteger; private var um:int; function MontgomeryReduction(_arg1:BigInteger){ this.m = _arg1; mp = _arg1.invDigit(); mpl = (mp & 32767); mph = (mp >> 15); um = ((1 << (BigInteger.DB - 15)) - 1); mt2 = (2 * _arg1.t); } public function convert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); _arg1.abs().dlShiftTo(m.t, _local2); _local2.divRemTo(m, null, _local2); if ((((_arg1.s < 0)) && ((_local2.compareTo(BigInteger.ZERO) > 0)))){ m.subTo(_local2, _local2); }; return (_local2); } public function revert(_arg1:BigInteger):BigInteger{ var _local2:BigInteger = new BigInteger(); _arg1.copyTo(_local2); reduce(_local2); return (_local2); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); reduce(_arg2); } public function reduce(_arg1:BigInteger):void{ var _local3:int; var _local4:int; while (_arg1.t <= mt2) { var _local5 = _arg1.t++; _arg1.a[_local5] = 0; }; var _local2:int; while (_local2 < m.t) { _local3 = (_arg1.a[_local2] & 32767); _local4 = (((_local3 * mpl) + ((((_local3 * mph) + ((_arg1.a[_local2] >> 15) * mpl)) & um) << 15)) & BigInteger.DM); _local3 = (_local2 + m.t); _arg1.a[_local3] = (_arg1.a[_local3] + m.am(0, _local4, _arg1, _local2, 0, m.t)); while (_arg1.a[_local3] >= BigInteger.DV) { _arg1.a[_local3] = (_arg1.a[_local3] - BigInteger.DV); _local5 = _arg1.a; ++_local3; var _local6 = _local3; var _local7 = (_local5[_local6] + 1); _local5[_local6] = _local7; }; _local2++; }; _arg1.clamp(); _arg1.drShiftTo(m.t, _arg1); if (_arg1.compareTo(m) >= 0){ _arg1.subTo(m, _arg1); }; } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); reduce(_arg3); } } }//package com.hurlant.math
Section 179
//NullReduction (com.hurlant.math.NullReduction) package com.hurlant.math { public class NullReduction implements IReduction { public function convert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function sqrTo(_arg1:BigInteger, _arg2:BigInteger):void{ _arg1.squareTo(_arg2); } public function mulTo(_arg1:BigInteger, _arg2:BigInteger, _arg3:BigInteger):void{ _arg1.multiplyTo(_arg2, _arg3); } public function revert(_arg1:BigInteger):BigInteger{ return (_arg1); } public function reduce(_arg1:BigInteger):void{ } } }//package com.hurlant.math
Section 180
//ByteString (com.hurlant.util.der.ByteString) package com.hurlant.util.der { import flash.utils.*; import com.hurlant.util.*; public class ByteString extends ByteArray implements IAsn1Type { private var type:uint; private var len:uint; public function ByteString(_arg1:uint=4, _arg2:uint=0){ this.type = _arg1; this.len = _arg2; } public function getType():uint{ return (type); } public function toDER():ByteArray{ return (DER.wrapDER(type, this)); } public function getLength():uint{ return (len); } override public function toString():String{ return ((((((((DER.indent + "ByteString[") + type) + "][") + len) + "][") + Hex.fromArray(this)) + "]")); } } }//package com.hurlant.util.der
Section 181
//DER (com.hurlant.util.der.DER) package com.hurlant.util.der { import flash.utils.*; public class DER { public static var indent:String = ""; public static function parse(_arg1:ByteArray, _arg2=null):IAsn1Type{ var _local3:int; var _local5:int; var _local7:ByteArray; var _local8:int; var _local9:int; var _local10:Sequence; var _local11:Array; var _local12:Set; var _local13:ByteString; var _local14:PrintableString; var _local15:UTCTime; var _local16:Object; var _local17:Boolean; var _local18:Boolean; var _local19:String; var _local20:*; var _local21:IAsn1Type; var _local22:int; var _local23:ByteArray; _local3 = _arg1.readUnsignedByte(); var _local4 = !(((_local3 & 32) == 0)); _local3 = (_local3 & 31); _local5 = _arg1.readUnsignedByte(); var _local6:int; if (_local5 >= 128){ _local8 = (_local5 & 127); _local5 = 0; while (_local8 > 0) { _local6 = _arg1.readUnsignedByte(); _local5 = ((_local5 << 8) | _local6); _local8--; }; }; switch (_local3){ case 0: case 16: _local9 = _arg1.position; _local10 = new Sequence(_local3, _local5); _local11 = (_arg2 as Array); if (_local11 != null){ _local11 = _local11.concat(); }; while (_arg1.position < (_local9 + _local5)) { _local16 = null; if (_local11 != null){ _local16 = _local11.shift(); }; if (_local16 != null){ while (((_local16) && (_local16.optional))) { _local17 = (_local16.value is Array); _local18 = isConstructedType(_arg1); if (_local17 != _local18){ _local10.push(_local16.defaultValue); _local10[_local16.name] = _local16.defaultValue; _local16 = _local11.shift(); } else { break; }; }; }; if (_local16 != null){ _local19 = _local16.name; _local20 = _local16.value; if (_local16.extract){ _local22 = getLengthOfNextElement(_arg1); _local23 = new ByteArray(); _local23.writeBytes(_arg1, _arg1.position, _local22); _local10[(_local19 + "_bin")] = _local23; }; _local21 = DER.parse(_arg1, _local20); _local10.push(_local21); _local10[_local19] = _local21; } else { _local10.push(DER.parse(_arg1)); }; }; return (_local10); case 17: _local9 = _arg1.position; _local12 = new Set(_local3, _local5); while (_arg1.position < (_local9 + _local5)) { _local12.push(DER.parse(_arg1)); }; return (_local12); case 2: _local7 = new ByteArray(); _arg1.readBytes(_local7, 0, _local5); _local7.position = 0; return (new Integer(_local3, _local5, _local7)); case 6: _local7 = new ByteArray(); _arg1.readBytes(_local7, 0, _local5); _local7.position = 0; return (new ObjectIdentifier(_local3, _local5, _local7)); default: trace(("I DONT KNOW HOW TO HANDLE DER stuff of TYPE " + _local3)); case 3: if (_arg1[_arg1.position] == 0){ _arg1.position++; _local5--; }; case 4: _local13 = new ByteString(_local3, _local5); _arg1.readBytes(_local13, 0, _local5); return (_local13); case 5: return (null); case 19: _local14 = new PrintableString(_local3, _local5); _local14.setString(_arg1.readMultiByte(_local5, "US-ASCII")); return (_local14); case 34: case 20: _local14 = new PrintableString(_local3, _local5); _local14.setString(_arg1.readMultiByte(_local5, "latin1")); return (_local14); case 23: _local15 = new UTCTime(_local3, _local5); _local15.setUTCTime(_arg1.readMultiByte(_local5, "US-ASCII")); return (_local15); }; } private static function isConstructedType(_arg1:ByteArray):Boolean{ var _local2:int = _arg1[_arg1.position]; return (!(((_local2 & 32) == 0))); } public static function wrapDER(_arg1:int, _arg2:ByteArray):ByteArray{ var _local3:ByteArray = new ByteArray(); _local3.writeByte(_arg1); var _local4:int = _arg2.length; if (_local4 < 128){ _local3.writeByte(_local4); } else { if (_local4 < 0x0100){ _local3.writeByte((1 | 128)); _local3.writeByte(_local4); } else { if (_local4 < 65536){ _local3.writeByte((2 | 128)); _local3.writeByte((_local4 >> 8)); _local3.writeByte(_local4); } else { if (_local4 < (65536 * 0x0100)){ _local3.writeByte((3 | 128)); _local3.writeByte((_local4 >> 16)); _local3.writeByte((_local4 >> 8)); _local3.writeByte(_local4); } else { _local3.writeByte((4 | 128)); _local3.writeByte((_local4 >> 24)); _local3.writeByte((_local4 >> 16)); _local3.writeByte((_local4 >> 8)); _local3.writeByte(_local4); }; }; }; }; _local3.writeBytes(_arg2); _local3.position = 0; return (_local3); } private static function getLengthOfNextElement(_arg1:ByteArray):int{ var _local4:int; var _local2:uint = _arg1.position; _arg1.position++; var _local3:int = _arg1.readUnsignedByte(); if (_local3 >= 128){ _local4 = (_local3 & 127); _local3 = 0; while (_local4 > 0) { _local3 = ((_local3 << 8) | _arg1.readUnsignedByte()); _local4--; }; }; _local3 = (_local3 + (_arg1.position - _local2)); _arg1.position = _local2; return (_local3); } } }//package com.hurlant.util.der
Section 182
//IAsn1Type (com.hurlant.util.der.IAsn1Type) package com.hurlant.util.der { import flash.utils.*; public interface IAsn1Type { function getType():uint; function getLength():uint; function toDER():ByteArray; } }//package com.hurlant.util.der
Section 183
//Integer (com.hurlant.util.der.Integer) package com.hurlant.util.der { import com.hurlant.math.*; import flash.utils.*; public class Integer extends BigInteger implements IAsn1Type { private var type:uint; private var len:uint; public function Integer(_arg1:uint, _arg2:uint, _arg3:ByteArray){ this.type = _arg1; this.len = _arg2; super(_arg3); } public function getType():uint{ return (type); } public function toDER():ByteArray{ return (null); } public function getLength():uint{ return (len); } override public function toString(_arg1:Number=0):String{ return ((((((((DER.indent + "Integer[") + type) + "][") + len) + "][") + super.toString(16)) + "]")); } } }//package com.hurlant.util.der
Section 184
//ObjectIdentifier (com.hurlant.util.der.ObjectIdentifier) package com.hurlant.util.der { import flash.utils.*; public class ObjectIdentifier implements IAsn1Type { private var oid:Array; private var len:uint; private var type:uint; public function ObjectIdentifier(_arg1:uint, _arg2:uint, _arg3){ this.type = _arg1; this.len = _arg2; if ((_arg3 is ByteArray)){ parse((_arg3 as ByteArray)); } else { if ((_arg3 is String)){ generate((_arg3 as String)); } else { throw (new Error("Invalid call to new ObjectIdentifier")); }; }; } public function dump():String{ return ((((((("OID[" + type) + "][") + len) + "][") + toString()) + "]")); } public function getLength():uint{ return (len); } private function generate(_arg1:String):void{ oid = _arg1.split("."); } public function toString():String{ return ((DER.indent + oid.join("."))); } public function getType():uint{ return (type); } private function parse(_arg1:ByteArray):void{ var _local5:Boolean; var _local2:uint = _arg1.readUnsignedByte(); var _local3:Array = []; _local3.push(uint((_local2 / 40))); _local3.push(uint((_local2 % 40))); var _local4:uint; while (_arg1.bytesAvailable > 0) { _local2 = _arg1.readUnsignedByte(); _local5 = ((_local2 & 128) == 0); _local2 = (_local2 & 127); _local4 = ((_local4 * 128) + _local2); if (_local5){ _local3.push(_local4); _local4 = 0; }; }; oid = _local3; } public function toDER():ByteArray{ var _local4:int; var _local1:Array = []; _local1[0] = ((oid[0] * 40) + oid[1]); var _local2 = 2; while (_local2 < oid.length) { _local4 = parseInt(oid[_local2]); if (_local4 < 128){ _local1.push(_local4); } else { if (_local4 < (128 * 128)){ _local1.push(((_local4 >> 7) | 128)); _local1.push((_local4 & 127)); } else { if (_local4 < ((128 * 128) * 128)){ _local1.push(((_local4 >> 14) | 128)); _local1.push((((_local4 >> 7) & 127) | 128)); _local1.push((_local4 & 127)); } else { if (_local4 < (((128 * 128) * 128) * 128)){ _local1.push(((_local4 >> 21) | 128)); _local1.push((((_local4 >> 14) & 127) | 128)); _local1.push((((_local4 >> 7) & 127) | 128)); _local1.push((_local4 & 127)); } else { throw (new Error("OID element bigger than we thought. :(")); }; }; }; }; _local2++; }; len = _local1.length; if (type == 0){ type = 6; }; _local1.unshift(len); _local1.unshift(type); var _local3:ByteArray = new ByteArray(); _local2 = 0; while (_local2 < _local1.length) { _local3[_local2] = _local1[_local2]; _local2++; }; return (_local3); } } }//package com.hurlant.util.der
Section 185
//OID (com.hurlant.util.der.OID) package com.hurlant.util.der { public class OID { public static const SHA1_WITH_RSA_ENCRYPTION:String = "1.2.840.113549.1.1.5"; public static const RSA_ENCRYPTION:String = "1.2.840.113549.1.1.1"; public static const COUNTRY_NAME:String = "2.5.4.6"; public static const MD2_ALGORITHM:String = "1.2.840.113549.2.2"; public static const MD5_ALGORITHM:String = "1.2.840.113549.2.5"; public static const DSA_WITH_SHA1:String = "1.2.840.10040.4.3"; public static const DSA:String = "1.2.840.10040.4.1"; public static const MD2_WITH_RSA_ENCRYPTION:String = "1.2.840.113549.1.1.2"; public static const STATE_NAME:String = "2.5.4.8"; public static const MD5_WITH_RSA_ENCRYPTION:String = "1.2.840.113549.1.1.4"; public static const ORGANIZATION_NAME:String = "2.5.4.10"; public static const COMMON_NAME:String = "2.5.4.3"; public static const DH_PUBLIC_NUMBER:String = "1.2.840.10046.2.1"; public static const LOCALITY_NAME:String = "2.5.4.7"; public static const SHA1_ALGORITHM:String = "1.3.14.3.2.26"; public static const TITLE:String = "2.5.4.12"; public static const ORG_UNIT_NAME:String = "2.5.4.11"; public static const SURNAME:String = "2.5.4.4"; } }//package com.hurlant.util.der
Section 186
//PEM (com.hurlant.util.der.PEM) package com.hurlant.util.der { import com.hurlant.crypto.rsa.*; import flash.utils.*; import com.hurlant.util.*; public class PEM { private static const CERTIFICATE_FOOTER:String = "-----END CERTIFICATE-----"; private static const RSA_PUBLIC_KEY_HEADER:String = "-----BEGIN PUBLIC KEY-----"; private static const RSA_PRIVATE_KEY_HEADER:String = "-----BEGIN RSA PRIVATE KEY-----"; private static const RSA_PUBLIC_KEY_FOOTER:String = "-----END PUBLIC KEY-----"; private static const CERTIFICATE_HEADER:String = "-----BEGIN CERTIFICATE-----"; private static const RSA_PRIVATE_KEY_FOOTER:String = "-----END RSA PRIVATE KEY-----"; private static function extractBinary(_arg1:String, _arg2:String, _arg3:String):ByteArray{ var _local4:int = _arg3.indexOf(_arg1); if (_local4 == -1){ return (null); }; _local4 = (_local4 + _arg1.length); var _local5:int = _arg3.indexOf(_arg2); if (_local5 == -1){ return (null); }; var _local6:String = _arg3.substring(_local4, _local5); _local6 = _local6.replace(/\s/mg, ""); return (Base64.decodeToByteArray(_local6)); } public static function readRSAPrivateKey(_arg1:String):RSAKey{ var _local4:Array; var _local2:ByteArray = extractBinary(RSA_PRIVATE_KEY_HEADER, RSA_PRIVATE_KEY_FOOTER, _arg1); if (_local2 == null){ return (null); }; var _local3:* = DER.parse(_local2); if ((_local3 is Array)){ _local4 = (_local3 as Array); return (new RSAKey(_local4[1], _local4[2].valueOf(), _local4[3], _local4[4], _local4[5], _local4[6], _local4[7], _local4[8])); }; return (null); } public static function readRSAPublicKey(_arg1:String):RSAKey{ var _local4:Array; var _local2:ByteArray = extractBinary(RSA_PUBLIC_KEY_HEADER, RSA_PUBLIC_KEY_FOOTER, _arg1); if (_local2 == null){ return (null); }; var _local3:* = DER.parse(_local2); if ((_local3 is Array)){ _local4 = (_local3 as Array); if (_local4[0][0].toString() != OID.RSA_ENCRYPTION){ return (null); }; _local4[1].position = 0; _local3 = DER.parse(_local4[1]); if ((_local3 is Array)){ _local4 = (_local3 as Array); return (new RSAKey(_local4[0], _local4[1])); }; return (null); //unresolved jump }; return (null); } public static function readCertIntoArray(_arg1:String):ByteArray{ var _local2:ByteArray = extractBinary(CERTIFICATE_HEADER, CERTIFICATE_FOOTER, _arg1); return (_local2); } } }//package com.hurlant.util.der
Section 187
//PrintableString (com.hurlant.util.der.PrintableString) package com.hurlant.util.der { import flash.utils.*; public class PrintableString implements IAsn1Type { protected var type:uint; protected var str:String; protected var len:uint; public function PrintableString(_arg1:uint, _arg2:uint){ this.type = _arg1; this.len = _arg2; } public function getLength():uint{ return (len); } public function getString():String{ return (str); } public function toString():String{ return ((DER.indent + str)); } public function getType():uint{ return (type); } public function toDER():ByteArray{ return (null); } public function setString(_arg1:String):void{ str = _arg1; } } }//package com.hurlant.util.der
Section 188
//Sequence (com.hurlant.util.der.Sequence) package com.hurlant.util.der { import flash.utils.*; public dynamic class Sequence extends Array implements IAsn1Type { protected var len:uint; protected var type:uint; public function Sequence(_arg1:uint=48, _arg2:uint=0){ this.type = _arg1; this.len = _arg2; } public function getLength():uint{ return (len); } public function toString():String{ var _local4:Boolean; var _local5:String; var _local1:String = DER.indent; DER.indent = (DER.indent + " "); var _local2 = ""; var _local3:int; while (_local3 < length) { if (this[_local3] == null){ } else { _local4 = false; for (_local5 in this) { if (((!((_local3.toString() == _local5))) && ((this[_local3] == this[_local5])))){ _local2 = (_local2 + (((_local5 + ": ") + this[_local3]) + "\n")); _local4 = true; break; }; }; if (!_local4){ _local2 = (_local2 + (this[_local3] + "\n")); }; }; _local3++; }; DER.indent = _local1; return ((((((((((DER.indent + "Sequence[") + type) + "][") + len) + "][\n") + _local2) + "\n") + _local1) + "]")); } public function findAttributeValue(_arg1:String):IAsn1Type{ var _local2:*; var _local3:*; var _local4:*; var _local5:ObjectIdentifier; for each (_local2 in this) { if ((_local2 is Set)){ _local3 = _local2[0]; if ((_local3 is Sequence)){ _local4 = _local3[0]; if ((_local4 is ObjectIdentifier)){ _local5 = (_local4 as ObjectIdentifier); if (_local5.toString() == _arg1){ return ((_local3[1] as IAsn1Type)); }; }; }; }; }; return (null); } public function getType():uint{ return (type); } public function toDER():ByteArray{ var _local3:IAsn1Type; var _local1:ByteArray = new ByteArray(); var _local2:int; while (_local2 < length) { _local3 = this[_local2]; if (_local3 == null){ _local1.writeByte(5); _local1.writeByte(0); } else { _local1.writeBytes(_local3.toDER()); }; _local2++; }; return (DER.wrapDER(type, _local1)); } } }//package com.hurlant.util.der
Section 189
//Set (com.hurlant.util.der.Set) package com.hurlant.util.der { public dynamic class Set extends Sequence implements IAsn1Type { public function Set(_arg1:uint=49, _arg2:uint=0){ super(_arg1, _arg2); } override public function toString():String{ var _local1:String; _local1 = DER.indent; DER.indent = (DER.indent + " "); var _local2:String = join("\n"); DER.indent = _local1; return ((((((((((DER.indent + "Set[") + type) + "][") + len) + "][\n") + _local2) + "\n") + _local1) + "]")); } } }//package com.hurlant.util.der
Section 190
//UTCTime (com.hurlant.util.der.UTCTime) package com.hurlant.util.der { import flash.utils.*; public class UTCTime implements IAsn1Type { public var date:Date; protected var len:uint; protected var type:uint; public function UTCTime(_arg1:uint, _arg2:uint){ this.type = _arg1; this.len = _arg2; } public function getLength():uint{ return (len); } public function toString():String{ return ((((((((DER.indent + "UTCTime[") + type) + "][") + len) + "][") + date) + "]")); } public function setUTCTime(_arg1:String):void{ var _local2:uint = parseInt(_arg1.substr(0, 2)); if (_local2 < 50){ _local2 = (_local2 + 2000); } else { _local2 = (_local2 + 1900); }; var _local3:uint = parseInt(_arg1.substr(2, 2)); var _local4:uint = parseInt(_arg1.substr(4, 2)); var _local5:uint = parseInt(_arg1.substr(6, 2)); var _local6:uint = parseInt(_arg1.substr(8, 2)); date = new Date(_local2, (_local3 - 1), _local4, _local5, _local6); } public function getType():uint{ return (type); } public function toDER():ByteArray{ return (null); } } }//package com.hurlant.util.der
Section 191
//Base64 (com.hurlant.util.Base64) package com.hurlant.util { import flash.utils.*; public class Base64 { public static const version:String = "1.0.0"; private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; public function Base64(){ throw (new Error("Base64 class is static container only")); } public static function encode(_arg1:String):String{ var _local2:ByteArray = new ByteArray(); _local2.writeUTFBytes(_arg1); return (encodeByteArray(_local2)); } public static function encodeByteArray(_arg1:ByteArray):String{ var _local3:Array; var _local5:uint; var _local6:uint; var _local7:uint; var _local2 = ""; var _local4:Array = new Array(4); _arg1.position = 0; while (_arg1.bytesAvailable > 0) { _local3 = new Array(); _local5 = 0; while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) { _local3[_local5] = _arg1.readUnsignedByte(); _local5++; }; _local4[0] = ((_local3[0] & 252) >> 2); _local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4)); _local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6)); _local4[3] = (_local3[2] & 63); _local6 = _local3.length; while (_local6 < 3) { _local4[(_local6 + 1)] = 64; _local6++; }; _local7 = 0; while (_local7 < _local4.length) { _local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7])); _local7++; }; }; return (_local2); } public static function decode(_arg1:String):String{ var _local2:ByteArray = decodeToByteArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function decodeToByteArray(_arg1:String):ByteArray{ var _local6:uint; var _local7:uint; var _local2:ByteArray = new ByteArray(); var _local3:Array = new Array(4); var _local4:Array = new Array(3); var _local5:uint; while (_local5 < _arg1.length) { _local6 = 0; while ((((_local6 < 4)) && (((_local5 + _local6) < _arg1.length)))) { _local3[_local6] = BASE64_CHARS.indexOf(_arg1.charAt((_local5 + _local6))); _local6++; }; _local4[0] = ((_local3[0] << 2) + ((_local3[1] & 48) >> 4)); _local4[1] = (((_local3[1] & 15) << 4) + ((_local3[2] & 60) >> 2)); _local4[2] = (((_local3[2] & 3) << 6) + _local3[3]); _local7 = 0; while (_local7 < _local4.length) { if (_local3[(_local7 + 1)] == 64){ break; }; _local2.writeByte(_local4[_local7]); _local7++; }; _local5 = (_local5 + 4); }; _local2.position = 0; return (_local2); } } }//package com.hurlant.util
Section 192
//Hex (com.hurlant.util.Hex) package com.hurlant.util { import flash.utils.*; public class Hex { public static function fromString(_arg1:String, _arg2:Boolean=false):String{ var _local3:ByteArray = new ByteArray(); _local3.writeUTFBytes(_arg1); return (fromArray(_local3, _arg2)); } public static function toString(_arg1:String):String{ var _local2:ByteArray = toArray(_arg1); return (_local2.readUTFBytes(_local2.length)); } public static function toArray(_arg1:String):ByteArray{ _arg1 = _arg1.replace(/\s|:/gm, ""); var _local2:ByteArray = new ByteArray(); if ((_arg1.length & (1 == 1))){ _arg1 = ("0" + _arg1); }; var _local3:uint; while (_local3 < _arg1.length) { _local2[(_local3 / 2)] = parseInt(_arg1.substr(_local3, 2), 16); _local3 = (_local3 + 2); }; return (_local2); } public static function fromArray(_arg1:ByteArray, _arg2:Boolean=false):String{ var _local3 = ""; var _local4:uint; while (_local4 < _arg1.length) { _local3 = (_local3 + ("0" + _arg1[_local4].toString(16)).substr(-2, 2)); if (_arg2){ if (_local4 < (_arg1.length - 1)){ _local3 = (_local3 + ":"); }; }; _local4++; }; return (_local3); } } }//package com.hurlant.util
Section 193
//Memory (com.hurlant.util.Memory) package com.hurlant.util { import flash.net.*; import flash.system.*; public class Memory { public static function gc():void{ try { new LocalConnection().connect("foo"); new LocalConnection().connect("foo"); } catch(e) { }; } public static function get used():uint{ return (System.totalMemory); } } }//package com.hurlant.util
Section 194
//ChainedErrorEvent (com.soapcreative.events.ChainedErrorEvent) package com.soapcreative.events { import flash.events.*; public class ChainedErrorEvent extends ErrorEvent { private var _cause:ErrorEvent; public function ChainedErrorEvent(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:String=""){ var _local6:ErrorEvent; var _local7:Boolean; if ((_arg2 is ErrorEvent)){ _local6 = ErrorEvent(_arg2); } else { if ((_arg2 is Error)){ _local6 = new AsyncErrorEvent(AsyncErrorEvent.ASYNC_ERROR, false, false, Error(_arg2).message, Error(_arg2)); } else { _local7 = true; }; }; super(_arg1, _arg3, _arg4, ((_arg5) || ((_local6) ? _local6.text : ""))); _cause = _local6; if (_local7){ throw (new ArgumentError("cause argument must be an Error or ErrorEvent")); }; } public function get cause():ErrorEvent{ return (_cause); } override public function clone():Event{ return (new ChainedErrorEvent(type, _cause, bubbles, cancelable, text)); } override public function toString():String{ return (formatToString("ChainedErrorEvent", "type", "cause")); } } }//package com.soapcreative.events
Section 195
//HighScoreErrorEvent (com.soapcreative.events.HighScoreErrorEvent) package com.soapcreative.events { import flash.events.*; public class HighScoreErrorEvent extends ChainedErrorEvent { public static const SUBMIT_ERROR:String = "submitError"; public static const HASH_ERROR:String = "hashError"; public static const LOAD_ERROR:String = "loadError"; public function HighScoreErrorEvent(_arg1:String, _arg2:Object, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:String=""){ super(_arg1, _arg2, _arg3, _arg4, _arg5); } override public function toString():String{ return (formatToString("HighScoreErrorEvent", "type", "cause")); } override public function clone():Event{ return (new HighScoreErrorEvent(type, cause, bubbles, cancelable, text)); } } }//package com.soapcreative.events
Section 196
//HighScoreEvent (com.soapcreative.events.HighScoreEvent) package com.soapcreative.events { import flash.events.*; public final class HighScoreEvent extends Event { private var _sessionId:String; private var _xml:XML; private var _publicKey:String; public static const SCORES_LOADED:String = "scoresLoaded"; public static const HASH_LOADED:String = "hashLoaded"; public static const COMPLETE:String = "complete"; public function HighScoreEvent(_arg1:String, _arg2:XML=null, _arg3:String=null, _arg4:String=null){ super(_arg1); _xml = _arg2; _publicKey = _arg3; _sessionId = _arg4; } public function get success():Boolean{ if (_xml != null){ return ((_xml.status.toString() == "ok")); }; return (false); } public function get message():String{ if (_xml != null){ return (_xml.msg.toString()); }; return (null); } override public function toString():String{ return (formatToString("HighScoreEvent", "type", "publicKey", "sessionId")); } public function get sessionId():String{ return (_sessionId); } public function get publicKey():String{ return (_publicKey); } public function get xml():XML{ return (_xml); } override public function clone():Event{ return (new HighScoreEvent(type, _xml, _publicKey, _sessionId)); } } }//package com.soapcreative.events
Section 197
//XMLParseErrorEvent (com.soapcreative.events.XMLParseErrorEvent) package com.soapcreative.events { import flash.events.*; public class XMLParseErrorEvent extends ErrorEvent { private var _data:String; public static const XML_PARSE_ERROR:String = "xmlParseError"; public function XMLParseErrorEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:String="", _arg5:String=""){ super(_arg1, _arg2, _arg3, _arg4); _data = _arg5; } public function get data():String{ return (_data); } override public function clone():Event{ return (new XMLParseErrorEvent(type, bubbles, cancelable, text, data)); } override public function toString():String{ return (formatToString("XMLParseErrorEvent", "type", "text")); } } }//package com.soapcreative.events
Section 198
//GamePostData (com.soapcreative.net.hse.GamePostData) package com.soapcreative.net.hse { import flash.net.*; public class GamePostData { public var achievements:Array; public var elapsedTime:int; public var variables:URLVariables; public var score:int; public var name:String; public var email:String; public function GamePostData(_arg1:String, _arg2:int, _arg3:String=null){ this.name = _arg1; this.score = _arg2; this.email = ((_arg3 == null)) ? generateEmail() : _arg3; elapsedTime = 0; variables = new URLVariables(); achievements = new Array(); } public function addField(_arg1:String, _arg2:Object):Object{ variables[_arg1] = _arg2; return (_arg2); } public function removeAchievement(_arg1:int):void{ var _local2:int = achievements.indexOf(_arg1); if (_local2 != -1){ achievements.splice(_local2, 1); }; } private function generateEmail():String{ var _local1:int = (Math.random() * 999999); var _local2:int = (Math.random() * 999999); return ((((_local1 + "noemail@www") + _local2) + ".com")); } public function clearVariables():void{ variables = new URLVariables(); } public function clearAchievements():void{ achievements.length = 0; } public function addAchievement(_arg1:int):void{ achievements.push(_arg1); } public function removeField(_arg1:String):Object{ var _local2:Object = variables[_arg1]; if (_local2 != null){ delete variables[_arg1]; }; return (_local2); } } }//package com.soapcreative.net.hse
Section 199
//HighScoreEngine (com.soapcreative.net.hse.HighScoreEngine) package com.soapcreative.net.hse { import flash.net.*; import flash.events.*; import com.hurlant.crypto.rsa.*; import flash.utils.*; import com.hurlant.util.der.*; import com.soapcreative.net.loaders.*; import com.soapcreative.events.*; import com.hurlant.util.*; import com.soapcreative.utils.text.*; import com.adobe.crypto.*; import flash.errors.*; public class HighScoreEngine extends EventDispatcher { public var hashUrl:String;// = "http://boxofsoap.com/highscore_v2/index.php/highscores/start_game" private var attempts:int; public var sendUrl:String;// = "http://boxofsoap.com/highscore_v2/index.php/highscores/submit_score" private var _postData:GamePostData; private var _gameId:int; private var _startTime:int; private var _key1:int; private var _sessionId:String; public var loadUrl:String;// = "http://boxofsoap.com/highscore_v2/index.php/highscores/get_scores" private var _key2:int; private var _publicKey:String; public static const VERSION:String = "1.1.0"; public function HighScoreEngine(_arg1:int, _arg2:int, _arg3:int){ _gameId = _arg1; if ((((_arg2 <= 0)) || ((_arg3 <= 0)))){ throw (new ArgumentError("key1 and key2 both must be greater than zero")); }; _key1 = _arg2; _key2 = _arg3; } private function onHTTPStatus(_arg1:HTTPStatusEvent):void{ dispatchEvent(_arg1); } public function getHash():void{ var _local1:Number = new Date().getTime(); var _local2:URLRequest = getRequest(TextUtil.pathAppend(hashUrl, _gameId, _local1.toString())); var _local3:URLLoader = getXMLLoader(onHashLoaded, onHashError); trace(_local2.url); _publicKey = (_sessionId = null); _local3.load(_local2); } public function send(_arg1:GamePostData, _arg2:Boolean=true, _arg3:int=0):URLRequest{ if (hasHash() == false){ throw (new IllegalOperationError("Hash was never successfully loaded")); }; this.attempts = _arg3; var _local4:URLVariables = getPostVariables(_arg1, _arg2); var _local5:URLRequest = getRequest(sendUrl, _local4); var _local6:URLLoader = getXMLLoader(onSubmitComplete, onSubmitError); _local6.load(_local5); trace("********************************HSE SEND CALLED"); return (_local5); } private function onHashError(_arg1:ErrorEvent):void{ dispatchEvent(new HighScoreErrorEvent(HighScoreErrorEvent.HASH_ERROR, _arg1)); } private function hasHash():Boolean{ return (((!((_publicKey == null))) && (!((_sessionId == null))))); } private function getXMLLoader(_arg1:Function, _arg2:Function):URLXMLLoader{ var _local3:URLXMLLoader = new URLXMLLoader(); _local3.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _arg2); _local3.addEventListener(IOErrorEvent.IO_ERROR, _arg2); _local3.addEventListener(XMLParseErrorEvent.XML_PARSE_ERROR, _arg2); _local3.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus); _local3.addEventListener(Event.COMPLETE, _arg1); return (_local3); } private function onScoreLoadError(_arg1:ErrorEvent):void{ dispatchEvent(new HighScoreErrorEvent(HighScoreErrorEvent.LOAD_ERROR, _arg1)); } private function getPostVariables(_arg1:GamePostData, _arg2:Boolean):URLVariables{ _postData = _arg1; var _local3:int = _postData.score; var _local4:String = getHashKey(_local3); var _local5:int = ((_postData.elapsedTime > 0)) ? _postData.elapsedTime : elapsedTime; var _local6:URLVariables = _postData.variables; if (_arg2 == true){ _local6.s = getHex(_local3, _local4, _local5, true); }; _local6.us = getHex(_local3, _local4, _local5, false); _local6.game_id = _gameId; _local6.player_name = _postData.name; _local6.player_email = _postData.email; _local6.elapsed_time = _local5; _local6.t = attempts; if (_postData.achievements.length > 0){ _local6.achievements = _postData.achievements.join(","); }; return (_local6); } private function getHex(_arg1:int, _arg2:String, _arg3:int, _arg4:Boolean):String{ var _local5 = ""; _local5 = (_local5 + ("score=" + _arg1.toString())); _local5 = (_local5 + ("&sess_id=" + _sessionId)); _local5 = (_local5 + ("&client_hash=" + _arg2)); _local5 = (_local5 + ("&elapsed_time=" + _arg3.toString())); _local5 = (_local5 + ("&t=" + attempts.toString())); if (_arg4 == false){ return (_local5); }; var _local6:ByteArray = Hex.toArray(Hex.fromString(_local5)); var _local7:ByteArray = new ByteArray(); var _local8:RSAKey = PEM.readRSAPublicKey(_publicKey); var _local9 = ""; _local8.encrypt(_local6, _local7, _local6.length); _local9 = Hex.fromArray(_local7); return (_local9); } public function loadScores(_arg1:int=-1, _arg2:int=-1):void{ var _local3:String; if (_arg1 >= 0){ if (_arg2 >= 0){ _local3 = TextUtil.pathAppend(loadUrl, _gameId, _arg1, _arg2); } else { _local3 = TextUtil.pathAppend(loadUrl, _gameId, _arg1); }; } else { _local3 = loadUrl; }; var _local4:URLRequest = getRequest(_local3); var _local5:URLLoader = getXMLLoader(onScoreLoadComplete, onScoreLoadError); _local5.load(_local4); } private function getRequest(_arg1:String, _arg2:URLVariables=null, _arg3:String="POST"):URLRequest{ var _local4:URLRequest = new URLRequest(_arg1); _local4.method = _arg3; if (_arg2 != null){ _local4.data = _arg2; }; return (_local4); } public function get gameId():int{ return (_gameId); } public function get elapsedTime():int{ return (((getTimer() - _startTime) / 1000)); } public function get postData():GamePostData{ return (_postData); } public function get key1():int{ return (_key1); } private function onScoreLoadComplete(_arg1:Event):void{ dispatchEvent(new HighScoreEvent(HighScoreEvent.SCORES_LOADED, _arg1.target.data, _publicKey, _sessionId)); } public function get publicKey():String{ return (_publicKey); } private function onSubmitError(_arg1:ErrorEvent):void{ dispatchEvent(new HighScoreErrorEvent(HighScoreErrorEvent.SUBMIT_ERROR, _arg1)); } private function onHashLoaded(_arg1:Event):void{ var _local5:String; var _local2:XML = _arg1.target.data; var _local3:String = _local2.game.@public_key.toString(); var _local4:String = _local2.game.@sess_id.toString(); if (_local3.length > 0){ _publicKey = _local3; }; if (_local4.length > 0){ _sessionId = _local4; }; if (hasHash() == true){ _startTime = getTimer(); dispatchEvent(new HighScoreEvent(HighScoreEvent.HASH_LOADED, _local2, _publicKey, _sessionId)); } else { _local5 = "Did not receive session or key\n"; _local5 = (_local5 + (("session: " + _sessionId) + "\n")); _local5 = (_local5 + ("publicKey: " + _publicKey)); onHashError(new ErrorEvent(ErrorEvent.ERROR, false, false, _local5)); }; } public function get key2():int{ return (_key2); } public function getHashKey(_arg1:int):String{ var _local2:String = ((_arg1.toString() + _key1.toString()) + _key2.toString()); return (MD5.hash(_local2)); } public function get sessionId():String{ return (_sessionId); } private function onSubmitComplete(_arg1:Event):void{ var _local2:XML = _arg1.target.data; var _local3:String = _local2.status.toString(); if (_local3.length > 0){ switch (_local3){ case ResponseStatus.SUCCESS: dispatchEvent(new HighScoreEvent(HighScoreEvent.COMPLETE, _local2, _publicKey, _sessionId)); break; case ResponseStatus.NEW_KEY: _publicKey = _local2.key.toString(); send(_postData, true, (attempts + 1)); break; default: onSubmitError(new ErrorEvent(ErrorEvent.ERROR, false, false, ResponseStatus.NONE)); }; } else { onSubmitError(new ErrorEvent(ErrorEvent.ERROR, false, false, ResponseStatus.EMPTY)); }; } } }//package com.soapcreative.net.hse
Section 200
//ResponseStatus (com.soapcreative.net.hse.ResponseStatus) package com.soapcreative.net.hse { class ResponseStatus { public static const NEW_KEY:String = "enc"; public static const SUCCESS:String = "ok"; public static const NONE:String = "unrecognized response status"; public static const EMPTY:String = "empty response status"; } }//package com.soapcreative.net.hse
Section 201
//URLXMLLoader (com.soapcreative.net.loaders.URLXMLLoader) package com.soapcreative.net.loaders { import flash.net.*; import flash.events.*; import com.soapcreative.events.*; public class URLXMLLoader extends URLLoader { private var _xml:XML; public function URLXMLLoader(_arg1:URLRequest=null, _arg2:String="xml"){ super(_arg1); this.dataFormat = _arg2; addEventListener(Event.COMPLETE, onComplete, false, int.MAX_VALUE, true); } private function onComplete(_arg1:Event):void{ var event = _arg1; if (dataFormat == URLXMLLoaderDataFormat.XML){ try { _xml = XML(data); data = _xml; } catch(error:TypeError) { parseError(event, error); } catch(error:SyntaxError) { parseError(event, error); }; }; } private function parseError(_arg1:Event, _arg2:Error):void{ _arg1.stopImmediatePropagation(); dispatchEvent(new XMLParseErrorEvent(XMLParseErrorEvent.XML_PARSE_ERROR, false, false, _arg2.message, data)); } public function get xml():XML{ return (_xml); } } }//package com.soapcreative.net.loaders
Section 202
//URLXMLLoaderDataFormat (com.soapcreative.net.loaders.URLXMLLoaderDataFormat) package com.soapcreative.net.loaders { public class URLXMLLoaderDataFormat { public static const XML:String = "xml"; } }//package com.soapcreative.net.loaders
Section 203
//TextUtil (com.soapcreative.utils.text.TextUtil) package com.soapcreative.utils.text { public class TextUtil { public static function pathAppend(_arg1:String, ... _args):String{ var _local3:int; var _local4:int = _args.length; _local3 = 0; while (_local3 < _local4) { if (_arg1.slice(-1) != "/"){ _arg1 = (_arg1 + "/"); }; _arg1 = (_arg1 + _args[_local3]); _local3++; }; return (_arg1); } } }//package com.soapcreative.utils.text
Section 204
//Box2DMouseUtils (couk.psyked.box2d.utils.Box2DMouseUtils) package couk.psyked.box2d.utils { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class Box2DMouseUtils { private static var m_world:b2World; private static var m_physScale:Number; private static var mousePVec:b2Vec2 = new b2Vec2(); private static var m_sprite:Sprite; private static var accuracy:Number = 2; private static var k_maxCount:int = 100; public static function initialise(_arg1:b2World, _arg2:Number, _arg3:Sprite):void{ m_world = _arg1; m_physScale = _arg2; m_sprite = _arg3; } public static function getTopBodyAtMouse(_arg1:Boolean=false):b2Body{ var _local3:Number; var _local4:Number; var _local10:b2Shape; var _local11:Boolean; var _local2:b2Vec2 = new b2Vec2(); _local3 = (m_sprite.mouseX / m_physScale); _local4 = (m_sprite.mouseY / m_physScale); _local2.Set(_local3, _local4); var _local5:b2AABB = new b2AABB(); _local5.lowerBound.Set((_local3 - accuracy), (_local4 - accuracy)); _local5.upperBound.Set((_local3 + accuracy), (_local4 + accuracy)); var _local6:Array = new Array(); var _local7:int = m_world.Query(_local5, _local6, k_maxCount); var _local8:b2Body; var _local9:int; while (_local9 < _local7) { if ((((_local6[_local9].GetBody().IsStatic() == false)) || (_arg1))){ _local10 = (_local6[_local9] as b2Shape); _local11 = (_local6[_local9] as b2Shape).TestPoint(_local10.GetBody().GetXForm(), _local2); if (_local11){ _local8 = _local10.GetBody(); break; }; }; _local9++; }; return (_local8); } public static function getAllBodiesAtMouse(_arg1:Boolean=false):Array{ var _local3:Number; var _local4:Number; var _local10:b2Shape; var _local11:Boolean; var _local2:b2Vec2 = new b2Vec2(); _local3 = (m_sprite.mouseX / m_physScale); _local4 = (m_sprite.mouseY / m_physScale); _local2.Set(_local3, _local4); var _local5:b2AABB = new b2AABB(); _local5.lowerBound.Set((_local3 - accuracy), (_local4 - accuracy)); _local5.upperBound.Set((_local3 + accuracy), (_local4 + accuracy)); var _local6:Array = new Array(); var _local7:int = m_world.Query(_local5, _local6, k_maxCount); var _local8:Array = new Array(); var _local9:int; while (_local9 < _local7) { if ((((_local6[_local9].GetBody().IsStatic() == false)) || (_arg1))){ _local10 = (_local6[_local9] as b2Shape); _local11 = (_local6[_local9] as b2Shape).TestPoint(_local10.GetBody().GetXForm(), _local2); if (_local11){ _local8.push(_local10.GetBody()); }; }; _local9++; }; return (_local8); } } }//package couk.psyked.box2d.utils
Section 205
//Box2DUtils (couk.psyked.box2d.utils.Box2DUtils) package couk.psyked.box2d.utils { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import couk.psyked.box2d.*; public class Box2DUtils { public static function createBoxedWorld(_arg1:Box2DWorldOptions):Box2DWorld{ var _local5:b2Body; var _local2:b2World = new b2World(_arg1.aabb, _arg1.gravity, true); var _local3:b2PolygonDef = new b2PolygonDef(); var _local4:b2BodyDef = new b2BodyDef(); if (_arg1.edgeLeft){ _local4.position.Set((-100 / _arg1.scale), ((_arg1.height / _arg1.scale) / 2)); _local3.SetAsBox((100 / _arg1.scale), (((_arg1.height + 40) / _arg1.scale) / 2)); _local5 = _local2.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); }; if (_arg1.edgeRight){ _local4.position.Set(((_arg1.width + 99) / _arg1.scale), ((_arg1.height / _arg1.scale) / 2)); _local5 = _local2.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); }; if (_arg1.edgeTop){ _local4.position.Set(((_arg1.width / _arg1.scale) / 2), (-100 / _arg1.scale)); _local3.SetAsBox((((_arg1.width + 40) / _arg1.scale) / 2), (100 / _arg1.scale)); _local5 = _local2.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); }; if (_arg1.edgeBottom){ _local4.position.Set(((_arg1.width / _arg1.scale) / 2), ((_arg1.height + 99) / _arg1.scale)); _local5 = _local2.CreateBody(_local4); _local5.CreateShape(_local3); _local5.SetMassFromShapes(); }; return (new Box2DWorld(_local2, _arg1)); } public static function addDebugDraw(_arg1:b2World):Sprite{ var _local2:b2DebugDraw = new b2DebugDraw(); var _local3:Sprite = new Sprite(); _local2.SetSprite(_local3); _local2.SetDrawScale(30); _local2.SetFillAlpha(0.3); _local2.SetLineThickness(1); _local2.SetFlags((b2DebugDraw.e_shapeBit | b2DebugDraw.e_jointBit)); _arg1.SetDebugDraw(_local2); return (_local3); } } }//package couk.psyked.box2d.utils
Section 206
//Box2DWorldOptions (couk.psyked.box2d.utils.Box2DWorldOptions) package couk.psyked.box2d.utils { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class Box2DWorldOptions { public var aabb:b2AABB; public var edgeLeft:Boolean; public var width:int; public var scale:Number; public var gravity:b2Vec2; public var edgeBottom:Boolean; public var world:b2World; public var height:int; public var edgeTop:Boolean; public var edgeRight:Boolean; public function Box2DWorldOptions(_arg1:int=800, _arg2:int=600, _arg3:int=30, _arg4:Number=9.8, _arg5:b2AABB=null){ scale = _arg3; width = _arg1; height = _arg2; if (!_arg5){ aabb = new b2AABB(); aabb.lowerBound.Set(-1000, -1000); aabb.upperBound.Set(1000, 1000); } else { aabb = _arg5; }; gravity = new b2Vec2(0, _arg4); } public function setWorldEdges(_arg1:Boolean=false, _arg2:Boolean=false, _arg3:Boolean=false, _arg4:Boolean=false):void{ edgeBottom = _arg1; edgeTop = _arg2; edgeLeft = _arg3; edgeRight = _arg4; } } }//package couk.psyked.box2d.utils
Section 207
//GrahamScan (couk.psyked.box2d.utils.GrahamScan) package couk.psyked.box2d.utils { import flash.geom.*; public class GrahamScan { public function convexHull(_arg1:Array):Array{ return (findHull(order(_arg1))); } public function findHull(_arg1:Array):Array{ var _local2:int = _arg1.length; var _local3:Array = new Array(); _local3.push(_arg1[0]); _local3.push(_arg1[1]); var _local4 = 2; while (_local4 < _local2) { while (direction(_local3[(_local3.length - 2)], _local3[(_local3.length - 1)], _arg1[_local4]) > 0) { _local3.pop(); }; _local3.push(_arg1[_local4]); _local4++; }; return (_local3); } public function order(_arg1:Array):Array{ var _local4:int; var _local9:Number; var _local10:Number; var _local11:Number; var _local2:Point = _arg1[0]; var _local3:int = _arg1.length; _local4 = 0; while (_local4 < _local3) { if (_arg1[_local4].y < _local2.y){ _local2 = _arg1[_local4]; } else { if ((((_arg1[_local4].y == _local2.y)) && ((_arg1[_local4].x < _local2.x)))){ _local2 = _arg1[_local4]; }; }; _local4++; }; var _local5:Array = new Array(); var _local6:Array = new Array(); var _local7:Array = new Array(); _local4 = 0; while (_local4 < _local3) { _local9 = (_arg1[_local4].x - _local2.x); _local10 = (_arg1[_local4].y - _local2.y); _local11 = (_local10 / _local9); if (_local11 < 0){ _local7.push({point:_arg1[_local4], cotangent:_local11}); } else { _local6.push({point:_arg1[_local4], cotangent:_local11}); }; _local4++; }; _local6.sortOn("cotangent", (Array.NUMERIC | Array.DESCENDING)); _local7.sortOn("cotangent", (Array.NUMERIC | Array.DESCENDING)); _local5 = _local7.concat(_local6); var _local8:Array = new Array(); _local8.push(_local2); _local4 = 0; while (_local4 < _local3) { if (_local2 == _local5[_local4].point){ } else { _local8.push(_local5[_local4].point); }; _local4++; }; return (_local8); } private function direction(_arg1:Point, _arg2:Point, _arg3:Point):Number{ return ((((_arg2.x - _arg1.x) * (_arg3.y - _arg1.y)) - ((_arg2.y - _arg1.y) * (_arg3.x - _arg1.x)))); } } }//package couk.psyked.box2d.utils
Section 208
//PolygonTool (couk.psyked.box2d.utils.PolygonTool) package couk.psyked.box2d.utils { public class PolygonTool { public static function getConvexPoly(_arg1:Array):Array{ var _local2:GrahamScan = new GrahamScan(); return (_local2.convexHull(_arg1.slice(0))); } public static function isPolyClockwise(_arg1:Array):Boolean{ var _local2:int; var _local3:int; var _local4:int; var _local6:Number; var _local5:int; if (_arg1.length < 3){ return (false); }; _local2 = 0; while (_local2 < _arg1.length) { _local3 = ((_local2 + 1) % _arg1.length); _local4 = ((_local2 + 2) % _arg1.length); _local6 = ((_arg1[_local3].x - _arg1[_local2].x) * (_arg1[_local4].y - _arg1[_local3].y)); _local6 = (_local6 - ((_arg1[_local3].y - _arg1[_local2].y) * (_arg1[_local4].x - _arg1[_local3].x))); if (_local6 < 0){ _local5--; } else { if (_local6 > 0){ _local5++; }; }; _local2++; }; if (_local5 > 0){ return (false); }; if (_local5 < 0){ return (true); }; return (false); } public static function isPolyConvex(_arg1:Array):Boolean{ var _local2:int; var _local3:int; var _local4:int; var _local6:Number; var _local5:int; var _local7:int = _arg1.length; if (_local7 < 3){ return (false); }; _local2 = 0; while (_local2 < _local7) { _local3 = ((_local2 + 1) % _local7); _local4 = ((_local2 + 2) % _local7); _local6 = ((_arg1[_local3].x - _arg1[_local2].x) * (_arg1[_local4].y - _arg1[_local3].y)); _local6 = (_local6 - ((_arg1[_local3].y - _arg1[_local2].y) * (_arg1[_local4].x - _arg1[_local3].x))); if (_local6 < 0){ _local5 = (_local5 | 1); } else { if (_local6 > 0){ _local5 = (_local5 | 2); }; }; if (_local5 == 3){ return (false); }; _local2++; }; if (_local5 != 0){ return (true); }; return (false); } public static function getTriangulatedPoly(_arg1:Array):Array{ var _local2:Triangulate = new Triangulate(); return (_local2.process(_arg1.slice(0))); } } }//package couk.psyked.box2d.utils
Section 209
//Triangulate (couk.psyked.box2d.utils.Triangulate) package couk.psyked.box2d.utils { public class Triangulate { private static var EPSILON:Number = 1E-10; private function snip(_arg1:Array, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:Array):Boolean{ var _local7:int; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local8 = _arg1[_arg6[_arg2]].x; _local9 = _arg1[_arg6[_arg2]].y; _local10 = _arg1[_arg6[_arg3]].x; _local11 = _arg1[_arg6[_arg3]].y; _local12 = _arg1[_arg6[_arg4]].x; _local13 = _arg1[_arg6[_arg4]].y; if (EPSILON > (((_local10 - _local8) * (_local13 - _local9)) - ((_local11 - _local9) * (_local12 - _local8)))){ return (false); }; _local7 = 0; while (_local7 < _arg5) { if ((((((_local7 == _arg2)) || ((_local7 == _arg3)))) || ((_local7 == _arg4)))){ } else { _local14 = _arg1[_arg6[_local7]].x; _local15 = _arg1[_arg6[_local7]].y; if (insideTriangle(_local8, _local9, _local10, _local11, _local12, _local13, _local14, _local15)){ return (false); }; }; _local7++; }; return (true); } public function insideTriangle(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):Boolean{ 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; _local9 = (_arg5 - _arg3); _local10 = (_arg6 - _arg4); _local11 = (_arg1 - _arg5); _local12 = (_arg2 - _arg6); _local13 = (_arg3 - _arg1); _local14 = (_arg4 - _arg2); _local15 = (_arg7 - _arg1); _local16 = (_arg8 - _arg2); _local17 = (_arg7 - _arg3); _local18 = (_arg8 - _arg4); _local19 = (_arg7 - _arg5); _local20 = (_arg8 - _arg6); _local23 = ((_local9 * _local18) - (_local10 * _local17)); _local21 = ((_local13 * _local16) - (_local14 * _local15)); _local22 = ((_local11 * _local20) - (_local12 * _local19)); return ((((((_local23 >= 0)) && ((_local22 >= 0)))) && ((_local21 >= 0)))); } public function area(_arg1:Array):Number{ var _local2:int = _arg1.length; var _local3:Number = 0; var _local4:int = (_local2 - 1); var _local5:int; while (_local5 < _local2) { _local3 = (_local3 + ((_arg1[_local4].x * _arg1[_local5].y) - (_arg1[_local5].x * _arg1[_local4].y))); var _temp1 = _local5; _local5 = (_local5 + 1); _local4 = _temp1; }; return ((_local3 * 0.5)); } public function process(_arg1:Array):Array{ var _local5:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; var _local12:int; var _local13:int; var _local14:int; var _local15:int; var _local2:Array = new Array(); var _local3:int = _arg1.length; if (_local3 < 3){ return (null); }; var _local4:Array = new Array(); if (0 < area(_arg1)){ _local5 = 0; while (_local5 < _local3) { _local4[_local5] = _local5; _local5++; }; } else { _local5 = 0; while (_local5 < _local3) { _local4[_local5] = ((_local3 - 1) - _local5); _local5++; }; }; var _local6:int = _local3; var _local7:int = (2 * _local6); _local8 = 0; _local5 = (_local6 - 1); while (_local6 > 2) { var _temp1 = _local7; _local7 = (_local7 - 1); if (0 >= _temp1){ return (null); }; _local9 = _local5; if (_local6 <= _local9){ _local9 = 0; }; _local5 = (_local9 + 1); if (_local6 <= _local5){ _local5 = 0; }; _local10 = (_local5 + 1); if (_local6 <= _local10){ _local10 = 0; }; if (snip(_arg1, _local9, _local5, _local10, _local6, _local4)){ _local11 = _local4[_local9]; _local12 = _local4[_local5]; _local13 = _local4[_local10]; _local2.push(_arg1[_local11]); _local2.push(_arg1[_local12]); _local2.push(_arg1[_local13]); _local8++; _local14 = _local5; _local15 = (_local5 + 1); while (_local15 < _local6) { _local4[_local14] = _local4[_local15]; _local14++; _local15++; }; _local6--; _local7 = (2 * _local6); }; }; return (_local2); } } }//package couk.psyked.box2d.utils
Section 210
//Box2DWorld (couk.psyked.box2d.Box2DWorld) package couk.psyked.box2d { import flash.net.*; import flash.events.*; import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.*; import couk.psyked.box2d.utils.*; import flash.utils.*; import flash.geom.*; import wumedia.vector.*; public class Box2DWorld extends Sprite { public var mouseInteractExclusions:Array; private var worldSprite:Sprite; public var fiaTimer:Timer; private var _mouseInteraction:Boolean; private var framerate:Number;// = 16.6666666666667 private var isUpdating:Boolean;// = true public var _world:b2World; private var _framerateIndependantAnimation:Boolean; private var options:Box2DWorldOptions; private var _deferedMouseInteraction:Boolean; private var mouseJoint:b2MouseJoint; private var mouseDefinition:b2MouseJointDef; private var _animateOnEnterFrame:Boolean; private var _debugDraw:Boolean; public function Box2DWorld(_arg1:b2World, _arg2:Box2DWorldOptions){ options = _arg2; _world = _arg1; worldSprite = Box2DUtils.addDebugDraw(_arg1); Box2DMouseUtils.initialise(_world, options.scale, worldSprite); addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } function onMouseUp(_arg1:Event):void{ if (mouseJoint){ _world.DestroyJoint(mouseJoint); mouseJoint = null; }; } public function pauseUpdate(){ isUpdating = false; } public function destroyBody(_arg1:b2Body){ _world.DestroyBody(_arg1); } public function createTicTac(_arg1:int=0, _arg2:int=0, _arg3:int=30, _arg4:int=0, _arg5:int=0, _arg6:Number=2, _arg7:Number=0.1){ var _local8:b2BodyDef = new b2BodyDef(); _local8.position.Set((_arg1 / options.scale), (_arg2 / options.scale)); _local8.linearDamping = 0.25; _local8.angularDamping = 0.25; var _local9:b2CircleDef = new b2CircleDef(); _local9.radius = (_arg3 / options.scale); _local9.density = _arg6; _local9.friction = 0.3; _local9.restitution = _arg7; _local9.localPosition = new b2Vec2((_arg3 / options.scale), 0); var _local10:b2CircleDef = new b2CircleDef(); _local10.radius = (_arg3 / options.scale); _local10.density = _arg6; _local10.friction = 0.3; _local10.restitution = _arg7; _local10.localPosition = new b2Vec2((-(_arg3) / options.scale), 0); var _local11:b2PolygonDef = new b2PolygonDef(); _local11.SetAsBox((_arg3 / options.scale), (_arg3 / options.scale)); _local11.density = _arg6; _local11.friction = 0.3; var _local12:b2Body = _world.CreateBody(_local8); _local9.userData = _local12; _local10.userData = _local12; _local11.userData = _local12; _local12.CreateShape(_local9); _local12.CreateShape(_local10); _local12.CreateShape(_local11); _local12.SetMassFromShapes(); _local12.SetAngularVelocity(_arg5); _local12.SetAngle(((_arg4 % 360) * (Math.PI / 180))); _local12.SetBullet(true); return (_local12); } function onMouseDown(_arg1:Event):void{ var _local2:b2Body; var _local3:b2MouseJointDef; _local2 = Box2DMouseUtils.getTopBodyAtMouse(); if (_local2){ _local3 = new b2MouseJointDef(); _local3.body1 = _world.GetGroundBody(); _local3.body2 = _local2; _local3.target.Set((mouseX / 30), (mouseY / 30)); _local3.maxForce = 30000; mouseJoint = (_world.CreateJoint(_local3) as b2MouseJoint); }; } public function get debugDraw():Boolean{ return (_debugDraw); } public function updateBox2D(_arg1:Event=null):void{ var _local2:Number; var _local3:Number; var _local4:b2Vec2; if (!isUpdating){ return; }; _world.Step((1 / 30), 15, 15); if (mouseJoint){ _local2 = (mouseX / 30); _local3 = (mouseY / 30); _local4 = new b2Vec2(_local2, _local3); mouseJoint.SetTarget(_local4); }; } public function createComplexPolygon(_arg1:int, _arg2:int, _arg3:Array, _arg4:int=0, _arg5:Number=1, _arg6:Number=0){ if (_arg3.length < 3){ throw (new Error("Complex Polygons must have at least 3 points.")); }; var _local7:b2BodyDef = new b2BodyDef(); _local7.position.Set((_arg1 / options.scale), (_arg2 / options.scale)); var _local8:b2Body = _world.CreateBody(_local7); _local8.SetAngle(((_arg4 % 360) * (Math.PI / 180))); var _local9:Array = PolygonTool.getTriangulatedPoly(_arg3); if (_local9 != null){ makeComplexBody(_local8, _local9, _arg5, _arg6); } else { makeComplexBody(_local8, PolygonTool.getConvexPoly(_arg3), _arg5, _arg6); }; _local8.SetMassFromShapes(); return (_local8); } public function set mouseInteraction(_arg1:Boolean):void{ if (stage){ if (_arg1){ if (!_mouseInteraction){ stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); }; } else { if (_mouseInteraction){ stage.removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); }; }; _mouseInteraction = _arg1; _deferedMouseInteraction = _arg1; } else { _deferedMouseInteraction = _arg1; }; } public function get framerateIndependantAnimation():Boolean{ return (_framerateIndependantAnimation); } private function onAddedToStage(_arg1:Event):void{ removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); mouseInteraction = _deferedMouseInteraction; } public function stopTimer(){ fiaTimer.removeEventListener(TimerEvent.TIMER, updateBox2D); fiaTimer = null; } function makeComplexBody(_arg1:b2Body, _arg2:Array, _arg3:Number=1, _arg4:Number=0):void{ var _local7:b2PolygonDef; var _local8:int; var _local5:int = int((_arg2.length / 3)); var _local6:int; while (_local6 < _local5) { _local7 = new b2PolygonDef(); _local7.density = _arg3; _local7.friction = 0.43; _local7.restitution = _arg4; _local7.vertexCount = 3; _local8 = (_local6 * 3); _local7.vertices[0].Set((_arg2[_local8].x / 30), (_arg2[_local8].y / 30)); _local7.vertices[1].Set((_arg2[(_local8 + 1)].x / 30), (_arg2[(_local8 + 1)].y / 30)); _local7.vertices[2].Set((_arg2[(_local8 + 2)].x / 30), (_arg2[(_local8 + 2)].y / 30)); _local7.userData = _arg1; _arg1.CreateShape(_local7); _local6++; }; _arg1.SetMassFromShapes(); _local7.userData = _arg1; _arg1.CreateShape(_local7); } public function unPauseUpdate(){ isUpdating = true; } public function set animateOnEnterFrame(_arg1:Boolean):void{ if (_arg1){ if (!_animateOnEnterFrame){ addEventListener(Event.ENTER_FRAME, updateBox2D); }; } else { if (_animateOnEnterFrame){ removeEventListener(Event.ENTER_FRAME, updateBox2D); }; }; _animateOnEnterFrame = _arg1; } public function createRectangle(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int=0, _arg6:Number=1){ var _local7:b2BodyDef = new b2BodyDef(); _local7.position.Set((_arg1 / options.scale), (_arg2 / options.scale)); _local7.linearDamping = 0.25; _local7.angularDamping = 0.25; var _local8:b2PolygonDef = new b2PolygonDef(); _local8.SetAsBox((_arg3 / options.scale), (_arg4 / options.scale)); _local8.density = _arg6; _local8.friction = 5; var _local9:b2Body = _world.CreateBody(_local7); _local9.SetAngle(((_arg5 % 360) * (Math.PI / 180))); _local8.userData = _local9; _local9.CreateShape(_local8); _local9.SetMassFromShapes(); return (_local9); } public function get mouseInteraction():Boolean{ return (_mouseInteraction); } public function createPolyFromLibraryShape(_arg1:int, _arg2:int, _arg3:String, _arg4:String, _arg5:int=0):void{ var loader:URLLoader; var onLoaded:Function; var x = _arg1; var y = _arg2; var shapeName = _arg3; var libraryName = _arg4; var rotation = _arg5; onLoaded = function (_arg1:Event=null):void{ var _local3:Point; VectorShapes.extractFromLibrary(loader.data, [shapeName]); var _local2:Array = VectorShapes.getPoints(shapeName, 1); for each (_local3 in _local2) { trace(_local3.x, _local3.y); }; if (_local2){ createComplexPolygon(x, y, _local2, rotation); }; }; loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, onLoaded); loader.load(new URLRequest(libraryName)); } public function set debugDraw(_arg1:Boolean):void{ if (_arg1){ if (!contains(worldSprite)){ addChild(worldSprite); }; } else { if (contains(worldSprite)){ removeChild(worldSprite); }; }; _debugDraw = _arg1; } public function get animateOnEnterFrame():Boolean{ return (_animateOnEnterFrame); } public function createCircle(_arg1:int=0, _arg2:int=0, _arg3:int=30, _arg4:int=0, _arg5:Number=1, _arg6:Number=0){ var _local7:b2BodyDef = new b2BodyDef(); _local7.isBullet = true; _local7.position.Set((_arg1 / options.scale), (_arg2 / options.scale)); _local7.linearDamping = 0.25; _local7.angularDamping = 0.25; var _local8:b2CircleDef = new b2CircleDef(); _local8.radius = (_arg3 / options.scale); _local8.density = _arg5; _local8.friction = 3; _local8.restitution = _arg6; var _local9:b2Body = _world.CreateBody(_local7); _local9.SetAngle(((_arg4 % 360) * (Math.PI / 180))); _local8.userData = _local9; _local9.CreateShape(_local8); _local9.SetMassFromShapes(); return (_local9); } public function set framerateIndependantAnimation(_arg1:Boolean):void{ if (_arg1){ if (!_framerateIndependantAnimation){ fiaTimer = new Timer(framerate); fiaTimer.addEventListener(TimerEvent.TIMER, updateBox2D, false, 0, true); fiaTimer.start(); }; } else { if (_framerateIndependantAnimation){ fiaTimer.removeEventListener(TimerEvent.TIMER, updateBox2D); fiaTimer.stop(); fiaTimer = null; }; }; _framerateIndependantAnimation = _arg1; } } }//package couk.psyked.box2d
Section 211
//bird_mc_157 (mayhem34_fla.bird_mc_157) package mayhem34_fla { import flash.display.*; public dynamic class bird_mc_157 extends MovieClip { public function bird_mc_157(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 212
//btn_59 (mayhem34_fla.btn_59) package mayhem34_fla { import flash.display.*; public dynamic class btn_59 extends MovieClip { public function btn_59(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 213
//btn_61 (mayhem34_fla.btn_61) package mayhem34_fla { import flash.display.*; public dynamic class btn_61 extends MovieClip { public function btn_61(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 214
//btn_62 (mayhem34_fla.btn_62) package mayhem34_fla { import flash.display.*; public dynamic class btn_62 extends MovieClip { public function btn_62(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 215
//btn_63 (mayhem34_fla.btn_63) package mayhem34_fla { import flash.display.*; public dynamic class btn_63 extends MovieClip { public function btn_63(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 216
//btn_76 (mayhem34_fla.btn_76) package mayhem34_fla { import flash.display.*; public dynamic class btn_76 extends MovieClip { public function btn_76(){ addFrameScript(0, frame1, 9, frame10); } function frame10(){ stop(); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 217
//Eater01_hit_129 (mayhem34_fla.Eater01_hit_129) package mayhem34_fla { import flash.display.*; public dynamic class Eater01_hit_129 extends MovieClip { public function Eater01_hit_129(){ addFrameScript(60, frame61); } function frame61(){ stop(); } } }//package mayhem34_fla
Section 218
//Eater01_mc_128 (mayhem34_fla.Eater01_mc_128) package mayhem34_fla { import flash.display.*; public dynamic class Eater01_mc_128 extends MovieClip { public var fx:MovieClip; public function Eater01_mc_128(){ addFrameScript(0, frame1, 9, frame10); } function frame1(){ stop(); } function frame10(){ stop(); if (MovieClip(parent).scaleX < 0){ fx.scaleX = -1; }; } } }//package mayhem34_fla
Section 219
//Eater01_wait_45 (mayhem34_fla.Eater01_wait_45) package mayhem34_fla { import flash.display.*; public dynamic class Eater01_wait_45 extends MovieClip { public var played; public function Eater01_wait_45(){ addFrameScript(0, frame1, 59, frame60, 60, frame61, 89, frame90, 119, frame120); } function frame120(){ gotoAndPlay(1); } function frame90(){ gotoAndPlay(1); } function frame60(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 60) + 1)); } function frame61(){ gotoAndPlay(("_idle0" + Math.ceil((Math.random() * 2)))); } function frame1(){ if (!played){ gotoAndPlay(Math.ceil((60 * Math.random()))); played = true; }; } } }//package mayhem34_fla
Section 220
//eater02_head_wait_103 (mayhem34_fla.eater02_head_wait_103) package mayhem34_fla { import flash.display.*; public dynamic class eater02_head_wait_103 extends MovieClip { public function eater02_head_wait_103(){ addFrameScript(59, frame60, 60, frame61, 90, frame91, 119, frame120); } function frame61(){ gotoAndPlay(("_idle0" + Math.ceil((Math.random() * 2)))); } function frame120(){ gotoAndPlay(1); } function frame91(){ gotoAndPlay(1); } function frame60(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 60) + 1)); } } }//package mayhem34_fla
Section 221
//Eater02_hit_214 (mayhem34_fla.Eater02_hit_214) package mayhem34_fla { import flash.display.*; public dynamic class Eater02_hit_214 extends MovieClip { public function Eater02_hit_214(){ addFrameScript(60, frame61); } function frame61(){ stop(); } } }//package mayhem34_fla
Section 222
//Eater02_mc_213 (mayhem34_fla.Eater02_mc_213) package mayhem34_fla { import flash.display.*; public dynamic class Eater02_mc_213 extends MovieClip { public var fx:MovieClip; public function Eater02_mc_213(){ addFrameScript(0, frame1, 9, frame10); } function frame1(){ stop(); } function frame10(){ stop(); if (MovieClip(parent).scaleX < 0){ fx.scaleX = -1; }; } } }//package mayhem34_fla
Section 223
//Eater02_wait_101 (mayhem34_fla.Eater02_wait_101) package mayhem34_fla { import flash.display.*; public dynamic class Eater02_wait_101 extends MovieClip { public var played; public function Eater02_wait_101(){ addFrameScript(0, frame1, 59, frame60, 60, frame61, 89, frame90, 119, frame120); } function frame120(){ gotoAndPlay(1); } function frame90(){ gotoAndPlay(1); } function frame60(){ gotoAndPlay((60 + Math.ceil((2 * Math.random())))); } function frame61(){ gotoAndPlay(("_idle0" + Math.ceil((Math.random() * 2)))); } function frame1(){ if (!played){ gotoAndPlay(Math.ceil((60 * Math.random()))); played = true; }; } } }//package mayhem34_fla
Section 224
//eater03_head_wait_115 (mayhem34_fla.eater03_head_wait_115) package mayhem34_fla { import flash.display.*; public dynamic class eater03_head_wait_115 extends MovieClip { public function eater03_head_wait_115(){ addFrameScript(89, frame90, 90, frame91, 120, frame121, 149, frame150); } function frame121(){ gotoAndPlay(1); } function frame90(){ gotoAndPlay((90 + Math.ceil((2 * Math.random())))); } function frame91(){ gotoAndPlay(("_idle0" + Math.ceil((Math.random() * 2)))); } function frame150(){ gotoAndPlay(1); } } }//package mayhem34_fla
Section 225
//Eater03_hit_212 (mayhem34_fla.Eater03_hit_212) package mayhem34_fla { import flash.display.*; public dynamic class Eater03_hit_212 extends MovieClip { public function Eater03_hit_212(){ addFrameScript(60, frame61); } function frame61(){ stop(); } } }//package mayhem34_fla
Section 226
//Eater03_mc_211 (mayhem34_fla.Eater03_mc_211) package mayhem34_fla { import flash.display.*; public dynamic class Eater03_mc_211 extends MovieClip { public var fx:MovieClip; public function Eater03_mc_211(){ addFrameScript(0, frame1, 9, frame10); } function frame1(){ stop(); } function frame10(){ stop(); if (MovieClip(parent).scaleX < 0){ fx.scaleX = -1; }; } } }//package mayhem34_fla
Section 227
//Eater03_wait_113 (mayhem34_fla.Eater03_wait_113) package mayhem34_fla { import flash.display.*; public dynamic class Eater03_wait_113 extends MovieClip { public var played; public function Eater03_wait_113(){ addFrameScript(0, frame1, 59, frame60, 60, frame61, 89, frame90, 119, frame120); } function frame120(){ gotoAndPlay(1); } function frame90(){ gotoAndPlay(1); } function frame60(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 60) + 1)); } function frame61(){ gotoAndPlay(("_idle0" + Math.ceil((Math.random() * 2)))); } function frame1(){ if (!played){ gotoAndPlay(Math.ceil((60 * Math.random()))); played = true; }; } } }//package mayhem34_fla
Section 228
//engine_153 (mayhem34_fla.engine_153) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import couk.psyked.box2d.*; import couk.psyked.box2d.utils.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import com.greensock.*; import com.greensock.easing.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class engine_153 extends MovieClip { public var levelBg:MovieClip; public var powerArrow:MovieClip; public var isPaused:Boolean; public var throwDelayTimer; public var eaters:Array; public var timeRoller:int; public var isCatchAllow:Boolean; public var bouncedTrampoline; public var m_contactListener; public var enemies:Array; public var pBoxes:Array; public var MAX_POWER:int; public var POWER_OFFSET:uint; public var levelGraphics:MovieClip; public var cThrower:MovieClip; public var multi:uint; public var TRIPLEHITSCORE:uint; public var POWER_MULTI:Number; public var launch_x:int; public var PROPHITSCORE:uint; public var air:Boolean; public var grenade:b2Body; public var sb:MovieClip; public var pBodies:Array; public var canvas:MovieClip; public var grPrevY:Number; public var scoreThrowTime:uint; public var b:b2Body; public var BOOM_RADIUS:Number; public var grPrevX:Number; public var enemyCount:uint; public var FUSE:Timer; public var restarting:Boolean; public var ROLLS:uint; public var allowTimer:Timer; public var passes:uint; public var killTimer:uint; public var gaTimer:uint; public var grGfx:MovieClip; public var BOOM_POWER:int; public var score:int; public var isGrenadeChange; public var dad:MovieClip; public var MIN_POWER:int; public var world:Box2DWorld; public var pEnemies:Array; public var options:Box2DWorldOptions; public var currentShape:MovieClip; public var rabbids:Array; public var DOUBLEHITSCORE:uint; public var bird:MovieClip; public var activeRabbid:MovieClip; public var boxes:Array; public var TIME:int; public var clickX:int; public var clickY:int; public var SOUNDCUT:uint; public var gameEnemies; public var firstRabbid:MovieClip; public var bounced:Boolean; public var HITSCORE:uint; public var cLevel:uint; public var gameBoxes; public var isThrowDelayed:Boolean; public var liveGrenade:Boolean; public var shapes:Array; public var levelXML:XML; public var launch_y:int; public function engine_153(){ addFrameScript(0, frame1); } public function checkSleep(){ if (grenade){ if (((grenade.IsSleeping()) && ((killTimer < 150)))){ killTimer = 150; }; killTimer++; if ((((killTimer >= 165)) && ((bird.visible == false)))){ callBird(); }; } else { killTimer = 0; }; } public function doImport(){ var _local1:XML; var _local2:props; var _local3:uint; enemyCount = 0; var _local4:uint; while (_local4 < levelXML.polys.children().length()) { _local1 = levelXML.polys.children()[_local4]; currentShape = new MovieClip(); currentShape.pointsData = stringToPoints(String(_local1.points)); shapes.push(currentShape); _local4++; }; var _local5:uint; while (_local5 < levelXML.rabbids.children().length()) { _local1 = levelXML.rabbids.children()[_local5]; _local2 = new props(); _local2.x = (_local1.@x - 100); _local2.y = (_local1.@y - 100); _local2.gotoAndStop(_local1.@name); if (_local1.@facing == "left"){ _local2.scaleX = -(_local2.scaleX); }; addChildAt(_local2, (this.getChildIndex(levelGraphics) + 1)); rabbids.push(_local2); _local2.mc.gotoAndStop("wait"); if (_local2.currentLabel == "thrower"){ _local2.mc.gotoAndStop("reload"); firstRabbid = _local2; grPrevX = firstRabbid.x; grPrevX = firstRabbid.y; grGfx.x = grPrevX; grGfx.x = grPrevY; }; _local5++; }; _local5 = 0; while (_local5 < levelXML.eaters.children().length()) { _local1 = levelXML.eaters.children()[_local5]; _local2 = new props(); _local2.x = (_local1.@x - 100); _local2.y = (_local1.@y - 100); _local2.gotoAndStop(_local1.@name); _local2.isFull = false; if (_local1.@facing == "left"){ _local2.scaleX = -(_local2.scaleX); }; addChildAt(_local2, (this.getChildIndex(levelGraphics) + 1)); eaters.push(_local2); enemyCount++; _local5++; }; var _local6:uint; while (_local6 < levelXML.props.children().length()) { _local1 = levelXML.props.children()[_local6]; _local2 = new props(); _local2.x = (_local1.@x - 100); _local2.y = (_local1.@y - 100); _local2.rotation = _local1.@rotation; _local2.gotoAndStop(_local1.name); addChildAt(_local2, (this.getChildIndex(levelGraphics) + 1)); if (String(_local1.name).indexOf("grunt") != -1){ enemies.push(_local2); _local2.dead = false; } else { if (String(_local1.name).indexOf("rabbid") == -1){ boxes.push(_local2); }; }; _local6++; }; } public function createAllBodies(){ var _local2:Array; var _local3:props; var _local5:int; var _local6:uint; var _local7:uint; var _local8:String; var _local9:uint; world.pauseUpdate(); var _local1:uint; var _local4:uint; while (_local4 < shapes.length) { _local2 = new Array(); _local9 = 0; while (_local9 < shapes[_local4].pointsData.length) { _local2.push(new Point(shapes[_local4].pointsData[_local9][0], shapes[_local4].pointsData[_local9][1])); _local9++; }; b = world.createComplexPolygon(0, 0, _local2, 0, 0); pBodies.push(b); _local1++; _local4++; }; _local4 = 0; while (_local4 < boxes.length) { _local5 = boxes[_local4].rotation; boxes[_local4].rotation = 0; _local6 = (boxes[_local4].width / 2); _local7 = (boxes[_local4].height / 2); boxes[_local4].rotation = _local5; if (boxes[_local4].currentLabel != "watertrap"){ b = world.createComplexPolygon(boxes[_local4].x, boxes[_local4].y, nameToPoints(String(boxes[_local4].currentLabel)), boxes[_local4].rotation, 0.2, 0.1); } else { b = world.createComplexPolygon(boxes[_local4].x, boxes[_local4].y, nameToPoints(String(boxes[_local4].currentLabel)), boxes[_local4].rotation, 0, levelXML.@trapRestitution); b.bodyType = 2; }; _local8 = boxes[_local4].currentLabel; if (_local8.indexOf("rock") != -1){ b.bodyType = 4; } else { if (((((!((_local8.indexOf("stick") == -1))) || (!((_local8.indexOf("plank") == -1))))) || (!((_local8.indexOf("log") == -1))))){ b.bodyType = 3; }; }; b.SetBullet(true); pBodies.push(b); pBoxes.push(b); _local3 = new props(); _local3.gotoAndStop(boxes[_local4].currentLabel); _local3.x = boxes[_local4].x; _local3.y = boxes[_local4].y; _local3.rotation = boxes[_local4].rotation; _local1++; _local4++; }; trace("created: ", _local1); world.unPauseUpdate(); } public function degToRad(_arg1:Number){ return (((_arg1 * Math.PI) / 180)); } public function initGame(_arg1:uint, _arg2:String){ dad.mb.startMusic(getLevelMusic()); trace(_arg1, _arg2); cLevel = _arg1; dad.so.data.scores[25] = cLevel; var _local3:Class = (getDefinitionByName(_arg2) as Class); levelGraphics = new (_local3); levelBg = new (_local3); this.addChild(levelGraphics); this.setChildIndex(grGfx, this.getChildIndex(levelGraphics)); this.setChildIndex(powerArrow, this.getChildIndex(levelGraphics)); this.setChildIndex(bird, this.getChildIndex(levelGraphics)); levelXML = dad.levelsXML.children()[cLevel]; ROLLS = uint(levelXML.@tictacs); TIME = uint(levelXML.@time); trace("rolls: ", ROLLS, "time: ", TIME); score = 0; } public function callBird(){ bird.gotoAndStop("fly"); bird.visible = true; bird.x = -100; bird.y = -100; bird.rotation = -70; TweenLite.to(bird, 1, {x:grGfx.x, y:grGfx.y, rotation:0, ease:Sine.easeOut, onComplete:leaveBird}); } public function ridBg(_arg1:MovieClip){ } public function updateSprites(){ var _local1:uint; while (_local1 < boxes.length) { boxes[_local1].x = uint((pBoxes[_local1].GetPosition().x * 30)); boxes[_local1].y = uint((pBoxes[_local1].GetPosition().y * 30)); boxes[_local1].rotation = radToDeg(pBoxes[_local1].GetAngle()); _local1++; }; if (grenade != null){ grGfx.visible = true; grPrevX = grGfx.x; grPrevY = grGfx.y; grGfx.x = uint((grenade.GetPosition().x * 30)); grGfx.y = uint((grenade.GetPosition().y * 30)); grGfx.rotation = radToDeg(grenade.GetAngle()); } else { grGfx.visible = false; }; } public function leaveBird(){ doFuse(); multi = 1; bird.gotoAndStop("grab"); TweenLite.to(bird, 0.6, {x:740, y:-100, rotation:70, ease:Sine.easeIn, onComplete:ridBird}); } public function nextLevel(){ MovieClip(parent).setMessage(); score = 0; restarting = true; world.pauseUpdate(); destroyAllBodies(); clearAllGraphics(); cLevel++; dad.cLevel++; dad.checkMusic(); trace(dad.cLevel, cLevel, "*******************************************************************"); initGame(cLevel, dad.getLevelName()); doImport(); createAllBodies(); liveGrenade = false; throwGrenade(true); isCatchAllow = false; allowTimer.stop(); FUSE.stop(); world.unPauseUpdate(); restarting = false; dad.gameUi.levelNum.setNum((cLevel + 1)); isPaused = false; } function frame1(){ stop(); sb = MovieClip(parent).sb; SOUNDCUT = 1; bird.visible = false; timeRoller = 30; isPaused = false; killTimer = 0; scoreThrowTime = 0; bounced = false; bouncedTrampoline = false; multi = 1; passes = 0; gaTimer = getTimer(); HITSCORE = 250; DOUBLEHITSCORE = 1000; TRIPLEHITSCORE = 2000; PROPHITSCORE = 100; score = 0; restarting = false; options = new Box2DWorldOptions(900, 700, 30, 9.8); options.setWorldEdges(); world = Box2DUtils.createBoxedWorld(options); world.mouseInteractExclusions = new Array(); world.mouseInteraction = false; world.framerateIndependantAnimation = true; m_contactListener = new b2ContactListener(); m_contactListener.dad = MovieClip(this); world._world.SetContactListener(m_contactListener); addChild(world); grGfx.mouseEnabled = false; grGfx.mouseChildren = false; shapes = new Array(); enemies = new Array(); boxes = new Array(); rabbids = new Array(); eaters = new Array(); pBodies = new Array(); pEnemies = new Array(); pBoxes = new Array(); grenade = null; gameEnemies = new Array(); gameBoxes = new Array(); isGrenadeChange = true; allowTimer = new Timer(1000); allowTimer.addEventListener(TimerEvent.TIMER, allowCatch); dad = MovieClip(parent); FUSE = new Timer(3000); throwDelayTimer = new Timer(600); FUSE.addEventListener(TimerEvent.TIMER, doFuse); throwDelayTimer.addEventListener(TimerEvent.TIMER, liftThrowDelay); POWER_OFFSET = 33; POWER_MULTI = 5; MIN_POWER = 20; MAX_POWER = (450 + POWER_OFFSET); liveGrenade = false; isThrowDelayed = false; isCatchAllow = true; air = false; grPrevX = 0; grPrevY = 0; launch_x = 0; launch_y = 0; BOOM_RADIUS = 2.7; BOOM_POWER = 8; this.addEventListener(Event.ENTER_FRAME, doFrame, false, 0, true); this.addEventListener(MouseEvent.MOUSE_DOWN, doClick, false, 0, true); initGame(dad.cLevel, getLevelName()); doImport(); createAllBodies(); throwGrenade(true); isPaused = true; } public function pointsToDeg(_arg1, _arg2, _arg3, _arg4){ var _local5:* = Math.atan2((_arg2 - _arg4), (_arg1 - _arg3)); return ((_local5 * (180 / Math.PI))); } public function addComas(_arg1:String){ var _local2:Array = new Array(); while (3 < _arg1.length) { _local2.push(_arg1.slice((_arg1.length - 3), _arg1.length)); _arg1 = _arg1.slice(0, (_arg1.length - 3)); }; while (_local2.length > 0) { _arg1 = (_arg1 + ("," + _local2.pop())); }; return (_arg1); } public function ridBird(){ bird.visible = false; } public function addScore(_arg1:int){ score = (score + _arg1); MovieClip(parent).gameUi.scoreNum.setNum(score); trace("SCORE in addscore:", score); } public function radToDeg(_arg1:Number){ return (((_arg1 * 180) / Math.PI)); } public function stringToPoints(_arg1:String){ var _local2:Array = new Array(); var _local3:Array = _arg1.split(" "); var _local4:uint; while (_local4 < _local3.length) { if (_local3[_local4] == ""){ return (_local2); }; _local2.push([(_local3[_local4] - 100), (_local3[(_local4 + 1)] - 100)]); _local4 = (_local4 + 2); }; return (_local2); } public function getLevelName(){ var _local2:String; var _local1:uint = (dad.cLevel + 1); if (_local1 < 10){ _local2 = ("0" + String(_local1)); } else { _local2 = String(_local1); }; _local2 = ("level" + _local2); return (_local2); } public function segmentDistanceSquare(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int):uint{ var _local7:Point = projectedPoint(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6); if (isAbove(_local7.x, _local7.y, _arg3, _arg4, _arg5, _arg6)){ return (distance(_arg1, _arg2, _local7.x, _local7.y)); }; return (Math.min(distance(_arg3, _arg4, _arg1, _arg2), distance(_arg5, _arg6, _arg1, _arg2))); } public function throwGrenade(_arg1:Boolean=false){ var _local2:uint; if (grenade == null){ if ((((ROLLS < 1)) && (!(liveGrenade)))){ return; }; _local2 = 0; while (_local2 < rabbids.length) { if ((((String(rabbids[_local2].currentLabel) == "thrower")) && (!(liveGrenade)))){ launch_x = rabbids[_local2].x; launch_y = (rabbids[_local2].y - 10); _local2 = rabbids.length; activeRabbid = firstRabbid; cThrower = firstRabbid; }; _local2++; }; if (((_arg1) || (isThrowDelayed))){ return; }; if (powerArrow.powerMask.scaleX < 0.6){ activeRabbid.mc.gotoAndStop("throwsmall"); } else { activeRabbid.mc.gotoAndStop("throw"); }; liveGrenade = true; isCatchAllow = false; throwDelayTimer.start(); isThrowDelayed = true; }; } public function doFuse(_arg1:TimerEvent=null){ ROLLS--; bounced = false; bouncedTrampoline = false; scoreThrowTime = 0; passes = 0; trace("ROLLSLEFT: ", ROLLS); throwDelayTimer.stop(); isThrowDelayed = false; if (grenade != null){ world.destroyBody(grenade); grenade = null; } else { if (liveGrenade){ }; }; launch_x = firstRabbid.x; launch_y = firstRabbid.y; firstRabbid.mc.gotoAndStop("reload"); activeRabbid = firstRabbid; liveGrenade = false; allowTimer.stop(); FUSE.stop(); if (isPaused){ return; }; if (enemyCount <= 0){ dad.endgame("win", score, TIME, ROLLS); happyThrowers(); } else { if (ROLLS <= 0){ dad.endgame("rolls", score, TIME, ROLLS); firstRabbid.mc.gotoAndStop("fail"); dad.ga.trackEvent("MelonMangoMayhem", ("level" + String((dad.cLevel + 1))), "fail", Math.round((gaTimer / 1000))); sb.playSound(2, 10, 28); }; }; } public function isAbove(_arg1:Number, _arg2:Number, _arg3:int, _arg4:int, _arg5:int, _arg6:int):Boolean{ return (((distance(_arg1, _arg2, _arg3, _arg4) + distance(_arg1, _arg2, _arg5, _arg6)) <= distance(_arg3, _arg4, _arg5, _arg6))); } public function popInfo(_arg1:int, _arg2:int, _arg3:String, _arg4:String=""){ if (_arg1 < 80){ _arg1 = 80; } else { if (_arg1 > 528){ _arg1 = 528; }; }; if (_arg2 < 80){ _arg2 = 80; } else { if (_arg2 > 400){ _arg2 = 400; }; }; var _local5:popBubble = new popBubble(); _local5.x = _arg1; _local5.y = _arg2; _local5.txt.text = _arg3; _local5.txt2.text = _arg4; this.addChild(_local5); } public function checkNom(){ if (!grenade){ return; }; var _local1:int = (grenade.GetPosition().x * 30); var _local2:int = (grenade.GetPosition().y * 30); var _local3:uint; while (_local3 < eaters.length) { if ((((segmentDistanceSquare(eaters[_local3].x, eaters[_local3].y, _local1, _local2, grPrevX, grPrevY) < Math.pow(50, 2))) && (!(eaters[_local3].isFull)))){ trace("NOM"); sb.playSound(2, 10, 10); sb.playSound(10, 5, 20); sb.playSound(0, 6, 45); activeRabbid = firstRabbid; cThrower = firstRabbid; launch_x = firstRabbid.x; launch_y = (firstRabbid.y - 10); grPrevX = firstRabbid.x; grPrevX = firstRabbid.y; grGfx.visible = false; grGfx.x = grPrevX; grGfx.x = grPrevY; cThrower = firstRabbid; world.destroyBody(grenade); grenade = null; enemyCount--; eaters[_local3].isFull = true; eaters[_local3].mc.gotoAndStop("hit"); throwGrenade(true); isCatchAllow = false; allowTimer.stop(); FUSE.stop(); air = false; _local3 = eaters.length; processNomScore(); liveGrenade = false; doFuse(); isCatchAllow = false; allowTimer.stop(); multi++; }; _local3++; }; } public function pointDistance(_arg1:int, _arg2:int, _arg3:int, _arg4:int):Number{ return (Math.sqrt((Math.pow((_arg3 - _arg1), 2) + Math.pow((_arg4 - _arg2), 2)))); } public function handleThrow(){ var _local1:b2Vec2; var _local2:int; var _local3:int; var _local4:Boolean; var _local5:uint; if (isPaused){ powerArrow.visible = false; powerArrow.alpha = 0; return; }; if ((((grenade == null)) && (!(isThrowDelayed)))){ powerArrow.x = launch_x; powerArrow.y = launch_y; if (activeRabbid.x < mouseX){ activeRabbid.scaleX = 1; } else { activeRabbid.scaleX = -1; }; _local1 = powerVector(launch_x, launch_y, mouseX, mouseY); powerArrow.powerMask.scaleX = ((_local1.Length() * 29.7) / MAX_POWER); powerArrow.rotation = pointsToDeg(mouseX, mouseY, launch_x, launch_y); powerArrow.visible = true; if (powerArrow.alpha == 0){ TweenLite.to(powerArrow, 0.3, {alpha:1, ease:Strong.easeOut}); }; } else { powerArrow.visible = false; powerArrow.alpha = 0; if (!isThrowDelayed){ _local2 = (grenade.GetPosition().x * 30); _local3 = (grenade.GetPosition().y * 30); _local4 = true; _local5 = 0; while (_local5 < rabbids.length) { if (segmentDistanceSquare(rabbids[_local5].x, rabbids[_local5].y, _local2, _local3, grPrevX, grPrevY) < Math.pow(50, 2)){ if (((isCatchAllow) || (!((rabbids[_local5] == cThrower))))){ sb.playSound(6, 3, 7); allowTimer.stop(); _local4 = false; world.destroyBody(grenade); grenade = null; launch_x = rabbids[_local5].x; launch_y = (rabbids[_local5].y - 10); cThrower = rabbids[_local5]; activeRabbid = rabbids[_local5]; activeRabbid.mc.gotoAndStop("reload"); throwGrenade(true); isCatchAllow = false; _local5 = (rabbids.length + 1); }; }; _local5++; }; checkNom(); }; if (_local4){ allowTimer.start(); }; }; } public function restartLevel(_arg1:Boolean=true){ gaTimer = getTimer(); score = 0; scoreThrowTime = 0; bounced = false; bouncedTrampoline = false; passes = 0; multi = 1; restarting = true; isPaused = true; destroyAllBodies(); clearAllGraphics(); initGame(dad.cLevel, getLevelName()); doImport(); createAllBodies(); liveGrenade = false; throwGrenade(true); isCatchAllow = false; allowTimer.stop(); FUSE.stop(); world.unPauseUpdate(); restarting = false; if (!_arg1){ isPaused = false; }; ROLLS = uint(levelXML.@tictacs); TIME = uint(levelXML.@time); sb.clearDelayedSounds(); } public function doFrame(_arg1:Event){ dad.gui.showTime(TIME); dad.gui.tacs.gotoAndStop((ROLLS + 1)); dad.gui.scoreNum.text = addComas(String(score)); if (restarting){ return; }; if (liveGrenade){ scoreThrowTime++; }; updateSprites(); if (isPaused){ return; }; if (timeRoller > 0){ timeRoller--; } else { TIME--; timeRoller = 30; }; if (TIME <= 0){ dad.ga.trackEvent("MelonMangoMayhem", ("level" + String((dad.cLevel + 1))), "fail", Math.round((gaTimer / 1000))); dad.endgame("time", score, TIME, ROLLS); if (!grenade){ activeRabbid.mc.gotoAndStop("fail"); sb.playSound(2, 10, 28); }; }; checkBounds(); checkSleep(); handleThrow(); } public function processNomScore(){ var _local1:uint = 50; trace("throwTime", scoreThrowTime, "bounced", bounced, "passes", passes, "multi", multi); trace("Nom! +50"); if ((scoreThrowTime / passes) <= 20){ _local1 = (_local1 + 25); trace("quickshot! +25"); } else { if ((scoreThrowTime / passes) >= 50){ trace("longshot! +25"); }; }; if (!bounced){ if (!bouncedTrampoline){ _local1 = (_local1 + 30); trace("No ground! +30"); } else { _local1 = (_local1 + 100); trace("Trickshot! +100"); }; }; if (passes > 1){ _local1 = (_local1 + 10); trace("team player! +10"); }; if (multi > 1){ _local1 = (_local1 * multi); trace(("streak! *" + String(multi))); }; trace("eaters", eaters.length); if ((((enemyCount == 0)) && (((ROLLS - 1) == (uint(levelXML.@tictacs) - eaters.length))))){ _local1 = (_local1 + 1000); trace("Perfect! +1000"); }; score = (score + _local1); } public function doClick(_arg1:MouseEvent){ if (isPaused){ powerArrow.visible = false; powerArrow.alpha = 0; return; }; clickX = mouseX; clickY = mouseY; throwGrenade(); } public function clearAllGraphics(){ this.removeChild(levelGraphics); var _local1:uint; while (_local1 < enemies.length) { if (this.contains(enemies[_local1])){ removeChild(enemies[_local1]); }; _local1++; }; _local1 = 0; while (_local1 < boxes.length) { if (this.contains(boxes[_local1])){ removeChild(boxes[_local1]); }; _local1++; }; _local1 = 0; while (_local1 < rabbids.length) { if (this.contains(rabbids[_local1])){ removeChild(rabbids[_local1]); }; _local1++; }; _local1 = 0; while (_local1 < eaters.length) { if (this.contains(eaters[_local1])){ removeChild(eaters[_local1]); }; _local1++; }; boxes = new Array(); rabbids = new Array(); eaters = new Array(); enemies = new Array(); } public function happyThrowers(){ var _local1:uint; while (_local1 < rabbids.length) { rabbids[_local1].mc.gotoAndStop("success"); dad.ga.trackEvent("MelonMangoMayhem", ("level" + String((dad.cLevel + 1))), "complete", Math.round((gaTimer / 1000))); _local1++; }; } public function powerVector(_arg1, _arg2, _arg3, _arg4){ var _local5:int = (_arg3 - _arg1); var _local6:int = (_arg4 - _arg2); var _local7:Number = Math.atan2(_local5, _local6); var _local8:Number = ((Math.sqrt(((_local5 * _local5) + (_local6 * _local6))) - POWER_OFFSET) * POWER_MULTI); if (_local8 < MIN_POWER){ _local8 = MIN_POWER; } else { if (_local8 > MAX_POWER){ _local8 = MAX_POWER; }; }; return (new b2Vec2(((Math.sin(_local7) * _local8) / 30), ((Math.cos(_local7) * _local8) / 30))); } public function cleanUp(){ removeEventListener(Event.ENTER_FRAME, doFrame); removeEventListener(MouseEvent.MOUSE_DOWN, doClick); allowTimer.removeEventListener(TimerEvent.TIMER, allowCatch); FUSE.removeEventListener(TimerEvent.TIMER, doFuse); throwDelayTimer.removeEventListener(TimerEvent.TIMER, liftThrowDelay); world.pauseUpdate(); destroyAllBodies(); world.stopTimer(); world._world = null; world = null; } public function checkBounds(){ if (!grenade){ return; }; var _local1:int = (grenade.GetPosition().x * 30); var _local2:int = (grenade.GetPosition().y * 30); if ((((((_local1 < -300)) || ((_local1 > 940)))) || ((_local2 > 780)))){ doFuse(); multi = 1; }; } public function pointHitBox(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int){ if ((((((((_arg1 > (_arg3 - (_arg5 >> 1)))) && ((_arg1 < (_arg3 + (_arg5 >> 1)))))) && ((_arg2 > (_arg4 - (_arg6 >> 1)))))) && ((_arg2 < (_arg4 + (_arg6 >> 1)))))){ return (true); }; return (false); } public function nameToPoints(_arg1:String){ var _local3:Array; var _local2:Array = new Array(); var _local4:uint; while (_local4 < dad.propXML.children().length()) { if (dad.propXML.children()[_local4].name == _arg1){ _local3 = String(dad.propXML.children()[_local4].points).split(" "); }; _local4++; }; var _local5:uint; while (_local5 < _local3.length) { if (_local3[_local5] == ""){ return (_local2); }; _local2.push(new Point(_local3[_local5], _local3[(_local5 + 1)])); _local5 = (_local5 + 2); }; return (_local2); } public function liftThrowDelay(_arg1:TimerEvent){ passes++; throwDelayTimer.stop(); isThrowDelayed = false; isCatchAllow = false; sb.playSound(11, 6); grPrevX = launch_x; grPrevY = launch_y; grGfx.x = grPrevX; grGfx.y = grPrevY; grenade = world.createTicTac(launch_x, launch_y, 6, ((Math.random() * 90) - 45), ((Math.random() * 30) - 15), 1, 0.2); grenade.ApplyImpulse(powerVector((grenade.GetPosition().x * 30), (grenade.GetPosition().y * 30), clickX, clickY), grenade.GetWorldCenter()); trace(powerVector((grenade.GetPosition().x * 30), (grenade.GetPosition().y * 30), clickX, clickY).Length()); grenade.bodyType = 1; } public function distance(_arg1:int, _arg2:int, _arg3:int, _arg4:int){ var _local5:uint = Math.abs((_arg3 - _arg1)); var _local6:uint = Math.abs((_arg4 - _arg2)); return ((Math.pow(_local5, 2) + Math.pow(_local6, 2))); } public function destroyAllBodies(){ world.pauseUpdate(); var _local1:uint; while (pBodies.length > 0) { if (!pBodies.isDead){ _local1++; world.destroyBody(pBodies.pop()); } else { pBodies.pop(); }; }; trace("Destroyed: ", _local1); shapes = new Array(); boxes = new Array(); pEnemies = new Array(); pBoxes = new Array(); if (grenade != null){ world.destroyBody(grenade); grenade = null; }; world.unPauseUpdate(); } public function getLevelMusic(){ return ((Math.floor((dad.cLevel / 5)) + 1)); } public function projectedPoint(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int){ var _local7:Point = new Point(_arg1, _arg2); var _local8:Point = new Point(_arg3, _arg4); var _local9:Point = new Point(_arg5, _arg6); var _local10:Point = new Point((_local9.x - _local8.x), (_local9.y - _local8.y)); var _local11:Number = Math.sqrt(((_local10.x * _local10.x) + (_local10.y * _local10.y))); _local10.x = (_local10.x / _local11); _local10.y = (_local10.y / _local11); var _local12:Point = new Point((_local7.x - _local8.x), (_local7.y - _local8.y)); var _local13:Number = ((_local12.x * _local10.x) + (_local12.y * _local10.y)); var _local14:Point = new Point(((_local10.x * _local13) + _local8.x), ((_local10.y * _local13) + _local8.y)); return (_local14); } public function allowCatch(_arg1:TimerEvent){ trace("allowCatch"); isCatchAllow = true; allowTimer.stop(); } public function handleContact(_arg1:b2Body, _arg2:b2Body, _arg3:uint=0, _arg4:int=0){ var _local5:Array = new Array(_arg1.bodyType, _arg2.bodyType); _local5.sort(Array.NUMERIC); var _local6:String = (String(_local5[0]) + String(_local5[1])); if (_arg3 == 0){ if (_local6 == "01"){ bounced = true; }; if (_local6 == "12"){ bouncedTrampoline = true; }; if (_arg4 > SOUNDCUT){ if (_local6.indexOf("1") != -1){ sb.playSound(7, _arg4); }; if (_local6.indexOf("2") != -1){ sb.playSound(8, _arg4); }; if (_local6.indexOf("4") != -1){ sb.playSound(5, _arg4); }; if (_local6.indexOf("3") != -1){ sb.playSound(9, _arg4); }; }; }; } } }//package mayhem34_fla
Section 229
//frames_143 (mayhem34_fla.frames_143) package mayhem34_fla { import flash.display.*; public dynamic class frames_143 extends MovieClip { public function frames_143(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 230
//loadingIcon_150 (mayhem34_fla.loadingIcon_150) package mayhem34_fla { import flash.display.*; public dynamic class loadingIcon_150 extends MovieClip { public function loadingIcon_150(){ addFrameScript(39, frame40); } function frame40(){ gotoAndPlay(1); } } }//package mayhem34_fla
Section 231
//MainTimeline (mayhem34_fla.MainTimeline) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import com.greensock.*; import com.soapcreative.net.hse.*; import com.soapcreative.events.*; import com.greensock.easing.*; import flash.media.*; import com.google.analytics.components.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public var howtoPanel:MovieClip; public var winScoreTween:Number; public var tictacLogo:MovieClip; public var failScore:int; public var winScore:int; public var restartButton:MovieClip; public var URL_MORE_GAMES:String; public var cheatClearTimer:Timer; public var levelsXML:XML; public var levelSelectPanel:MovieClip; public var lastPage:uint; public var switchNext:Boolean; public var engine:MovieClip; public var sb:MovieClip; public var __setPropDict:Dictionary; public var so:SharedObject; public var isMuted:Boolean; public var addCompleteTimer:Timer; public var tf:TextFormat; public var URL_PRIVACY:String; public var URL_LOGO:String; public var cheatText:String; public var stepRight:MovieClip; public var hashLoaded:Boolean; public var fakeCount:uint; public var winTime:int; public var submitPanel:MovieClip; public var URL_SHARE:String; public var loadTime:int; public var ga:FlashTracker; public var cLevel:uint; public var TOTAL_LEVELS:uint; public var elapsedCount:uint; public var homeButton:MovieClip; public var stepLeft:MovieClip; public var he:HighScoreEngine; public var failReason:String; public var introsXML; public var percentText:TextField; public var winRolls:int; public var winTimeTween:Number; public var addFailTimer:Timer; public var thumbsPerPage:uint; public var shad:MovieClip; public var gui:MovieClip; public var total:Number; public var thumbs:Array; public var winRollsTween:Number; public var highscoresPanel:MovieClip; public var playbutton2:MovieClip; public var mb:MovieClip; public var wantsNewsLetter:Boolean; public var cPage:uint; public var logo:MovieClip; public var myPanel:MovieClip; public var propXML; public var submittedPanel:MovieClip; public var gameoverPanel:MovieClip; public var playedOnce:Boolean; public var mButton:MovieClip; public function MainTimeline(){ __setPropDict = new Dictionary(true); super(); addFrameScript(0, frame1, 1, frame2, 9, frame10, 10, frame11, 19, frame20, 29, frame30, 39, frame40, 49, frame50, 59, frame60, 69, frame70, 79, frame80, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8, 8, frame9, 11, frame12, 12, frame13, 13, frame14, 14, frame15, 15, frame16, 16, frame17, 17, frame18, 18, frame19, 20, frame21, 21, frame22, 22, frame23, 23, frame24, 24, frame25, 25, frame26, 26, frame27, 27, frame28, 28, frame29, 30, frame31, 31, frame32, 32, frame33, 33, frame34, 34, frame35, 35, frame36, 36, frame37, 37, frame38, 38, frame39, 40, frame41, 41, frame42, 42, frame43, 43, frame44, 44, frame45, 45, frame46, 46, frame47, 47, frame48, 48, frame49, 50, frame51, 51, frame52, 52, frame53, 53, frame54, 54, frame55, 55, frame56, 56, frame57, 57, frame58, 58, frame59, 60, frame61, 61, frame62, 62, frame63, 63, frame64, 64, frame65, 65, frame66, 66, frame67, 67, frame68, 68, frame69, 70, frame71, 71, frame72, 72, frame73, 73, frame74, 74, frame75, 75, frame76, 76, frame77, 77, frame78, 78, frame79, 80, frame81, 81, frame82, 82, frame83, 83, frame84, 84, frame85, 85, frame86, 86, frame87, 87, frame88, 88, frame89, 89, frame90, 90, frame91, 91, frame92, 92, frame93, 93, frame94, 94, frame95, 95, frame96, 96, frame97, 97, frame98, 98, frame99, 99, frame100, 100, frame101, 101, frame102, 102, frame103, 103, frame104, 104, frame105, 105, frame106, 106, frame107, 107, frame108, 108, frame109, 109, frame110, 110, frame111, 111, frame112, 112, frame113, 113, frame114, 114, frame115, 115, frame116, 116, frame117, 117, frame118, 118, frame119, 119, frame120, 120, frame121, 121, frame122, 122, frame123, 123, frame124, 124, frame125); } public function getcPage(){ if (getUnlocked() >= (TOTAL_LEVELS - 1)){ cPage = Math.floor((so.data.scores[25] / thumbsPerPage)); } else { cPage = Math.floor((getUnlocked() / thumbsPerPage)); }; if (cPage > ((TOTAL_LEVELS / thumbsPerPage) - 1)){ cPage = ((TOTAL_LEVELS / thumbsPerPage) - 1); }; lastPage = cPage; if (getUnlocked() >= (TOTAL_LEVELS - 1)){ lastPage = 4; }; } public function doNextLevel(_arg1:MouseEvent){ var _local2:uint = this.x; TweenLite.to(this, 0.03, {x:_local2, ease:Strong.easeOut, overwrite:true}); deButtonize(myPanel.nextButton, true); myPanel.nextButton.removeEventListener(MouseEvent.CLICK, doNextLevel); if (cLevel >= (TOTAL_LEVELS - 1)){ engine.cleanUp(); clearPrevPanel(); gotoAndStop(60); } else { animatePanel("out", "addStartPanel"); switchNext = true; }; } public function doOver(_arg1:MouseEvent=null){ if (!_arg1.currentTarget){ return; }; if (_arg1.currentTarget.dis){ return; }; if (!_arg1.currentTarget.body){ TweenLite.to(_arg1.currentTarget, 0.5, {scaleX:1.1, scaleY:1.1, ease:Strong.easeOut}); } else { TweenLite.to(_arg1.currentTarget.body, 0.5, {scaleX:1.1, scaleY:1.1, ease:Strong.easeOut}); }; if (_arg1.currentTarget.hitTarget){ TweenLite.to(_arg1.currentTarget.hitTarget, 0.1, {scaleX:1, scaleY:1, ease:Strong.easeOut}); }; } public function restart(_arg1:MouseEvent){ if (((addCompleteTimer.running) || (addFailTimer.running))){ return; }; if (myPanel){ if (this.contains(myPanel)){ return; }; }; ga.trackEvent("MelonMangoMayhem", ("level" + String((cLevel + 1))), "replay"); ga.trackPageview((("MelonMangoMayhem/level" + String((cLevel + 1))) + "/replay")); engine.restartLevel(false); engine.popInfo(320, 240, "RETRY"); } public function showTotalBonus(){ if (!myPanel){ return; }; myPanel.bonusNameText.text = "TOTAL BONUS"; myPanel.bonusNameText.alpha = 0; TweenLite.to(myPanel.bonusNameText, 0.3, {alpha:1, ease:Strong.easeOut}); myPanel.bonusText.text = String((winRolls + winTime)); myPanel.bonusText.alpha = 0; TweenLite.to(myPanel.bonusText, 0.3, {alpha:1, ease:Strong.easeOut}); } public function updateRollsTween(){ if (myPanel){ if (myPanel.scoreText){ myPanel.bonusText.text = String(Math.round(winRollsTween)); }; }; } public function doLevelStep(_arg1:MouseEvent){ if (_arg1.currentTarget.name == "stepLeft"){ if (cPage > 0){ cPage--; handleThumbs(); }; } else { if (cPage < lastPage){ cPage++; handleThumbs(); }; }; } public function onScoreSent(_arg1:HighScoreEvent):void{ trace("SUBMIT SUCCESS", _arg1.xml); if (this.currentFrame == 70){ this.gotoAndStop(80); }; he.getHash(); } public function onComplete(_arg1:Event):void{ TweenLite.to(logo, 0.5, {y:"-160", ease:Strong.easeOut}); TweenLite.to(percentText, 0.5, {alpha:0, ease:Strong.easeOut, onComplete:begin}); } public function doThumbClick(_arg1:MouseEvent){ var _local2:MovieClip = MovieClip(_arg1.currentTarget); trace(_local2.id); if (_local2.padlock.visible){ _local2.padlock.scaleX = 1; _local2.padlock.scaleY = 1; TweenLite.from(_local2.padlock, 0.7, {scaleX:2, scaleY:2, ease:Elastic.easeOut}); } else { cLevel = _local2.id; trackGameStart(cLevel); gotoAndStop(50); }; } public function addStartPanel(){ if (switchNext){ switchNext = false; cLevel++; engine.restartLevel(); trackGameStart(cLevel); }; clearPrevPanel(); myPanel = new startPanel(); this.addChild(myPanel); buttonize(myPanel.startButton, true); myPanel.startButton.addEventListener(MouseEvent.CLICK, doStartLevel, false, 0, true); myPanel.introText.text = introsXML.children()[cLevel].@description; cramText(myPanel.introText); myPanel.levelNum1.text = String((cLevel + 1)); myPanel.levelNum2.text = myPanel.levelNum1.text; animatePanel("in"); } function frame11(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; stop(); } function frame15(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame16(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame17(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function onParseError(_arg1:XMLParseErrorEvent):void{ trace("onSubmitError", _arg1.toString()); } function frame12(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame14(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function getUnlocked(){ var _local1:uint; var _local2:uint; while (_local2 < TOTAL_LEVELS) { if (so.data.scores[_local2] > 0){ _local1++; }; _local2++; }; return (_local1); } function frame18(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame10(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; if (loadTime >= 0){ ga.trackEvent("MelonMangoMayhem", "game", "loaded", Math.floor(((getTimer() - loadTime) / 1000))); ga.trackPageview("VHACricket/main"); loadTime = -1; }; TweenLite.from(mButton, 0.5, {alpha:0, ease:Strong.easeOut}); mb.startMusic(); } function frame2(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; stop(); TweenLite.from(logo, 1, {y:"-60", ease:Elastic.easeOut}); TweenLite.from(percentText, 1, {y:"60", ease:Elastic.easeOut}); tf = new TextFormat(); tf.letterSpacing = -3; fakeCount = 0; total = 3971113; this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress); this.loaderInfo.addEventListener(Event.COMPLETE, onComplete); } function frame3(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame13(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame5(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame6(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame7(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame9(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame19(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame4(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function unPauseGame(){ clearPrevPanel(); engine.isPaused = false; } function frame26(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame1(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; stage.showDefaultContextMenu = false; URL_LOGO = "http://www.facebook.com/tictacANZ"; URL_PRIVACY = "http://tictac.com.au/privacy-policy/"; URL_SHARE = "http://www.tictac.com"; URL_MORE_GAMES = "http://www.tictac.com.au/games"; ga.trackPageview("MelonMangoMayhem/index"); ga.trackEvent("MelonMangoMayhem", "game", "index"); TOTAL_LEVELS = 25; cLevel = 0; winScore = 0; failScore = 0; winTime = 0; winRolls = 0; playedOnce = false; loadTime = getTimer(); so = SharedObject.getLocal("mangomelon01"); initSo(); isMuted = false; wantsNewsLetter = true; cheatText = ""; cheatClearTimer = new Timer(4000); cheatClearTimer.addEventListener(TimerEvent.TIMER, clearCheatText); stage.addEventListener(KeyboardEvent.KEY_DOWN, doKeyDown); hashLoaded = false; elapsedCount = getTimer(); HighScoreDemo(); levelsXML = <levels> <!-- Level 1--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="649" y="334" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="510" y="306" facing="right"/> <rabbid name="eater_2" x="390" y="305" facing="right"/> <rabbid name="eater_3" x="341" y="467" facing="left"/> </eaters> <polys> <poly> <points>710 580 710 420 700 400 680 380 660 370 640 370 620 380 600 400 590 420 590 580</points> </poly> <poly> <points>260 580 260 300 250 280 230 260 210 250 190 250 170 260 150 280 140 300 140 580</points> </poly> <poly> <points>510 580 510 370 500 350 480 330 460 320 440 320 420 330 400 350 390 370 390 580</points> </poly> <poly> <points>370 400 530 400 550 390 560 370 550 350 530 340 370 340 350 350 340 370 350 390</points> </poly> <poly> <points>400 500 330 500 310 510 300 530 310 550 330 560 400 560</points> </poly> </polys> <props/> </level> <!-- Level 2--> <level time="240" tictacs="20" trapRestitution="0"> <rabbids> <rabbid name="thrower" x="660" y="395" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="204" y="379" facing="right"/> </eaters> <polys> <poly> <points>170 580 170 190 160 170 140 150 120 140 100 140 100 580</points> </poly> <poly> <points>260 580 260 460 250 440 230 420 210 410 190 410 170 420 150 440 140 460 140 580</points> </poly> <poly> <points>150 250 420 250 440 240 450 220 440 200 420 190 150 190 130 200 120 220 130 240</points> </poly> <poly> <points>320 480 330 460 350 450 510 450 530 460 540 480 530 500 510 510 350 510 330 500</points> </poly> <poly> <points>600 580 600 480 610 460 630 440 650 430 670 430 690 440 710 460 720 480 720 580</points> </poly> </polys> <props> <prop rotation="0" x="409" y="430"> <name>rock_4</name> </prop> <prop rotation="0" x="408" y="281"> <name>rock_4</name> </prop> <prop rotation="0" x="409" y="390"> <name>rock_3</name> </prop> <prop rotation="0" x="409" y="321"> <name>rock_3</name> </prop> <prop rotation="0" x="409" y="354"> <name>rock_3</name> </prop> </props> </level> <!-- Level 3--> <level time="240" tictacs="20" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="588" y="411" facing="left"/> <rabbid name="teammate_thrower" x="342" y="262" facing="right"/> <rabbid name="teammate_thrower" x="574" y="197" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="682" y="201" facing="left"/> <rabbid name="eater_2" x="156" y="340" facing="right"/> <rabbid name="eater_3" x="169" y="179" facing="right"/> </eaters> <polys> <poly> <points>264 767 264 337 274 307 294 297 384 297 404 307 414 337 414 767</points> </poly> <poly> <points>530 592 530 491 540 467 565 452 605 452 635 463 651 487 651 639 529 637</points> </poly> <poly> <points>734 322 554 322 534 302 534 252 554 232 734 232</points> </poly> <poly> <points>114 212 204 212 224 232 224 252 204 272 114 272</points> </poly> <poly> <points>134 372 174 372 194 392 194 582 114 582 114 392</points> </poly> <poly> <points>114 212 67 212 67 273 114 271</points> </poly> <poly> <points>733 232 771 232 773 323 732 321</points> </poly> </polys> <props/> </level> <!-- Level 4--> <level time="240" tictacs="20" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="436" y="445" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="418" y="177" facing="right"/> <rabbid name="eater_2" x="427" y="286" facing="right"/> </eaters> <polys> <poly> <points>375 319 463 320 474 329 474 340 466 350 376 350 366 341 365 330</points> </poly> <poly> <points>375 530 384 510 405 490 425 481 445 480 462 490 484 510 494 527 494 578 376 579</points> </poly> <poly> <points>514 579 515 470 524 451 542 431 563 420 563 230 573 210 593 191 614 179 633 178 653 189 674 208 684 224 685 577</points> </poly> <poly> <points>306 579 307 490 294 468 274 448 276 370 264 350 244 329 223 321 204 321 183 331 164 349 155 368 154 389 134 388 115 398 106 400 104 576</points> </poly> <poly> <points>274 111 275 197 265 220 245 242 226 251 203 250 184 240 166 219 153 201 155 110</points> </poly> <poly> <points>383 241 373 231 373 219 382 210 443 209 454 219 454 228 445 240</points> </poly> </polys> <props/> </level> <!-- Level 5--> <level time="240" tictacs="20" trapRestitution="0"> <rabbids> <rabbid name="thrower" x="171" y="465" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="517" y="381" facing="left"/> <rabbid name="eater_3" x="678" y="257" facing="left"/> <rabbid name="eater_2" x="601" y="456" facing="left"/> </eaters> <polys> <poly> <points>227 578 228 552 219 530 198 509 179 500 156 499 142 509 118 528 110 548 110 579</points> </poly> <poly> <points>647 579 647 319 659 298 677 291 697 298 708 318 708 578</points> </poly> <poly> <points>318 350 319 271 327 258 337 260 348 269 347 349 337 361 326 360</points> </poly> <poly> <points>368 249 377 268 397 280 498 280 518 269 528 249 517 229 558 228 577 220 588 200 577 179 557 169 457 169 438 177 429 196 435 217 397 218 376 227</points> </poly> <poly> <points>387 348 377 349 367 339 368 280 376 270 387 269 397 280 396 338</points> </poly> <poly> <points>298 577 299 564 318 551 438 551 457 569 457 577</points> </poly> <poly> <points>318 581 318 458 326 449 338 449 347 456 350 593</points> </poly> <poly> <points>399 599 401 459 408 450 424 450 430 457 430 601</points> </poly> <poly> <points>487 589 486 429 497 416 535 416 548 426 547 592</points> </poly> <poly> <points>567 593 567 501 577 494 615 493 627 502 628 595</points> </poly> </polys> <props> <prop rotation="-84" x="359" y="379"> <name>stick_3</name> </prop> <prop rotation="0" x="383" y="446"> <name>plank_2</name> </prop> </props> </level> <!-- Level 6--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="215" y="450" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="666" y="363" facing="left"/> <rabbid name="eater_2" x="177" y="251" facing="right"/> <rabbid name="eater_2" x="634" y="182" facing="left"/> </eaters> <polys> <poly> <points>155 585 155 535 165 515 185 495 205 485 225 485 245 495 265 515 275 535 275 585</points> </poly> <poly> <points>345 585 355 565 375 545 395 535 435 535 445 515 465 505 565 505 585 515 595 535 745 535 745 585</points> </poly> <poly> <points>555 425 565 405 585 395 685 395 705 405 715 425 705 445 685 455 585 455 565 445</points> </poly> <poly> <points>745 315 625 315 605 305 595 285 595 245 605 225 625 215 745 215</points> </poly> <poly> <points>425 315 465 315 475 325 475 335 465 345 425 345 415 335 415 325</points> </poly> <poly> <points>335 265 405 265 415 255 415 245 405 235 335 235 325 245 325 255</points> </poly> <poly> <points>285 105 285 125 265 135 255 155 265 175 285 185 385 185 405 175 415 155 445 155 465 145 475 125 475 105</points> </poly> <poly> <points>105 285 195 285 215 295 225 315 215 335 195 345 105 345</points> </poly> </polys> <props> <prop rotation="-168" x="318" y="550"> <name>stick_2</name> </prop> <prop rotation="75" x="418" y="247"> <name>stick_3</name> </prop> <prop rotation="0" x="619" y="517"> <name>rock_3</name> </prop> <prop rotation="26" x="581" y="505"> <name>rock_1</name> </prop> <prop rotation="-23" x="441" y="274"> <name>log</name> </prop> <prop rotation="-7" x="673" y="200"> <name>log</name> </prop> <prop rotation="-6" x="349" y="220"> <name>log</name> </prop> <prop rotation="-7" x="450" y="300"> <name>log</name> </prop> <prop rotation="-6" x="383" y="220"> <name>log</name> </prop> <prop rotation="9" x="348" y="545"> <name>rock_1</name> </prop> <prop rotation="2" x="596" y="383"> <name>rock_2</name> </prop> <prop rotation="2" x="595" y="365"> <name>rock_1</name> </prop> <prop rotation="2" x="596" y="352"> <name>rock_1</name> </prop> <prop rotation="5" x="598" y="335"> <name>rock_2</name> </prop> <prop rotation="5" x="597" y="317"> <name>rock_1</name> </prop> <prop rotation="5" x="593" y="304"> <name>rock_1</name> </prop> </props> </level> <!-- Level 7--> <level time="120" tictacs="10" trapRestitution="0.9"> <rabbids> <rabbid name="thrower" x="392" y="413" facing="left"/> <rabbid name="teammate_thrower" x="201" y="422" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="670" y="367" facing="left"/> <rabbid name="eater_1" x="580" y="318" facing="right"/> <rabbid name="eater_2" x="298" y="517" facing="right"/> </eaters> <polys> <poly> <points>100 550 140 550 140 510 150 490 170 470 190 460 210 460 230 470 250 490 260 510 260 550 340 550 340 420 350 420 350 550 360 550 360 480 370 460 390 450 410 460 420 480 420 550 430 550 430 270 440 270 440 550 450 550 470 560 480 580 100 580</points> </poly> <poly> <points>340 350 350 350 350 270 340 260</points> </poly> <poly> <points>100 270 180 270 200 260 210 240 200 220 180 210 100 210</points> </poly> <poly> <points>520 580 520 400 530 380 550 360 570 350 590 350 610 360 630 380 640 400 640 410 660 400 680 400 700 410 720 430 730 450 730 580</points> </poly> <poly> <points>700 220 600 220 580 210 570 190 580 170 600 160 700 160 720 170 730 190 720 210</points> </poly> <poly> <points>687 159 822 159 822 220 680 220</points> </poly> </polys> <props/> </level> <!-- Level 8--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="teammate_thrower" x="370" y="471" facing="left"/> <rabbid name="thrower" x="416" y="219" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="177" y="513" facing="right"/> <rabbid name="eater_2" x="666" y="211" facing="left"/> <rabbid name="eater_3" x="247" y="372" facing="right"/> <rabbid name="eater_2" x="586" y="521" facing="left"/> </eaters> <polys> <poly> <points>288 585 288 565 268 545 238 545 228 535 218 535 208 545 148 545 128 525 108 525 108 585</points> </poly> <poly> <points>138 405 258 405 268 415 268 435 258 445 138 445 128 435 128 415</points> </poly> <poly> <points>208 405 228 385 228 195 208 175 168 175 148 195 148 385 168 405</points> </poly> <poly> <points>558 585 558 575 578 555 748 555 748 585</points> </poly> <poly> <points>628 555 608 535 608 295 618 275 638 255 658 245 678 245 698 255 718 275 728 295 728 535 708 555</points> </poly> <poly> <points>358 345 378 365 448 365 468 345 468 275 448 255 378 255 358 275</points> </poly> <poly> <points>408 365 398 375 398 505 348 505 328 525 328 585 518 585 518 525 498 505 438 505 438 375 428 365</points> </poly> <poly> <points>108 525 94 525 89 587 110 587</points> </poly> </polys> <props> <prop rotation="0" x="245" y="538"> <name>rock_1</name> </prop> <prop rotation="2" x="188" y="163"> <name>rock_2</name> </prop> <prop rotation="0" x="477" y="487"> <name>rock_3</name> </prop> </props> </level> <!-- Level 9--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="196" y="258" facing="right"/> <rabbid name="teammate_thrower" x="643" y="318" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="381" y="533" facing="right"/> <rabbid name="eater_2" x="455" y="531" facing="right"/> <rabbid name="eater_3" x="295" y="532" facing="right"/> </eaters> <polys> <poly> <points>105 335 135 335 145 325 165 305 185 295 205 295 225 305 245 325 255 335 345 335 345 265 355 245 375 225 395 215 415 215 435 225 455 245 465 265 465 335 485 345 495 365 485 385 465 395 255 395 255 565 515 565 515 505 525 485 595 455 605 465 625 485 635 505 635 585 135 585 135 395 105 395</points> </poly> <poly> <points>695 585 695 205 705 185 725 165 745 155 745 585</points> </poly> <poly> <points>625 355 665 355 675 365 665 375 625 375 615 365</points> </poly> </polys> <props> <prop rotation="155" x="557" y="471"> <name>watertrap</name> </prop> </props> </level> <!-- Level 10--> <level time="120" tictacs="11" trapRestitution="2"> <rabbids> <rabbid name="thrower" x="347" y="324" facing="right"/> </rabbids> <eaters> <rabbid name="eater_2" x="675" y="506" facing="left"/> <rabbid name="eater_1" x="153" y="269" facing="right"/> <rabbid name="eater_3" x="172" y="459" facing="right"/> </eaters> <polys> <poly> <points>130 580 130 510 150 490 190 490 210 510 210 580</points> </poly> <poly> <points>230 580 230 480 250 460 270 460 290 480 290 580</points> </poly> <poly> <points>330 580 330 480 350 460 400 460 400 440 420 420 560 420 580 440 580 480 610 480 630 500 630 540 740 540 740 580</points> </poly> <poly> <points>740 390 610 390 590 380 570 360 560 340 560 320 570 300 590 280 610 270 640 270 640 220 660 200 680 200 690 210 690 170 700 150 720 130 740 120</points> </poly> <poly> <points>100 360 250 360 270 340 270 320 250 300 250 210 240 200 220 200 210 210 210 300 100 300</points> </poly> <poly> <points>100 220 150 220 170 200 170 180 150 160 130 160 130 100 100 100</points> </poly> <poly> <points>310 360 380 360 380 370 310 370</points> </poly> <poly> <points>380 200 490 200 490 210 380 210</points> </poly> </polys> <props> <prop rotation="-40" x="548" y="314"> <name>stick_3</name> </prop> <prop rotation="0" x="506" y="399"> <name>rock_4</name> </prop> <prop rotation="0" x="483" y="182"> <name>rock_3</name> </prop> <prop rotation="1" x="488" y="365"> <name>rock_2</name> </prop> <prop rotation="0" x="310" y="458"> <name>stick_2</name> </prop> <prop rotation="-59" x="545" y="359"> <name>stick_1</name> </prop> </props> </level> <!-- Level 11--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="182" y="298" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="430" y="510" facing="right"/> <rabbid name="eater_2" x="643" y="390" facing="right"/> </eaters> <polys> <poly> <points>70 160 140 140 620 140 710 150 760 180 760 60 70 60</points> </poly> <poly> <points>151 578 150 360 160 340 180 330 200 340 210 360 210 400 220 380 240 370 260 380 270 400 270 580</points> </poly> <poly> <points>370 580 400 550 420 540 440 540 460 550 480 570 480 580</points> </poly> <poly> <points>350 420 360 420 370 410 370 240 360 230 350 230 340 240 340 410</points> </poly> <poly> <points>580 570 580 470 590 450 610 430 630 420 650 420 670 430 690 450 700 470 700 580 580 580</points> </poly> </polys> <props> <prop rotation="0" x="239" y="351"> <name>rock_3</name> </prop> <prop rotation="0" x="239" y="320"> <name>rock_2</name> </prop> <prop rotation="0" x="241" y="289"> <name>rock_3</name> </prop> </props> </level> <!-- Level 12--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="296" y="276" facing="right"/> <rabbid name="teammate_thrower" x="482" y="195" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="219" y="378" facing="right"/> <rabbid name="eater_2" x="533" y="507" facing="left"/> <rabbid name="eater_3" x="176" y="249" facing="right"/> <rabbid name="eater_3" x="376" y="520" facing="right"/> <rabbid name="eater_2" x="305" y="478" facing="right"/> <rabbid name="eater_2" x="706" y="188" facing="left"/> <rabbid name="eater_1" x="644" y="403" facing="left"/> </eaters> <polys> <poly> <points>155 585 155 415 135 395 105 395 105 585</points> </poly> <poly> <points>405 475 405 455 485 375 505 375 505 395 425 475</points> </poly> <poly> <points>575 255 585 265 605 265 645 225 645 205 635 195 615 195 575 235</points> </poly> <poly> <points>475 295 465 285 465 245 475 235 495 235 505 245 505 285 495 295</points> </poly> <poly> <points>375 325 425 325 435 315 435 305 425 295 405 295 435 265 435 255 425 245 415 245 385 275 385 285 395 295 375 295 365 305 365 315</points> </poly> <poly> <points>175 335 195 315 195 295 185 285 165 285 145 305 145 325 155 335</points> </poly> <poly> <points>175 105 175 175 165 185 145 185 135 175 135 105</points> </poly> <poly> <points>205 105 205 115 215 135 235 155 275 155 275 165 285 175 295 165 295 155 315 155 325 145 565 145 575 155 585 145 655 145 675 125 675 105</points> </poly> <poly> <points>345 195 345 185 355 175 405 175 415 185 415 195 405 205 355 205</points> </poly> <poly> <points>195 585 195 465 205 455 195 455 185 445 185 425 195 415 245 415 255 425 255 445 245 455 225 455 235 465 235 505 275 505 285 515 335 515 355 535 355 555 505 555 515 545 565 545 565 525 585 505 605 505 605 455 625 435 675 435 675 355 685 345 695 345 705 355 705 385 715 385 715 285 735 265 695 265 685 255 685 235 695 225 745 225 745 585</points> </poly> <poly> <points>275 325 285 335 305 335 315 325 305 315 285 315</points> </poly> <poly> <points>205 305 215 295 255 295 265 305 265 335 255 345 215 345 205 335</points> </poly> </polys> <props> <prop rotation="135" x="438" y="411"> <name>watertrap</name> </prop> <prop rotation="180" x="449" y="548"> <name>watertrap</name> </prop> <prop rotation="0" x="476" y="150"> <name>watertrap</name> </prop> </props> </level> <!-- Level 13--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="629" y="238" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="201" y="502" facing="right"/> <rabbid name="eater_1" x="421" y="503" facing="right"/> <rabbid name="eater_2" x="302" y="501" facing="right"/> </eaters> <polys> <poly> <points>665 585 665 295 645 275 615 275 595 295 595 585</points> </poly> <poly> <points>555 585 555 265 545 245 525 235 515 235 495 245 485 265 485 585</points> </poly> <poly> <points>435 585 435 545 425 535 415 535 405 545 405 585</points> </poly> <poly> <points>315 585 315 545 305 535 295 535 285 545 285 585</points> </poly> <poly> <points>215 585 215 545 205 535 195 535 185 545 185 585</points> </poly> <poly> <points>135 585 135 375 125 355 105 345 105 585</points> </poly> <poly> <points>105 275 125 265 135 245 135 165 155 175 175 175 195 165 215 145 225 125 225 105 105 105</points> </poly> <poly> <points>415 105 415 115 425 135 445 155 465 165 485 165 505 155 525 135 535 115 535 105</points> </poly> <poly> <points>295 255 285 245 285 215 295 205 305 205 315 215 315 245 305 255</points> </poly> <poly> <points>335 335 325 325 325 315 345 295 355 295 365 305 365 315 345 335</points> </poly> <poly> <points>385 435 375 425 375 415 395 395 405 395 415 405 415 415 395 435</points> </poly> <poly> <points>225 325 235 315 235 305 215 285 205 285 195 295 195 305 215 325</points> </poly> </polys> <props> <prop rotation="90" x="136" y="422"> <name>watertrap</name> </prop> <prop rotation="-40" x="203" y="161"> <name>watertrap</name> </prop> <prop rotation="20" x="453" y="159"> <name>watertrap</name> </prop> </props> </level> <!-- Level 14--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="647" y="206" facing="left"/> <rabbid name="teammate_thrower" x="698" y="434" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="483" y="518" facing="left"/> <rabbid name="eater_1" x="146" y="407" facing="right"/> <rabbid name="eater_2" x="309" y="238" facing="right"/> <rabbid name="eater_3" x="399" y="518" facing="right"/> </eaters> <polys> <poly> <points>740 240 630 240 610 250 600 270 610 290 630 300 730 300 730 480 720 470 680 470 670 480 670 550 380 550 360 570 360 580 740 580</points> </poly> <poly> <points>740 140 550 140 530 120 470 120 450 140 330 140 310 120 270 120 270 150 260 160 250 150 250 120 210 120 210 240 190 260 100 260 100 100 740 100</points> </poly> <poly> <points>160 440 170 450 170 460 160 470 100 470 100 440</points> </poly> <poly> <points>230 580 230 290 250 270 370 270 470 360 570 360 580 370 590 390 580 410 560 420 330 420 330 580</points> </poly> </polys> <props> <prop rotation="-90" x="212" y="188"> <name>watertrap</name> </prop> <prop rotation="90" x="225" y="361"> <name>watertrap</name> </prop> <prop rotation="0" x="391" y="144"> <name>watertrap</name> </prop> <prop rotation="0" x="609" y="144"> <name>watertrap</name> </prop> <prop rotation="0" x="457" y="424"> <name>watertrap</name> </prop> <prop rotation="-140" x="433" y="326"> <name>watertrap</name> </prop> <prop rotation="180" x="617" y="547"> <name>watertrap</name> </prop> <prop rotation="180" x="518" y="358"> <name>watertrap</name> </prop> </props> </level> <!-- Level 15--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="297" y="486" facing="right"/> <rabbid name="teammate_thrower" x="691" y="475" facing="left"/> <rabbid name="teammate_thrower" x="401" y="374" facing="right"/> </rabbids> <eaters> <rabbid name="eater_3" x="463" y="377" facing="left"/> <rabbid name="eater_1" x="150" y="228" facing="right"/> <rabbid name="eater_2" x="701" y="268" facing="left"/> </eaters> <polys> <poly> <points>180 580 180 270 170 260 130 260 120 270 120 430 100 420 100 580</points> </poly> <poly> <points>250 580 250 540 270 520 320 520 340 540 340 580</points> </poly> <poly> <points>360 580 360 550 370 540 380 550 380 580</points> </poly> <poly> <points>450 580 450 550 470 530 550 530 570 550 570 580</points> </poly> <poly> <points>660 580 660 530 680 510 710 510 730 530 730 580</points> </poly> <poly> <points>740 340 680 340 670 350 660 340 660 360 650 370 640 370 630 360 630 340 620 350 610 350 600 340 600 320 620 300 740 300</points> </poly> <poly> <points>560 350 580 350 590 360 590 370 580 380 560 380 550 370 550 360</points> </poly> <poly> <points>340 410 360 430 510 430 520 420 510 410 360 410 360 200 370 180 390 160 410 150 510 150 510 160 520 170 530 170 540 160 540 140 560 120 580 140 640 140 640 160 660 180 700 180 720 160 720 140 740 140 740 100 100 100 100 150 290 150 310 160 330 180 340 200</points> </poly> <poly> <points>240 340 280 340 290 350 290 370 280 380 240 380 230 370 230 350</points> </poly> <poly> <points>520 350 490 320 490 310 500 300 510 300 540 330 540 340 530 350</points> </poly> <poly> <points>710 510 720 500 720 360 700 340 740 340 740 580 710 580</points> </poly> </polys> <props> <prop rotation="0" x="259" y="322"> <name>rock_3</name> </prop> <prop rotation="1" x="261" y="287"> <name>rock_3</name> </prop> <prop rotation="10" x="266" y="219"> <name>rock_1</name> </prop> <prop rotation="6" x="261" y="259"> <name>rock_2</name> </prop> <prop rotation="9" x="263" y="237"> <name>rock_2</name> </prop> <prop rotation="-180" x="510" y="527"> <name>watertrap</name> </prop> <prop rotation="-39" x="517" y="382"> <name>plank_1</name> </prop> </props> </level> <!-- Level 16--> <level time="120" tictacs="10" trapRestitution="2"> <rabbids> <rabbid name="thrower" x="532" y="216" facing="right"/> <rabbid name="teammate_thrower" x="344" y="386" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="561" y="390" facing="left"/> <rabbid name="eater_3" x="232" y="258" facing="right"/> <rabbid name="eater_2" x="464" y="388" facing="right"/> </eaters> <polys> <poly> <points>100 390 140 390 150 400 150 340 160 320 180 300 200 290 260 290 280 300 300 320 310 340 310 420 330 420 350 440 350 580 100 580</points> </poly> <poly> <points>390 580 390 450 410 430 610 430 630 450 630 580</points> </poly> <poly> <points>740 310 690 350 670 350 650 330 650 310 730 230 640 140 430 140 430 270 410 290 390 290 370 270 370 190 360 200 340 200 320 180 320 150 300 130 170 130 170 190 160 200 150 190 150 130 130 130 130 250 110 270 100 270 100 100 740 100</points> </poly> <poly> <points>480 250 580 250 590 260 590 270 580 280 480 280 470 270 470 260</points> </poly> <poly> <points>330 420 340 420 350 420 370 440 370 580 330 580</points> </poly> <poly> <points>690 270 690 190 730 230</points> </poly> <poly> <points>710 440 680 440 660 460 660 580 730 580 730 460</points> </poly> </polys> <props> <prop rotation="-180" x="466" y="427"> <name>watertrap</name> </prop> <prop rotation="180" x="556" y="427"> <name>watertrap</name> </prop> </props> </level> <!-- Level 17--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="589" y="446" facing="left"/> </rabbids> <eaters> <rabbid name="eater_1" x="297" y="365" facing="left"/> <rabbid name="eater_1" x="171" y="364" facing="right"/> <rabbid name="eater_2" x="497" y="186" facing="right"/> <rabbid name="eater_3" x="230" y="497" facing="right"/> <rabbid name="eater_3" x="677" y="218" facing="left"/> </eaters> <polys> <poly> <points>450 230 460 220 530 220 540 230 540 240 530 250 460 250 450 240</points> </poly> <poly> <points>560 580 560 500 580 480 600 480 620 500 620 300 630 270 650 250 710 250 730 270 740 300 740 580</points> </poly> <poly> <points>420 580 420 570 410 560 370 560 360 570 360 580</points> </poly> <poly> <points>180 580 180 550 340 550 350 540 340 530 180 530 180 460 200 440 350 440 350 300 330 280 260 280 240 300 240 320 330 320 330 400 140 400 140 330 160 310 140 270 140 250 160 230 350 230 350 180 340 160 320 150 150 150 130 160 120 180 120 580</points> </poly> <poly> <points>360 440 360 400 370 400 370 440</points> </poly> <poly> <points>130 340 147 392 210 410 130 410</points> </poly> </polys> <props> <prop rotation="-89" x="353" y="466"> <name>plank_3</name> </prop> <prop rotation="0" x="404" y="543"> <name>plank_1</name> </prop> <prop rotation="-35" x="374" y="525"> <name>log</name> </prop> <prop rotation="0" x="436" y="556"> <name>plank_3</name> </prop> <prop rotation="0" x="402" y="549"> <name>plank_1</name> </prop> <prop rotation="180" x="230" y="396"> <name>watertrap</name> </prop> <prop rotation="10" x="219" y="402"> <name>watertrap</name> </prop> </props> </level> <!-- Level 18--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="280" y="485" facing="lef,"/> <rabbid name="teammate_thrower" x="176" y="295" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="536" y="319" facing="left"/> <rabbid name="eater_3" x="450" y="318" facing="right"/> <rabbid name="eater_2" x="372" y="338" facing="left"/> <rabbid name="eater_3" x="477" y="179" facing="right"/> <rabbid name="eater_2" x="632" y="368" facing="left"/> </eaters> <polys> <poly> <points>320 580 320 540 300 520 150 520 130 540 130 580</points> </poly> <poly> <points>340 580 340 390 360 370 390 370 410 350 570 350 590 370 590 400 660 400 680 420 680 580</points> </poly> <poly> <points>680 210 620 210 600 190 600 170 620 150 680 150 700 170 700 190</points> </poly> <poly> <points>420 230 420 250 430 260 500 260 510 250 510 220 500 210 450 210 450 190 440 180 370 180 360 190 360 220 370 230</points> </poly> <poly> <points>430 100 430 130 440 140 510 140 520 130 520 100</points> </poly> <poly> <points>280 120 280 150 270 160 200 160 190 150 190 120 200 110 270 110</points> </poly> <poly> <points>120 370 120 350 140 330 200 330 220 350 220 370 200 390 140 390</points> </poly> </polys> <props> <prop rotation="2" x="184" y="508"> <name>rock_2</name> </prop> <prop rotation="0" x="491" y="343"> <name>rock_1</name> </prop> </props> </level> <!-- Level 19--> <level time="120" tictacs="15" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="239" y="398" facing="right"/> <rabbid name="teammate_thrower" x="466" y="506" facing="right"/> <rabbid name="teammate_thrower" x="659" y="366" facing="left"/> <rabbid name="teammate_thrower" x="569" y="206" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="221" y="188" facing="right"/> <rabbid name="eater_3" x="403" y="219" facing="right"/> <rabbid name="eater_3" x="608" y="379" facing="right"/> <rabbid name="eater_3" x="312" y="498" facing="right"/> <rabbid name="eater_2" x="427" y="510" facing="left"/> </eaters> <polys> <poly> <points>160 580 160 450 180 430 250 430 270 450 270 540 280 530 330 530 340 540 340 580</points> </poly> <poly> <points>400 580 400 560 420 540 470 540 490 560 490 580</points> </poly> <poly> <points>530 580 530 490 550 470 570 470 580 480 580 430 600 410 620 410 630 400 670 400 690 420 690 580</points> </poly> <poly> <points>740 400 720 400 700 380 700 170 680 150 560 150 550 140 550 100 740 100</points> </poly> <poly> <points>180 280 220 280 230 290 230 300 220 310 180 310 170 300 170 290</points> </poly> <poly> <points>300 300 290 290 300 280 370 280 370 260 380 250 430 250 440 240 580 240 590 250 590 270 580 280 470 280 470 360 450 380 410 380 390 360 390 320 370 300</points> </poly> <poly> <points>500 100 500 140 480 160 340 160 310 190 290 190 280 180 280 160 260 140 190 140 170 160 170 210 160 220 100 220 100 100</points> </poly> <poly> <points>210 220 230 220 240 230 230 240 210 240 200 230</points> </poly> </polys> <props> <prop rotation="0" x="207" y="276"> <name>plank_3</name> </prop> <prop rotation="2" x="177" y="261"> <name>rock_2</name> </prop> <prop rotation="2" x="254" y="260"> <name>rock_2</name> </prop> <prop rotation="2" x="493" y="228"> <name>rock_2</name> </prop> <prop rotation="0" x="194" y="423"> <name>rock_1</name> </prop> </props> </level> <!-- Level 20--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="494" y="467" facing="left"/> <rabbid name="teammate_thrower" x="270" y="286" facing="right"/> </rabbids> <eaters> <rabbid name="eater_2" x="334" y="289" facing="right"/> <rabbid name="eater_3" x="662" y="229" facing="left"/> <rabbid name="eater_3" x="174" y="229" facing="right"/> <rabbid name="eater_1" x="232" y="470" facing="right"/> <rabbid name="eater_2" x="607" y="467" facing="left"/> </eaters> <polys> <poly> <points>150 580 150 550 160 530 180 510 200 500 630 500 650 510 670 530 680 550 680 580</points> </poly> <poly> <points>740 400 580 400 560 390 540 370 530 350 530 330 540 310 560 290 580 280 610 280 630 260 740 260</points> </poly> <poly> <points>250 360 350 360 360 350 360 330 350 320 250 320 240 330 240 350</points> </poly> <poly> <points>150 290 190 290 200 280 200 270 190 260 150 260 140 270 140 280</points> </poly> <poly> <points>350 220 350 210 360 200 370 200 360 190 360 180 370 170 420 170 430 180 430 190 420 200 400 200 410 210 410 220 400 230 360 230</points> </poly> <poly> <points>100 190 120 190 130 180 130 160 120 150 100 150</points> </poly> <poly> <points>410 310 390 310 380 300 390 290 410 290 420 300</points> </poly> </polys> <props/> </level> <!-- Level 21--> <level time="100" tictacs="10" trapRestitution="0"> <rabbids> <rabbid name="thrower" x="507" y="506" facing="left"/> <rabbid name="teammate_thrower" x="203" y="447" facing="right"/> <rabbid name="teammate_thrower" x="450" y="287" facing="left"/> </rabbids> <eaters> <rabbid name="eater_3" x="283" y="469" facing="right"/> <rabbid name="eater_1" x="639" y="339" facing="left"/> <rabbid name="eater_3" x="366" y="299" facing="right"/> <rabbid name="eater_2" x="222" y="197" facing="right"/> </eaters> <polys> <poly> <points>460 570 480 550 500 540 590 540 610 550 620 560 640 540 660 530 740 530 740 580 460 580</points> </poly> <poly> <points>620 490 600 480 580 460 570 440 570 420 580 400 600 380 620 370 710 370 730 380 730 480 710 490</points> </poly> <poly> <points>350 580 350 520 330 500 250 500 230 480 170 480 150 500 130 500 110 520 110 580</points> </poly> <poly> <points>340 420 320 400 320 370 340 350 340 340 350 330 380 330 390 320 500 320 520 340 520 400 500 420</points> </poly> <poly> <points>100 300 190 300 210 290 230 270 240 250 250 260 300 260 320 240 320 220 300 200 260 200 240 210 230 230 210 230 200 210 180 190 160 180 100 180</points> </poly> <poly> <points>460 100 460 130 460 140 470 160 490 180 510 190 670 190 690 180 710 160 720 140 720 100</points> </poly> </polys> <props/> </level> <!-- Level 22--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="441" y="275" facing="right"/> <rabbid name="teammate_thrower" x="235" y="476" facing="right"/> </rabbids> <eaters> <rabbid name="eater_2" x="619" y="478" facing="left"/> <rabbid name="eater_3" x="172" y="228" facing="right"/> <rabbid name="eater_2" x="666" y="228" facing="left"/> <rabbid name="eater_1" x="610" y="358" facing="left"/> </eaters> <polys> <poly> <points>150 580 150 560 160 540 180 520 200 510 490 510 510 520 530 540 540 560 540 580</points> </poly> <poly> <points>590 570 570 550 570 530 590 510 650 510 670 530 670 550 650 570</points> </poly> <poly> <points>650 320 630 300 630 280 650 260 710 260 730 280 730 300 710 320</points> </poly> <poly> <points>550 270 590 270 600 260 600 250 590 240 550 240 540 250 540 260</points> </poly> <poly> <points>540 220 550 230 570 230 580 220 570 210 550 210</points> </poly> <poly> <points>580 200 590 210 610 210 620 200 610 190 590 190</points> </poly> <poly> <points>570 120 570 140 560 160 540 170 390 170 370 160 360 140 360 120 370 100 560 100</points> </poly> <poly> <points>390 230 390 210 380 190 360 180 280 180 260 190 250 210 250 230 260 250 280 260 360 260 380 250</points> </poly> <poly> <points>330 340 340 320 360 310 510 310 530 320 540 340 540 360 530 380 510 390 360 390 340 380 330 360</points> </poly> <poly> <points>150 290 190 290 200 280 200 270 190 260 150 260 140 270 140 280</points> </poly> <poly> <points>590 390 630 390 640 400 640 410 630 420 590 420 580 410 580 400</points> </poly> </polys> <props/> </level> <!-- Level 23--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="300" y="356" facing="right"/> <rabbid name="teammate_thrower" x="609" y="466" facing="right"/> <rabbid name="teammate_thrower" x="169" y="487" facing="right"/> <rabbid name="teammate_thrower" x="516" y="245" facing="left"/> </rabbids> <eaters> <rabbid name="eater_2" x="520" y="377" facing="right"/> <rabbid name="eater_2" x="244" y="228" facing="right"/> <rabbid name="eater_3" x="179" y="249" facing="left"/> <rabbid name="eater_1" x="678" y="169" facing="left"/> <rabbid name="eater_3" x="698" y="298" facing="left"/> <rabbid name="eater_2" x="473" y="527" facing="left"/> <rabbid name="eater_3" x="372" y="498" facing="right"/> </eaters> <polys> <poly> <points>630 500 560 500 550 510 550 520 560 530 630 530 640 520 640 510</points> </poly> <poly> <points>670 580 660 570 660 560 670 550 710 550 720 560 720 570 710 580</points> </poly> <poly> <points>740 390 670 390 650 370 650 350 670 330 740 330</points> </poly> <poly> <points>650 220 650 210 660 200 700 200 710 210 710 220 700 230 660 230</points> </poly> <poly> <points>610 140 610 160 590 180 520 180 500 160 500 140 520 120 590 120</points> </poly> <poly> <points>430 370 500 370 520 350 520 340 550 340 570 320 570 300 550 280 480 280 460 300 460 310 430 310 410 330 410 350</points> </poly> <poly> <points>470 410 540 410 560 430 560 450 540 470 470 470 450 450 450 430</points> </poly> <poly> <points>340 460 400 460 410 460 430 440 430 420 410 400 400 400 400 390 390 380 350 380 340 390 340 400 330 410 310 390 240 390 220 410 220 430 240 450 310 450 320 440</points> </poly> <poly> <points>340 540 350 530 390 530 400 540 400 550 390 560 350 560 340 550</points> </poly> <poly> <points>230 580 230 570 250 550 320 550 340 570 340 580</points> </poly> <poly> <points>210 580 230 560 230 540 210 520 140 520 120 540 120 560 140 580</points> </poly> <poly> <points>260 510 250 500 250 490 260 480 300 480 310 490 310 500 300 510</points> </poly> <poly> <points>170 340 240 340 260 320 260 300 250 290 270 290 280 280 280 270 270 260 230 260 220 270 220 280 170 280 150 300 150 320</points> </poly> <poly> <points>420 580 440 560 510 560 530 580</points> </poly> </polys> <props/> </level> <!-- Level 24--> <level time="120" tictacs="10" trapRestitution="2"> <rabbids> <rabbid name="thrower" x="353" y="515" facing="left"/> <rabbid name="teammate_thrower" x="165" y="485" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="667" y="179" facing="left"/> <rabbid name="eater_2" x="564" y="348" facing="left"/> <rabbid name="eater_1" x="679" y="428" facing="left"/> <rabbid name="eater_2" x="138" y="188" facing="right"/> <rabbid name="eater_3" x="423" y="239" facing="right"/> </eaters> <polys> <poly> <points>390 580 390 560 380 550 330 550 320 560 320 580</points> </poly> <poly> <points>650 520 630 500 630 480 650 460 710 460 730 480 730 500 710 520</points> </poly> <poly> <points>740 280 730 290 620 290 600 280 590 260 590 240 600 220 620 210 730 210 740 220</points> </poly> <poly> <points>390 330 450 330 470 310 470 290 450 270 390 270 370 290 370 310</points> </poly> <poly> <points>390 460 390 440 400 420 420 410 530 410 530 390 540 380 590 380 600 390 600 410 590 420 550 420 560 440 560 460 550 480 530 490 420 490 400 480</points> </poly> <poly> <points>130 580 110 560 110 540 130 520 190 520 210 540 210 560 190 580</points> </poly> <poly> <points>100 440 130 440 140 430 140 410 130 400 100 400</points> </poly> <poly> <points>100 220 150 220 170 240 170 260 160 270 230 270 250 280 260 300 260 320 250 340 230 350 150 350 130 340 120 320 120 300 130 280 100 280</points> </poly> </polys> <props> <prop rotation="180" x="473" y="406"> <name>watertrap</name> </prop> <prop rotation="180" x="188" y="267"> <name>watertrap</name> </prop> </props> </level> <!-- Level 25--> <level time="120" tictacs="10" trapRestitution="1"> <rabbids> <rabbid name="thrower" x="157" y="395" facing="right"/> </rabbids> <eaters> <rabbid name="eater_1" x="475" y="218" facing="left"/> <rabbid name="eater_2" x="550" y="337" facing="left"/> <rabbid name="eater_3" x="390" y="368" facing="right"/> <rabbid name="eater_3" x="662" y="437" facing="left"/> </eaters> <polys> <poly> <points>190 510 630 510 650 530 650 580 170 580 170 530</points> </poly> <poly> <points>180 140 200 160 420 160 440 140 440 100 180 100</points> </poly> <poly> <points>140 430 170 430 180 440 180 450 170 460 140 460 130 450 130 440</points> </poly> <poly> <points>220 400 220 380 240 360 300 360 320 380 320 400 300 420 240 420</points> </poly> <poly> <points>280 330 260 310 260 290 280 270 370 270 390 290 390 310 370 330</points> </poly> <poly> <points>370 410 380 400 400 400 410 410 400 420 380 420</points> </poly> <poly> <points>450 260 460 250 490 250 500 260 500 270 490 280 460 280 450 270</points> </poly> <poly> <points>530 370 570 370 580 380 580 390 570 400 530 400 520 390 520 380</points> </poly> <poly> <points>600 250 640 250 650 260 650 280 640 290 600 290 590 280 590 260</points> </poly> <poly> <points>530 150 530 170 550 190 610 190 630 170 630 150 610 130 550 130</points> </poly> <poly> <points>680 470 640 470 630 480 640 490 680 490 690 480</points> </poly> </polys> <props> <prop rotation="-180" x="246" y="509"> <name>watertrap</name> </prop> <prop rotation="-180" x="356" y="509"> <name>watertrap</name> </prop> <prop rotation="0" x="364" y="163"> <name>watertrap</name> </prop> <prop rotation="-180" x="466" y="509"> <name>watertrap</name> </prop> <prop rotation="0" x="255" y="163"> <name>watertrap</name> </prop> <prop rotation="-180" x="578" y="509"> <name>watertrap</name> </prop> <prop rotation="180" x="329" y="268"> <name>watertrap</name> </prop> </props> </level> </levels> ; introsXML = <intros> <intro title="level 1" description="Let the Melon Mango Mayhem begin! Move your mouse to determine the power and angle of your throw, then click to throw your Tic Tacs into the mouths of your melon friends before the time runs out. Good luck!"/> <intro title="level 2" description="Nicely done! Level Two is a little trickier. Throw your Tic Tacs at any obstacles in your way ....the power of Melon Mango will prevail!"/> <intro title="level 3" description="Time to mango tango... Pass your Tic Tacs back and forth between your mango mates before throwing them into those munching melon mouths."/> <intro title="level 4" description="Mango tango mastered! Time to bounce on... Use any hard surface to rebound Tic Tacs into those little melon mouths. Tip: the quicker you share your Tic Tacs, the more points you get!"/> <intro title="level 5" description="OK, let’s see what you’ve learnt. Get past this level and you’re well on your way to becoming a Melon Mango master"/> <intro title="level 6" description="Welcome to Juicy Jungle! It’s pretty wild out there but a lot of fun too. Just stay true to your mango skills and you should breeze through it."/> <intro title="level 7" description="Juicy Jungle can get a bit overgrown at times. Don’t worry though. There’s always friends to help you through."/> <intro title="level 8" description="The ancient Melon Mango gods must be appeased. Share those Tic Tacs quick, quick, quick!!!"/> <intro title="level 9" description="What an adventure! You’re getting deep into Juicy Jungle now. If you’re lucky you may catch a glimpse of the lost trampolining Tic Tac tribe. If you see anything that could be theirs, use it to help you on your way."/> <intro title="level 10" description="Looks like the jungle’s starting to clear. One last push and you could be through."/> <intro title="level 11" description="The good news is you’re out of the jungle. The bad news is you’re in the Crunchy Caves. Get stuck in here and you could be tied up for days."/> <intro title="level 12" description="You’ve come a long way my fruity friend. The power of Melon Mango is strong in you!"/> <intro title="level 13" description="Level 13. Unlucky for some. But who needs luck when you have the power of Melon Mango!"/> <intro title="level 14" description="Easy, peasy, Melon Mango squeezy. The Crunchy Caves can’t contain your skills!"/> <intro title="level 15" description="You’ve spent a long time in the dark but there’s light at the end of the tunnel. Shine bright little mango, shine bright."/> <intro title="level 16" description="Welcome to Melon Mango Mountain. It is here amongst the icy peaks that you will learn how refreshing a Tic Tac can truly be."/> <intro title="level 17" description="With each throw you are reaching the peak of your Melon Mango powers!"/> <intro title="level 18" description="NOM NOM NOM NOM"/> <intro title="level 19" description='There is an old saying on Melon Mango Mountain: "Melon is good, Mango is good... but Melon and Mango is best"'/> <intro title="level 20" description="Aim, pass, bounce, munch With each throw you are reaching the peak of your Melon Mango powers!"/> <intro title="level 21" description="You have transcended the mountain and stepped among the Cool Clouds Your Melon Mango powers are soaring!"/> <intro title="level 22" description="You’ve come a long way my brave little mango. The tale of your exploits will go down in Tic Tac history!"/> <intro title="level 23" description="Your arm must be tired but still you keep on throwing!"/> <intro title="level 24" description="You truly are the juiciest of all mangoes!"/> <intro title="level 25" description="One last challenge and you will become the greatest Melon Mango Master of all time! Stay firm my juicy friend. You’ve been an inspiration."/> </intros> ; propXML = <props> <prop> <name>thrower</name> <points>-18 -24 16 -25 15 38 -18 38</points> </prop> <prop> <name>teammate_thrower</name> <points>-18 -25 15 -24 16 39 -20 39</points> </prop> <prop> <name>eater_1</name> <points>-18 -24 -13 35 15 33 19 -25</points> </prop> <prop> <name>eater_2</name> <points>-17 -26 19 -25 14 34 -11 35</points> </prop> <prop> <name>eater_3</name> <points>-20 -25 22 -23 12 35 -11 36</points> </prop> <prop> <name>rock_1</name> <points>-6 7 -10 3 -10 -1 -6 -6 7 -6 11 -2 11 2 7 7</points> </prop> <prop> <name>rock_2</name> <points>-11 -11 -18 -5 -19 0 -15 3 -17 8 -9 12 11 11 18 6 18 -3 14 -9 9 -11</points> </prop> <prop> <name>rock_3</name> <points>-16 -17 16 -16 27 -8 29 3 23 14 15 18 -16 18 -27 11 -30 0 -27 -10</points> </prop> <prop> <name>rock_4</name> <points>-20 -22 18 -23 30 -16 35 -4 35 7 28 17 17 21 -20 21 -30 16 -37 4 -37 -8 -29 -18</points> </prop> <prop> <name>stick_1</name> <points>-25 -5 10 -2 27 -1 27 1 -24 5</points> </prop> <prop> <name>stick_2</name> <points>-40 -5 26 -2 32 -4 30 -2 44 -1 44 1 -8 4 -5 8 -12 4 -38 5</points> </prop> <prop> <name>stick_3</name> <points>-64 -5 40 -2 46 -5 43 -2 70 -2 70 1 23 2 10 7 8 3 -62 5</points> </prop> <prop> <name>plank_1</name> <points>-40 -4 -40 3 42 3 43 -3 41 -2 43 -4 34 -3</points> </prop> <prop> <name>plank_2</name> <points>-59 -4 48 -4 48 -2 66 -4 66 3 -59 3</points> </prop> <prop> <name>plank_3</name> <points>-86 -4 91 -4 87 1 90 4 -87 3 -83 0</points> </prop> <prop> <name>log</name> <points>9 -11 2 -14 -5 -13 -12 -7 -14 2 -11 9 -4 14 4 15 11 11 15 3 14 -6</points> </prop> <prop> <name>watertrap</name> <points>-54 -2 1 -4 56 -1 17 3 -17 4</points> </prop> </props> ; } function frame22(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame23(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame25(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame27(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame20(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; mb.startMusic(); buttonize(tictacLogo); buttonize(playbutton2); TweenLite.from(howtoPanel, 1, {y:"-70", ease:Elastic.easeOut}); TweenLite.from(playbutton2, 0.5, {scaleX:0.7, scaleY:0.7, ease:Strong.easeOut}); TweenLite.from(shad, 1, {alpha:0, ease:Elastic.easeOut}); } function frame21(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame24(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame28(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame8(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function trackGameStart(_arg1:int=-1){ if (_arg1 >= 0){ ga.trackPageview((("MelonMangoMayhem/level" + String((cLevel + 1))) + "/start")); ga.trackEvent("MelonMangoMayhem", ("level" + String((cLevel + 1))), "start"); } else { if (!playedOnce){ ga.trackPageview("MelonMangoMayhem/start"); ga.trackEvent("MelonMangoMayhem", "game", "start"); playedOnce = true; } else { ga.trackEvent("MelonMangoMayhem", "game", "restart"); }; }; } function __setProp_ga_Scene1_propsXML_0(){ try { ga["componentInspectorSetting"] = true; } catch(e:Error) { }; ga.account = "UA-27020420-4"; ga.mode = "AS3"; ga.visualDebug = false; try { ga["componentInspectorSetting"] = false; } catch(e:Error) { }; } function frame31(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame29(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame33(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame36(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame30(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; levelSelectPanel.myY = levelSelectPanel.y; buttonize(homeButton); buttonize(tictacLogo); buttonize(stepLeft, true); buttonize(stepRight, true); TweenLite.from(logo, 1, {y:"-60", ease:Elastic.easeOut}); stepLeft.addEventListener(MouseEvent.CLICK, doLevelStep, false, 0, true); stepRight.addEventListener(MouseEvent.CLICK, doLevelStep, false, 0, true); thumbs = new Array(levelSelectPanel.t1, levelSelectPanel.t2, levelSelectPanel.t3, levelSelectPanel.t4, levelSelectPanel.t5); cPage = 0; lastPage = 0; thumbsPerPage = 5; stepLeft.disable(); stepRight.disable(); getcPage(); handleThumbs(); mb.startMusic(); } function frame38(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame32(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame34(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function doKeyDown(_arg1:KeyboardEvent){ var _local2:uint; cheatText = (cheatText + String.fromCharCode(_arg1.charCode)); if (cheatText.indexOf("givememylevels") != -1){ trace("all levels unlocked"); _local2 = 0; while (_local2 < TOTAL_LEVELS) { if (so.data.scores[_local2] == 0){ so.data.scores[_local2] = 1; }; _local2++; }; clearCheatText(); }; if (cheatText.indexOf("stopmusic") != -1){ trace("music disabled"); mb.MUSICVOL = 0; mb.cMusic = 0; mb.stopMusic(); }; } function frame37(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame39(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function updateScoreTween(){ if (myPanel){ if (myPanel.scoreText){ myPanel.scoreText.text = addComas(String(Math.round(winScoreTween))); }; }; } public function doCustomDown(_arg1:MouseEvent=null){ sb.playSound(7); } function frame35(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function cramText(_arg1:TextField){ var _local2:TextFormat; while (_arg1.textHeight > (_arg1.height - 8)) { _local2 = _arg1.getTextFormat(); if (uint(_local2.size) <= 2){ return; }; _local2.size = (uint(_local2.size) - 1); _arg1.setTextFormat(_local2); trace(_local2.size); }; } public function begin(){ gotoAndPlay(9); } function frame41(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame42(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame43(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame44(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame45(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame46(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame48(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame49(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame47(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function doOut(_arg1:MouseEvent=null){ if (!_arg1.currentTarget.body){ TweenLite.to(_arg1.currentTarget, 0.5, {scaleX:1, scaleY:1, ease:Strong.easeOut}); } else { TweenLite.to(_arg1.currentTarget.body, 0.5, {scaleX:1, scaleY:1, ease:Strong.easeOut}); }; if (_arg1.currentTarget.hitTarget){ TweenLite.to(_arg1.currentTarget.hitTarget, 0.1, {scaleX:1, scaleY:1, ease:Strong.easeOut}); }; } function frame50(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; buttonize(tictacLogo); gui.mouseEnabled = false; switchNext = false; failReason = "You ran out of Tic Tacs!"; winScoreTween = 0; winTimeTween = 0; winRollsTween = 0; addStartPanel(); addCompleteTimer = new Timer(2000); addCompleteTimer.addEventListener(TimerEvent.TIMER, addCompletePanel, false, 0, true); addFailTimer = new Timer(2000); addFailTimer.addEventListener(TimerEvent.TIMER, addFailPanel, false, 0, true); buttonize(homeButton, true); homeButton.addEventListener(MouseEvent.CLICK, destroyAndHome, false, 0, true); buttonize(restartButton, true); restartButton.addEventListener(MouseEvent.CLICK, restart, false, 0, true); } function frame52(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame40(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; buttonize(tictacLogo); buttonize(stepLeft, true); buttonize(stepRight, true); buttonize(homeButton); TweenLite.from(highscoresPanel, 1, {y:"-70", ease:Elastic.easeOut}); TweenLite.from(shad, 1, {alpha:0, ease:Elastic.easeOut}); stepLeft.addEventListener(MouseEvent.CLICK, highscoresPanel.step, false, 0, true); stepRight.addEventListener(MouseEvent.CLICK, highscoresPanel.step, false, 0, true); } function frame55(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame56(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function doCustomOver(_arg1:MouseEvent=null){ MovieClip(_arg1.currentTarget).gotoAndPlay("in"); } function frame59(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame53(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function updateTimeTween(){ if (myPanel){ if (myPanel.scoreText){ myPanel.bonusText.text = String(Math.round(winTimeTween)); }; }; } function frame58(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame51(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame54(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame57(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame60(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; buttonize(tictacLogo); buttonize(gameoverPanel.homeButton); buttonize(gameoverPanel.retryButton); buttonize(gameoverPanel.submitButton); TweenLite.from(gameoverPanel, 1, {y:"-70", ease:Elastic.easeOut}); gameoverPanel.scoreText.text = addComas(String(getScoreSum())); sb.playSound(3); mb.startMusic(); } function frame61(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function buttonize(_arg1:MovieClip, _arg2:Boolean=false, _arg3:Boolean=false){ _arg1.myY = _arg1.y; _arg1.buttonMode = true; if (!_arg3){ _arg1.addEventListener(MouseEvent.MOUSE_OVER, doOver, false, 0, true); _arg1.addEventListener(MouseEvent.MOUSE_UP, doOver, false, 0, true); _arg1.addEventListener(MouseEvent.MOUSE_OUT, doOut, false, 0, true); _arg1.addEventListener(MouseEvent.MOUSE_DOWN, doDown, false, 0, true); } else { _arg1.addEventListener(MouseEvent.MOUSE_OVER, doCustomOver, false, 0, true); _arg1.addEventListener(MouseEvent.MOUSE_OUT, doCustomOut, false, 0, true); _arg1.addEventListener(MouseEvent.MOUSE_DOWN, doCustomDown, false, 0, true); }; if (!_arg2){ _arg1.addEventListener(MouseEvent.CLICK, doClick, false, 0, true); }; } public function animateCompletePanel(){ trace(winScore, winRolls, winTime); winScoreTween = 0; winTimeTween = 0; winRollsTween = 0; TweenLite.to(this, 1.5, {winRollsTween:winRolls, ease:Strong.easeOut, delay:0.7, onUpdate:updateRollsTween, onComplete:startTimeTween}); TweenLite.to(this, 6, {winScoreTween:winScore, ease:Strong.easeOut, delay:1, onUpdate:updateScoreTween, overwrite:false}); } public function clearCheatText(_arg1:TimerEvent=null){ cheatText = ""; cheatClearTimer.stop(); } function frame65(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame66(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame67(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame68(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame64(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame69(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame63(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame62(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function updateSo(_arg1:int=-1){ if (_arg1 != -1){ failScore = _arg1; return; }; failScore = 0; if (winScore > so.data.scores[cLevel]){ so.data.scores[cLevel] = winScore; so.flush(); }; trace("scores array: ", so.data.scores); } function frame70(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; mb.startMusic(); buttonize(tictacLogo); buttonize(submitPanel.homeButton); buttonize(submitPanel.retryButton); buttonize(submitPanel.sendButton, true); buttonize(submitPanel.privacyButton); buttonize(submitPanel.cbox, true); TweenLite.from(submitPanel, 1, {y:"-70", ease:Elastic.easeOut}); submitPanel.scoreText.text = addComas(String(getScoreSum())); submitPanel.nameErrorDummy.alpha = 0; submitPanel.emailErrorDummy.alpha = 0; submitPanel.loadIcon.visible = false; submitPanel.cbox.addEventListener(MouseEvent.CLICK, doCheckBox, false, 0, true); submitPanel.sendButton.addEventListener(MouseEvent.CLICK, dealWithSend, false, 0, true); } function frame71(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame72(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame74(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame75(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame76(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame77(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame78(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame79(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function setVol(_arg1:Number):void{ SoundMixer.soundTransform = new SoundTransform(_arg1); } function frame73(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame80(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; buttonize(tictacLogo); buttonize(submittedPanel.homeButton); buttonize(submittedPanel.retryButton); buttonize(submittedPanel.scoreButton); TweenLite.from(submittedPanel, 1, {y:"-70", ease:Elastic.easeOut}); submittedPanel.scoreText.text = addComas(String(getScoreSum())); } function frame82(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame83(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame84(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame86(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function onProgress(_arg1:ProgressEvent):void{ var _local2:* = ((root.loaderInfo.bytesLoaded / total) * 100); percentText.text = (String(int(_local2)) + "%"); } public function doStartLevel(_arg1:MouseEvent){ deButtonize(myPanel.startButton, true); myPanel.startButton.removeEventListener(MouseEvent.CLICK, doStartLevel); animatePanel("out", "unPauseGame"); } function frame89(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function addCompletePanel(_arg1:TimerEvent=null){ addCompleteTimer.stop(); if (currentFrame != 50){ return; }; trace("addcompletepanel"); clearPrevPanel(); myPanel = new completePanel(); this.addChild(myPanel); buttonize(myPanel.nextButton, true); if (cLevel >= (TOTAL_LEVELS - 1)){ myPanel.nextButton.gotoAndStop(2); }; myPanel.nextButton.addEventListener(MouseEvent.CLICK, doNextLevel, false, 0, true); animatePanel("in"); mb.fadeUp(); myPanel.id = 10; animateCompletePanel(); } function frame87(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame88(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame81(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame85(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function doMute(_arg1:MouseEvent=null){ if (!mButton){ return; }; if (isMuted){ mButton.gotoAndStop(1); setVol(1); isMuted = false; } else { mButton.gotoAndStop(2); setVol(0); isMuted = true; }; } function frame91(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame92(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame93(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame94(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame95(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame96(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame98(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function endgame(_arg1:String, _arg2:int=0, _arg3:int=0, _arg4:uint=0){ engine.isPaused = true; trace("GAME RESULT: ", _arg1); switch (_arg1){ case "win": sb.playSound(3); addCompleteTimer.start(); winTime = (_arg3 * 5); winRolls = (_arg4 * 50); winScore = ((_arg2 + winTime) + winRolls); updateSo(); break; case "rolls": sb.playSound(4); addFailTimer.start(); failReason = "You ran out of Tic Tacs!"; updateSo(_arg2); break; case "time": sb.playSound(4); addFailTimer.start(); failReason = "You ran out of Time!"; updateSo(_arg2); break; }; } public function doCheckBox(_arg1:MouseEvent){ if (submitPanel.cbox.currentFrame == 1){ submitPanel.cbox.gotoAndStop(2); wantsNewsLetter = false; } else { submitPanel.cbox.gotoAndStop(1); wantsNewsLetter = true; }; } public function addComas(_arg1:String){ var _local2:Array = new Array(); while (3 < _arg1.length) { _local2.push(_arg1.slice((_arg1.length - 3), _arg1.length)); _arg1 = _arg1.slice(0, (_arg1.length - 3)); }; while (_local2.length > 0) { _arg1 = (_arg1 + ("," + _local2.pop())); }; return (_arg1); } function frame90(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame99(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function retryAfterFail(_arg1:MouseEvent=null){ engine.restartLevel(false); engine.isPaused = true; animatePanel("out", "unPauseGame"); } function frame97(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function startTimeTween(){ if (!myPanel){ return; }; if (!myPanel.bonusNameText){ return; }; TweenLite.to(this, 2.5, {winTimeTween:winTime, ease:Strong.easeOut, onUpdate:updateTimeTween, overwrite:false, onComplete:showTotalBonus}); myPanel.bonusNameText.text = "TIME BONUS"; myPanel.bonusNameText.alpha = 0; TweenLite.to(myPanel.bonusNameText, 0.3, {alpha:1, ease:Strong.easeOut}); } public function deButtonize(_arg1:MovieClip, _arg2:Boolean=false){ _arg1.myY = _arg1.y; _arg1.buttonMode = false; _arg1.removeEventListener(MouseEvent.MOUSE_OVER, doOver); _arg1.removeEventListener(MouseEvent.MOUSE_DOWN, doDown); _arg1.removeEventListener(MouseEvent.MOUSE_UP, doOver); _arg1.removeEventListener(MouseEvent.MOUSE_OUT, doOut); if (!_arg2){ _arg1.removeEventListener(MouseEvent.CLICK, doClick); }; } function frame100(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame101(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function goURL(_arg1:String, _arg2:String="_blank"){ navigateToURL(new URLRequest(_arg1), _arg2); } function frame105(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame106(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame107(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame108(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame102(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame103(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame104(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function onSubmitError(_arg1:HighScoreErrorEvent):void{ trace("onSubmitError", _arg1.toString()); if (this.currentFrame == 70){ this.gotoAndStop(80); }; he.getHash(); } function frame109(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame110(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame111(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame112(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame113(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame114(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame115(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame116(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame117(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame118(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function initSo(){ var _local1:uint; if (!so.data.scores){ so.clear(); trace("NO SCORES???"); so.data.scores = new Array(); _local1 = 0; while (_local1 < TOTAL_LEVELS) { so.data.scores.push(uint(0)); _local1++; }; so.data.scores.push(uint(0)); }; } function frame119(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame120(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function animatePanel(_arg1:String="out", _arg2:String="clearPrevPanel"){ var _local3:Function = this[_arg2]; if (!this[_arg2]){ _local3 = this["clearPrevPanel"]; }; if (!myPanel){ return; }; if (_arg1 == "in"){ TweenLite.from(myPanel, 0.7, {y:"-60", ease:Elastic.easeOut}); } else { TweenLite.to(myPanel, 0.5, {y:"-400", ease:Strong.easeIn, onComplete:_local3}); }; } function frame122(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function handleThumbs(){ var _local3:MovieClip; var _local1:int = cPage; var _local2:int = (getUnlocked() - (_local1 * thumbsPerPage)); trace("UNLOCKED THUMBS: ", _local2); levelSelectPanel.y = levelSelectPanel.myY; TweenLite.from(levelSelectPanel, 0.5, {y:"40", ease:Strong.easeOut}); trace("cpage: ", cPage, "ult: ", _local2); var _local4:uint; while (_local4 < thumbsPerPage) { _local3 = thumbs[_local4]; _local3.thumb.gotoAndStop(((_local4 + (cPage * thumbsPerPage)) + 1)); _local3.frames.gotoAndStop((_local4 + 1)); _local3.id = (_local4 + (cPage * thumbsPerPage)); buttonize(_local3, true); _local3.addEventListener(MouseEvent.CLICK, doThumbClick, false, 0, true); if (_local4 > _local2){ _local3.dismask.visible = true; _local3.padlock.visible = true; } else { _local3.dismask.visible = false; _local3.padlock.visible = false; }; _local4++; }; if (cPage > 0){ stepLeft.enable(); } else { stepLeft.disable(); }; if (cPage < lastPage){ stepRight.enable(); } else { stepRight.disable(); }; } function frame125(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame121(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame123(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } function frame124(){ if ((((__setPropDict[ga] == undefined)) || (!((((int(__setPropDict[ga]) >= 1)) && ((int(__setPropDict[ga]) <= 125))))))){ __setPropDict[ga] = currentFrame; __setProp_ga_Scene1_propsXML_0(); }; } public function onHashLoadError(_arg1:HighScoreErrorEvent):void{ hashLoaded = false; trace("onHashLoadError", _arg1.toString()); he.getHash(); } public function doClick(_arg1:MouseEvent=null){ var _local2:String = _arg1.currentTarget.name; trace(_local2); switch (_local2){ case "mButton": doMute(); break; case "playbutton": case "playbutton2": trace("go to level select"); trackGameStart(); gotoAndStop(30); break; case "homeButton": gotoAndPlay(10); break; case "retryButton": gotoAndStop(30); break; case "submitButton": gotoAndStop(70); break; case "howtoButton": ga.trackEvent("MelonMangoMayhem", "menu", "How_To_Play"); gotoAndStop(20); break; case "scoreButton": ga.trackEvent("MelonMangoMayhem", "menu", "Highscores"); gotoAndStop(40); break; case "privacyButton": ga.trackEvent("MelonMangoMayhem", "linkOut", "Privacy"); goURL(URL_PRIVACY); break; case "shareButton": ga.trackEvent("MelonMangoMayhem", "linkOut", "Share"); goURL(URL_SHARE); break; case "moregameButton": ga.trackEvent("MelonMangoMayhem", "linkOut", "More Games"); goURL(URL_MORE_GAMES); break; case "tictacLogo": ga.trackEvent("MelonMangoMayhem", "linkOut", "Tic Tac Logo"); goURL(URL_LOGO); break; }; } public function clearPrevPanel(){ if (myPanel){ if (this.contains(myPanel)){ this.removeChild(myPanel); myPanel = null; }; }; } public function trackGameQuit(_arg1:int=0){ ga.trackEvent("MelonMangoMayhem", ("level" + String((cLevel + 1))), "quit"); } public function doDown(_arg1:MouseEvent=null){ sb.playSound(7); if (!_arg1.currentTarget){ return; }; if (_arg1.currentTarget.dis){ return; }; if (!_arg1.currentTarget.body){ TweenLite.to(_arg1.currentTarget, 0.1, {scaleX:0.9, scaleY:0.9, ease:Strong.easeOut}); } else { TweenLite.to(_arg1.currentTarget.body, 0.1, {scaleX:0.9, scaleY:0.9, ease:Strong.easeOut}); }; if (_arg1.currentTarget.hitTarget){ TweenLite.to(_arg1.currentTarget.hitTarget, 0.1, {scaleX:1.3, scaleY:1.3, ease:Strong.easeOut}); }; } public function getScoreSum(){ var _local1:uint; var _local2:uint; while (_local2 < so.data.scores.length) { _local1 = (_local1 + so.data.scores[_local2]); _local2++; }; trace("GETSCORESUM: ", (_local1 + failScore)); return ((_local1 + failScore)); } public function doCustomOut(_arg1:MouseEvent=null){ MovieClip(_arg1.currentTarget).gotoAndPlay("out"); } public function endGameSubmit(_arg1:String, _arg2:uint, _arg3:uint, _arg4:String="no@mail.com"):void{ var _local6:URLRequest; if (!hashLoaded){ return; }; ga.trackEvent("MelonMangoMayhem", "game", "score", _arg2); hashLoaded = false; trace("SUBMITTED", _arg1, "score:", _arg2, "elapsed:", _arg3, _arg4); var _local5:GamePostData = new GamePostData(_arg1, _arg2, _arg4); _local5.elapsedTime = Math.floor(((getTimer() - _arg3) / 1000)); trace("wantsNewsLetter: ", wantsNewsLetter); if (wantsNewsLetter){ _local5.addField("opt_in", 1); }; _local6 = he.send(_local5); } public function addFailPanel(_arg1:TimerEvent=null){ if (currentFrame != 50){ return; }; addFailTimer.stop(); trace("addfail"); clearPrevPanel(); myPanel = new failPanel(); this.addChild(myPanel); myPanel.failText.text = failReason; buttonize(myPanel.retryButton, true); buttonize(myPanel.submitButton, true); myPanel.retryButton.addEventListener(MouseEvent.CLICK, retryAfterFail, false, 0, true); myPanel.submitButton.addEventListener(MouseEvent.CLICK, destroyAndSubmit, false, 0, true); animatePanel("in"); } public function onHashLoaded(_arg1:HighScoreEvent):void{ hashLoaded = true; trace("HASH LOADED", _arg1.xml); if (_arg1.success == true){ }; elapsedCount = getTimer(); } public function HighScoreDemo(){ he = new HighScoreEngine(23, 13, 65); he.getHash(); he.addEventListener(XMLParseErrorEvent.XML_PARSE_ERROR, onParseError); he.addEventListener(HighScoreErrorEvent.HASH_ERROR, onHashLoadError); he.addEventListener(HighScoreEvent.HASH_LOADED, onHashLoaded); he.addEventListener(HighScoreErrorEvent.SUBMIT_ERROR, onSubmitError); he.addEventListener(HighScoreEvent.COMPLETE, onScoreSent); } public function destroyAndSubmit(_arg1:MouseEvent){ sb.clearDelayedSounds(); addCompleteTimer.stop(); addFailTimer.stop(); clearPrevPanel(); engine.cleanUp(); this.gotoAndStop(70); } public function dealWithSend(_arg1:MouseEvent){ if (!submitPanel){ return; }; if (this.submitPanel.nameText.text == ""){ submitPanel.nameErrorDummy.alpha = 0; TweenLite.from(submitPanel.nameErrorDummy, 0.5, {alpha:1, ease:Strong.easeOut}); return; }; if (this.submitPanel.emailText.text == ""){ submitPanel.emailErrorDummy.alpha = 0; TweenLite.from(submitPanel.emailErrorDummy, 0.5, {alpha:1, ease:Strong.easeOut}); return; }; submitPanel.sendButton.removeEventListener(MouseEvent.CLICK, dealWithSend); endGameSubmit(this.submitPanel.nameText.text, getScoreSum(), elapsedCount, this.submitPanel.emailText.text); submitPanel.sendButton.gotoAndStop(2); deButtonize(submitPanel.sendButton, true); submitPanel.sendButton.mouseEnabled = false; submitPanel.loadIcon.visible = true; } public function destroyAndHome(_arg1:MouseEvent){ trackGameQuit(cLevel); sb.clearDelayedSounds(); addCompleteTimer.stop(); addFailTimer.stop(); clearPrevPanel(); engine.cleanUp(); this.gotoAndPlay(10); } } }//package mayhem34_fla
Section 232
//mc_148 (mayhem34_fla.mc_148) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import com.greensock.*; import com.greensock.easing.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class mc_148 extends MovieClip { public var dad:MovieClip; public var c01:MovieClip; public var c02:MovieClip; public var c03:MovieClip; public var c04:MovieClip; public var c05:MovieClip; public var c06:MovieClip; public var c07:MovieClip; public var c08:MovieClip; public var c09:MovieClip; public var classicID:uint; public var scoresLoad:int; public var classicXML:XML; public var classicPage:uint; public var c10:MovieClip; public var c11:MovieClip; public var c12:MovieClip; public var c13:MovieClip; public var c14:MovieClip; public var c15:MovieClip; public var c18:MovieClip; public var c19:MovieClip; public var c16:MovieClip; public var classicItems:Array; public var c20:MovieClip; public var classicOffset:uint; public var c17:MovieClip; public var tf:TextFormat; public var resultsPerPage:int; public var loadIcon:MovieClip; public function mc_148(){ addFrameScript(0, frame1); } public function showHideItems(_arg1:Array, _arg2:Boolean=true){ var _local3:uint; while (_local3 < _arg1.length) { if (_arg2){ _arg1[_local3].visible = true; } else { _arg1[_local3].visible = false; }; _local3++; }; } public function updateArrows(){ var _local1:uint; var _local2:XML; _local1 = classicPage; _local2 = classicXML; if (_local1 <= 0){ dad.stepLeft.disable(); } else { dad.stepLeft.enable(); }; if ((_local2.score.length() - (_local1 * resultsPerPage)) > resultsPerPage){ dad.stepRight.enable(); } else { dad.stepRight.disable(); }; } public function step(_arg1:MouseEvent=null){ var _local3:uint; updateArrows(); var _local2:Boolean; _local3 = classicPage; if (_arg1.currentTarget.name == "stepRight"){ _local2 = false; }; if (_local2){ if (_local3 == 0){ return; }; _local3--; if (_local3 == 0){ dad.stepLeft.disable(); }; } else { if (_arg1.currentTarget.dis){ return; }; _local3++; }; classicPage = _local3; displayPage(); updateArrows(); } public function animateItems(){ var _local1:Array; _local1 = classicItems; var _local2:uint; while (_local2 < _local1.length) { _local1[_local2].alpha = 1; _local1[_local2].y = _local1[_local2].myY; TweenLite.from(_local1[_local2], 0.3, {y:"10", alpha:0, ease:Sine.easeOut, delay:(_local2 * 0.02)}); _local2++; }; } public function initScores(_arg1:int):void{ var hsLoader:URLLoader; var onIOError:Function; var onLoadComplete:Function; var id = _arg1; onIOError = function (_arg1:IOErrorEvent):void{ hsLoader.removeEventListener(Event.COMPLETE, onLoadComplete); hsLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); }; onLoadComplete = function (_arg1:Event):void{ var e = _arg1; hsLoader.removeEventListener(Event.COMPLETE, onLoadComplete); hsLoader.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); try { classicXML = (XML(hsLoader.data) as XML); displayPage("classic"); } catch(te:TypeError) { }; }; loadIcon.visible = true; hsLoader = new URLLoader(); hsLoader.addEventListener(Event.COMPLETE, onLoadComplete); hsLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); hsLoader.load(new URLRequest(((((((("http://boxofsoap.com/highscore_v2/index.php/highscores/get_scores/" + id) + "/") + scoresLoad) + "/") + 0) + "/") + String(int((Math.random() * 100)))))); } public function stripToNum(_arg1:String){ var _local2:int = _arg1.indexOf(":"); if (_local2 != -1){ return (_arg1.slice((_local2 + 1), 100)); }; return (_arg1); } public function addComas(_arg1:String){ var _local2:Array = new Array(); while (3 < _arg1.length) { _local2.push(_arg1.slice((_arg1.length - 3), _arg1.length)); _arg1 = _arg1.slice(0, (_arg1.length - 3)); }; while (_local2.length > 0) { _arg1 = (_arg1 + ("," + _local2.pop())); }; return (_arg1); } public function displayPage(_arg1:String="classic"){ var _local2:uint; var _local4:XML; var _local5:Array; var _local6:MovieClip; var _local7:uint; loadIcon.visible = false; var _local3:uint; showHideItems(classicItems, true); showHideItems(classicItems); emptyItems(classicItems); _local2 = classicPage; _local4 = classicXML; _local5 = classicItems; _local3 = (_local4.score.length() - (_local2 * resultsPerPage)); if (_local3 > resultsPerPage){ _local3 = resultsPerPage; }; var _local8:uint; while (_local8 < _local3) { _local6 = _local5[_local8]; _local7 = (_local8 + (_local2 * resultsPerPage)); _local6.nam.text = String(_local4.score[_local7].@player_name); _local6.num.text = (String((_local7 + 1)) + "."); _local6.score.text = addComas(String(_local4.score[_local7].@score)); _local6.num.setTextFormat(tf); animateItems(); _local8++; }; updateArrows(); } public function emptyItems(_arg1:Array, _arg2:Boolean=false){ var _local3:uint; while (_local3 < _arg1.length) { if (_arg2){ _arg1[_local3].myY = _arg1[_local3].y; }; _arg1[_local3].num.text = ""; _arg1[_local3].nam.text = ""; _arg1[_local3].score.text = ""; if (_arg1[_local3].total){ _arg1[_local3].total.text = ""; }; _local3++; }; } function frame1(){ dad = MovieClip(parent); classicItems = new Array(c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20); classicID = 23; resultsPerPage = 20; scoresLoad = 200; classicXML = new XML(); classicOffset = 0; classicPage = 0; emptyItems(classicItems, true); dad.stepLeft.disable(); dad.stepRight.disable(); initScores(classicID); tf = new TextFormat(); tf.letterSpacing = -1; } } }//package mayhem34_fla
Section 233
//mc_162 (mayhem34_fla.mc_162) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class mc_162 extends MovieClip { public var n1:TextField; public var n2:TextField; public var n3:TextField; public var n4:TextField; public var scoreNum:TextField; public var digits:Array; public var tacs:MovieClip; public function mc_162(){ addFrameScript(0, frame1); } function frame1(){ digits = new Array(n1, n2, n3, n4); } public function showTime(_arg1:int=120){ if (_arg1 < 0){ _arg1 = 0; }; var _local2:uint = Math.floor((_arg1 / 60)); var _local3:uint = (_arg1 - (_local2 * 60)); var _local4 = ""; if (_local2 < 10){ _local4 = (_local4 + "0"); }; _local4 = (_local4 + String(_local2)); if (_local3 < 10){ _local4 = (_local4 + "0"); }; _local4 = (_local4 + String(_local3)); var _local5:uint; while (_local5 < 4) { digits[_local5].text = _local4.charAt(_local5); _local5++; }; } } }//package mayhem34_fla
Section 234
//mc_30 (mayhem34_fla.mc_30) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class mc_30 extends MovieClip { public var scoreButton:MovieClip; public var playbutton:MovieClip; public var titleMC:MovieClip; public var shareButton:MovieClip; public var howtoButton:MovieClip; public var moregameButton:MovieClip; public var packLoop:MovieClip; public function mc_30(){ addFrameScript(28, frame29, 68, frame69, 99, frame100); } function frame100(){ stop(); } function frame69(){ titleMC.gotoAndPlay("packHit"); } function frame29(){ MovieClip(parent).buttonize(playbutton, false, true); MovieClip(parent).buttonize(howtoButton, false, true); MovieClip(parent).buttonize(scoreButton, false, true); MovieClip(parent).buttonize(shareButton, false, true); MovieClip(parent).buttonize(moregameButton, false, true); MovieClip(parent).buttonize(MovieClip(parent).mButton); } } }//package mayhem34_fla
Section 235
//mc_65 (mayhem34_fla.mc_65) package mayhem34_fla { import flash.display.*; public dynamic class mc_65 extends MovieClip { public function mc_65(){ addFrameScript(39, frame40, 60, frame61); } function frame61(){ stop(); } function frame40(){ stop(); } } }//package mayhem34_fla
Section 236
//mc_78 (mayhem34_fla.mc_78) package mayhem34_fla { import flash.display.*; public dynamic class mc_78 extends MovieClip { public function mc_78(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 237
//mc_80 (mayhem34_fla.mc_80) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class mc_80 extends MovieClip { public function mc_80(){ addFrameScript(0, frame1, 84, frame85, 129, frame130, 289, frame290, 363, frame364, 409, frame410, 569, frame570, 641, frame642, 689, frame690); } function frame690(){ gotoAndPlay((690 + Math.ceil((50 * Math.random())))); } function frame130(){ gotoAndPlay((130 + Math.ceil((50 * Math.random())))); } function frame1(){ gotoAndPlay((1 + Math.ceil((80 * Math.random())))); } function frame410(){ gotoAndPlay((410 + Math.ceil((50 * Math.random())))); } function frame642(){ MovieClip(parent).packLoop.play(); } function frame570(){ gotoAndPlay((570 + Math.ceil((70 * Math.random())))); } function frame85(){ MovieClip(parent).packLoop.play(); } function frame364(){ MovieClip(parent).packLoop.play(); } function frame290(){ gotoAndPlay((290 + Math.ceil((70 * Math.random())))); } } }//package mayhem34_fla
Section 238
//musicBox2_29 (mayhem34_fla.musicBox2_29) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import com.greensock.*; import com.greensock.easing.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class musicBox2_29 extends MovieClip { public var st; public var cMusic:int; public var MUSICVOL:Number; public var musics:Array; public var musicChannel:SoundChannel; public function musicBox2_29(){ addFrameScript(0, frame1); } public function stopMusic(){ if (musicChannel){ musicChannel.stop(); }; } public function playNext(){ var _local1:Sound = new (musics[cMusic][0]); trace(_local1); st.volume = musics[cMusic][1]; musicChannel = _local1.play(0, 99, st); } public function startMusic(_arg1:uint=0){ trace("startMusic"); trace(cMusic, _arg1); if (cMusic == _arg1){ fadeToDefault(); return; }; cMusic = _arg1; if (!musicChannel){ playNext(); } else { fadeToNext(); }; } public function fadeToNext(){ TweenLite.to(st, 1, {volume:0, ease:Sine.easeIn, onUpdate:updateTransform, onComplete:playNext}); } public function updateTransform(){ musicChannel.soundTransform = st; } function frame1(){ MUSICVOL = 0.5; cMusic = -1; st = new SoundTransform(1); musics = new Array([menumusic, 0.8], [world1music, 0.5], [world2music, 0.5], [world3music, 0.5], [world4music, 0.5], [world5music, 0.5]); } public function fadeUp(){ TweenLite.to(st, 0.4, {volume:0.9, ease:Sine.easeIn, onUpdate:updateTransform}); } public function fadeToDefault(){ TweenLite.to(st, 0.4, {volume:musics[cMusic][1], ease:Sine.easeIn, onUpdate:updateTransform}); } } }//package mayhem34_fla
Section 239
//muteButton_125 (mayhem34_fla.muteButton_125) package mayhem34_fla { import flash.display.*; public dynamic class muteButton_125 extends MovieClip { public function muteButton_125(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package mayhem34_fla
Section 240
//myGrenade_161 (mayhem34_fla.myGrenade_161) package mayhem34_fla { import flash.display.*; public dynamic class myGrenade_161 extends MovieClip { public function myGrenade_161(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 241
//nextLevelButton_193 (mayhem34_fla.nextLevelButton_193) package mayhem34_fla { import flash.display.*; public dynamic class nextLevelButton_193 extends MovieClip { public var body:MovieClip; public function nextLevelButton_193(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 242
//nom_mc_95 (mayhem34_fla.nom_mc_95) package mayhem34_fla { import flash.display.*; public dynamic class nom_mc_95 extends MovieClip { public function nom_mc_95(){ addFrameScript(40, frame41); } function frame41(){ stop(); } } }//package mayhem34_fla
Section 243
//nom_mcProp_130 (mayhem34_fla.nom_mcProp_130) package mayhem34_fla { import flash.display.*; public dynamic class nom_mcProp_130 extends MovieClip { public function nom_mcProp_130(){ addFrameScript(40, frame41); } function frame41(){ stop(); } } }//package mayhem34_fla
Section 244
//nomAnim_96 (mayhem34_fla.nomAnim_96) package mayhem34_fla { import flash.display.*; public dynamic class nomAnim_96 extends MovieClip { public function nomAnim_96(){ addFrameScript(49, frame50); } function frame50(){ stop(); } } }//package mayhem34_fla
Section 245
//powerArrow_155 (mayhem34_fla.powerArrow_155) package mayhem34_fla { import flash.display.*; public dynamic class powerArrow_155 extends MovieClip { public var powerMask:MovieClip; public function powerArrow_155(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 246
//privacyCheckBox_179 (mayhem34_fla.privacyCheckBox_179) package mayhem34_fla { import flash.display.*; public dynamic class privacyCheckBox_179 extends MovieClip { public function privacyCheckBox_179(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 247
//sendButton_176 (mayhem34_fla.sendButton_176) package mayhem34_fla { import flash.display.*; public dynamic class sendButton_176 extends MovieClip { public function sendButton_176(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 248
//soundBox_28 (mayhem34_fla.soundBox_28) package mayhem34_fla { import flash.net.*; import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; import flash.text.*; import flash.media.*; import flash.ui.*; import flash.system.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.xml.*; public dynamic class soundBox_28 extends MovieClip { public var sounds:Array; public var delayedSounds:Array; public var SOUND_LOCK_DELAY:uint; public var soundDelays:Array; public function soundBox_28(){ addFrameScript(0, frame1); } public function getRandom(_arg1:uint){ return (Math.floor((Math.random() * _arg1))); } public function unlockSounds(_arg1:Event){ var _local2:uint; while (_local2 < soundDelays.length) { if (soundDelays[_local2] > 0){ var _local3 = soundDelays; var _local4 = _local2; var _local5 = (_local3[_local4] - 1); _local3[_local4] = _local5; }; _local2++; }; _local2 = 0; while (_local2 < delayedSounds.length) { if (delayedSounds[_local2][2] > 0){ _local3 = delayedSounds[_local2]; _local4 = 2; _local5 = (_local3[_local4] - 1); _local3[_local4] = _local5; } else { playSound(delayedSounds[_local2][0], delayedSounds[_local2][1]); delayedSounds.splice(_local2, 1); if (_local2 > 0){ _local2--; }; }; _local2++; }; } function frame1(){ SOUND_LOCK_DELAY = 6; sounds = new Array(); delayedSounds = new Array(); soundDelays = new Array(); sounds.push([catchSound]); sounds.push([chomp]); sounds.push([chomp, gulp, gulp2, gulp3]); sounds.push([hurray]); sounds.push([ohno, ohno2]); sounds.push([rocks1, rocks2, rocks3, rocks4]); sounds.push([throw1, throw2, throw3]); sounds.push([tic1, tic2, tic3, tic4]); sounds.push([trampoline]); sounds.push([wood1, wood2, wood3]); sounds.push([nomsfx]); sounds.push([throw4, throw5]); initSounds(); } public function initSounds(){ var _local1:uint; while (_local1 < sounds.length) { soundDelays.push(0); _local1++; }; this.addEventListener(Event.ENTER_FRAME, unlockSounds, false, 0, true); } public function clearDelayedSounds(){ while (delayedSounds.length > 0) { delayedSounds.pop(); }; } public function playSound(_arg1:uint=0, _arg2:uint=10, _arg3:uint=0){ if ((((soundDelays[_arg1] > _arg3)) || ((_arg2 < 1)))){ return; }; if (_arg3 > 0){ delayedSounds.push([_arg1, _arg2, _arg3]); return; }; trace(_arg2); if (_arg2 > 10){ _arg2 = 10; }; soundDelays[_arg1] = SOUND_LOCK_DELAY; var _local4:SoundTransform = new SoundTransform((_arg2 / 10)); var _local5:Sound = new (sounds[_arg1][getRandom(sounds[_arg1].length)]); _local5.play(0, 0, _local4); } } }//package mayhem34_fla
Section 249
//soundDump_2 (mayhem34_fla.soundDump_2) package mayhem34_fla { import flash.display.*; public dynamic class soundDump_2 extends MovieClip { public function soundDump_2(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 250
//stepArrow_138 (mayhem34_fla.stepArrow_138) package mayhem34_fla { import flash.display.*; public dynamic class stepArrow_138 extends MovieClip { public var bOn:MovieClip; public var bOff:MovieClip; public var dis:Boolean; public function stepArrow_138(){ addFrameScript(0, frame1); } public function enable(){ bOff.visible = false; bOn.visible = true; this.dis = false; } function frame1(){ stop(); bOff.mouseEnabled = false; bOn.mouseEnabled = false; } public function disable(){ bOff.visible = true; bOn.visible = false; this.dis = true; } } }//package mayhem34_fla
Section 251
//thrower01_eyes_idle_88 (mayhem34_fla.thrower01_eyes_idle_88) package mayhem34_fla { import flash.display.*; public dynamic class thrower01_eyes_idle_88 extends MovieClip { public function thrower01_eyes_idle_88(){ addFrameScript(0, frame1); } function frame1(){ gotoAndPlay(Math.ceil((60 * Math.random()))); } } }//package mayhem34_fla
Section 252
//Thrower01_fail_206 (mayhem34_fla.Thrower01_fail_206) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_fail_206 extends MovieClip { public function Thrower01_fail_206(){ addFrameScript(88, frame89); } function frame89(){ stop(); } } }//package mayhem34_fla
Section 253
//thrower01_head_fail_207 (mayhem34_fla.thrower01_head_fail_207) package mayhem34_fla { import flash.display.*; public dynamic class thrower01_head_fail_207 extends MovieClip { public function thrower01_head_fail_207(){ addFrameScript(124, frame125); } function frame125(){ gotoAndPlay("loop"); } } }//package mayhem34_fla
Section 254
//thrower01_head_idle_87 (mayhem34_fla.thrower01_head_idle_87) package mayhem34_fla { import flash.display.*; public dynamic class thrower01_head_idle_87 extends MovieClip { public function thrower01_head_idle_87(){ addFrameScript(29, frame30); } function frame30(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 30) + 1)); } } }//package mayhem34_fla
Section 255
//thrower01_head_success_205 (mayhem34_fla.thrower01_head_success_205) package mayhem34_fla { import flash.display.*; public dynamic class thrower01_head_success_205 extends MovieClip { public function thrower01_head_success_205(){ addFrameScript(44, frame45); } function frame45(){ gotoAndPlay("loop"); } } }//package mayhem34_fla
Section 256
//thrower01_head_wait_37 (mayhem34_fla.thrower01_head_wait_37) package mayhem34_fla { import flash.display.*; public dynamic class thrower01_head_wait_37 extends MovieClip { public function thrower01_head_wait_37(){ addFrameScript(89, frame90); } function frame90(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 90) + 1)); } } }//package mayhem34_fla
Section 257
//Thrower01_idle_86 (mayhem34_fla.Thrower01_idle_86) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_idle_86 extends MovieClip { public function Thrower01_idle_86(){ addFrameScript(59, frame60); } function frame60(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 60) + 1)); } } }//package mayhem34_fla
Section 258
//Thrower01_mc_201 (mayhem34_fla.Thrower01_mc_201) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_mc_201 extends MovieClip { public function Thrower01_mc_201(){ addFrameScript(0, frame1, 9, frame10, 19, frame20, 29, frame30, 39, frame40, 49, frame50, 60, frame61); } function frame1(){ stop(); } function frame50(){ stop(); } function frame40(){ stop(); } function frame30(){ stop(); } function frame20(){ stop(); } function frame10(){ stop(); } function frame61(){ stop(); } } }//package mayhem34_fla
Section 259
//Thrower01_reload_203 (mayhem34_fla.Thrower01_reload_203) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_reload_203 extends MovieClip { public function Thrower01_reload_203(){ addFrameScript(39, frame40); } function frame40(){ MovieClip(parent).gotoAndStop("idle"); } } }//package mayhem34_fla
Section 260
//Thrower01_success_204 (mayhem34_fla.Thrower01_success_204) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_success_204 extends MovieClip { public function Thrower01_success_204(){ addFrameScript(49, frame50); } function frame50(){ gotoAndPlay("loop"); } } }//package mayhem34_fla
Section 261
//Thrower01_throw_202 (mayhem34_fla.Thrower01_throw_202) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_throw_202 extends MovieClip { public function Thrower01_throw_202(){ addFrameScript(33, frame34); } function frame34(){ MovieClip(parent).gotoAndStop("wait"); } } }//package mayhem34_fla
Section 262
//Thrower01_throwsmall_210 (mayhem34_fla.Thrower01_throwsmall_210) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_throwsmall_210 extends MovieClip { public function Thrower01_throwsmall_210(){ addFrameScript(33, frame34); } function frame34(){ MovieClip(parent).gotoAndStop("wait"); } } }//package mayhem34_fla
Section 263
//Thrower01_wait_32 (mayhem34_fla.Thrower01_wait_32) package mayhem34_fla { import flash.display.*; public dynamic class Thrower01_wait_32 extends MovieClip { public var played; public function Thrower01_wait_32(){ addFrameScript(0, frame1, 59, frame60); } function frame1(){ if (!played){ gotoAndPlay(Math.ceil((60 * Math.random()))); played = true; }; } function frame60(){ gotoAndPlay((((Math.ceil((2 * Math.random())) - 1) * 60) + 1)); } } }//package mayhem34_fla
Section 264
//THUMBNAILS_144 (mayhem34_fla.THUMBNAILS_144) package mayhem34_fla { import flash.display.*; public dynamic class THUMBNAILS_144 extends MovieClip { public function THUMBNAILS_144(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 265
//titacCounter_163 (mayhem34_fla.titacCounter_163) package mayhem34_fla { import flash.display.*; public dynamic class titacCounter_163 extends MovieClip { public function titacCounter_163(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package mayhem34_fla
Section 266
//Color (wumedia.parsers.swf.Color) package wumedia.parsers.swf { public class Color { public var a:uint; public var b:uint; public var g:uint; public var r:uint; public function Color(_arg1:Data, _arg2:Boolean){ r = _arg1.readUnsignedByte(); g = _arg1.readUnsignedByte(); b = _arg1.readUnsignedByte(); if (_arg2){ a = _arg1.readUnsignedByte(); } else { a = 0xFF; }; } public function get color():uint{ return ((((r << 16) | (g << 8)) | b)); } public function toString():String{ return (value.toString(16)); } public function get value():uint{ return (((((a << 24) | (r << 16)) | (g << 8)) | b)); } public function get alpha():Number{ return ((a / 0xFF)); } } }//package wumedia.parsers.swf
Section 267
//Data (wumedia.parsers.swf.Data) package wumedia.parsers.swf { import flash.utils.*; import flash.geom.*; public class Data implements IDataInput { protected var _data:ByteArray; protected var _bitPos:int; protected var _bitBuff:int; public function Data(_arg1:ByteArray){ _data = _arg1; _data.endian = Endian.LITTLE_ENDIAN; synchBits(); } public function readInt():int{ synchBits(); return (_data.readInt()); } public function readBytes(_arg1:ByteArray, _arg2:uint=0, _arg3:uint=0):void{ synchBits(); _data.readBytes(_arg1, _arg2, _arg3); } public function readShort():int{ synchBits(); return (_data.readShort()); } public function readDouble():Number{ var _local1:ByteArray = new ByteArray(); var _local2:ByteArray = new ByteArray(); _data.readBytes(_local1, 0, 8); _local2.length = 8; _local2[0] = _local1[3]; _local2[1] = _local1[2]; _local2[2] = _local1[1]; _local2[3] = _local1[0]; _local2[4] = _local1[7]; _local2[5] = _local1[6]; _local2[6] = _local1[5]; _local2[7] = _local1[4]; _local2.position = 0; return (_local2.readDouble()); } public function readUnsignedShort():uint{ synchBits(); return (_data.readUnsignedShort()); } public function readRect():Rectangle{ var _local1:uint = readUBits(5); var _local2:Number = (readSBits(_local1) * 0.05); var _local3:Number = (readSBits(_local1) * 0.05); var _local4:Number = (readSBits(_local1) * 0.05); var _local5:Number = (readSBits(_local1) * 0.05); synchBits(); return (new Rectangle(_local2, _local4, (_local3 - _local2), (_local5 - _local4))); } public function get endian():String{ return (_data.endian); } public function get bytesAvailable():uint{ return (_data.bytesAvailable); } public function readSBits(_arg1:uint):int{ var _local2:int = readUBits(_arg1); if ((_local2 & (1 << (_arg1 - 1))) != 0){ _local2 = (_local2 | (-1 << _arg1)); }; return (_local2); } public function readUBits(_arg1:uint):uint{ var _local4:int; if (_arg1 == 0){ return (0); }; var _local2:int = _arg1; var _local3:int; if (_bitPos == 0){ _bitBuff = _data.readUnsignedByte(); _bitPos = 8; }; while (true) { _local4 = (_local2 - _bitPos); if (_local4 > 0){ _local3 = (_local3 | (_bitBuff << _local4)); _local2 = (_local2 - _bitPos); _bitBuff = _data.readUnsignedByte(); _bitPos = 8; } else { _local3 = (_local3 | (_bitBuff >> -(_local4))); _bitPos = (_bitPos - _local2); _bitBuff = (_bitBuff & (0xFF >> (8 - _bitPos))); break; }; }; return (_local3); } public function get position():int{ return (_data.position); } public function get data():ByteArray{ return (_data); } public function readUTF():String{ synchBits(); return (_data.readUTF()); } public function readBoolean():Boolean{ synchBits(); return (_data.readBoolean()); } public function set endian(_arg1:String):void{ _data.endian = _arg1; } public function readByte():int{ synchBits(); return (readByte()); } public function readUnsignedInt():uint{ synchBits(); return (_data.readUnsignedInt()); } public function readString():String{ var _local2:uint; var _local1 = ""; while ((_local2 = readUnsignedByte()) != 0) { _local1 = (_local1 + String.fromCharCode(_local2)); }; return (_local1); } public function readUTFBytes(_arg1:uint):String{ synchBits(); return (_data.readUTFBytes(_arg1)); } public function get objectEncoding():uint{ return (_data.objectEncoding); } public function set position(_arg1:int):void{ _data.position = _arg1; } public function synchBits():void{ _bitBuff = 0; _bitPos = 0; } public function set data(_arg1:ByteArray):void{ _data = _arg1; synchBits(); } public function readUnsignedByte():uint{ synchBits(); return (_data.readUnsignedByte()); } public function set objectEncoding(_arg1:uint):void{ _data.objectEncoding = _arg1; } public function readMultiByte(_arg1:uint, _arg2:String):String{ synchBits(); return (_data.readMultiByte(_arg1, _arg2)); } public function readFloat():Number{ synchBits(); return (_data.readFloat()); } public function readObject(){ synchBits(); return (_data.readObject()); } public function readMatrix():Matrix{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:uint; synchBits(); if (readUBits(1) == 1){ _local7 = readUBits(5); _local1 = (readSBits(_local7) / 65536); _local2 = (readSBits(_local7) / 65536); } else { _local1 = 1; _local2 = 1; }; if (readUBits(1) == 1){ _local7 = readUBits(5); _local3 = (readSBits(_local7) / 65536); _local4 = (readSBits(_local7) / 65536); } else { _local3 = 0; _local4 = 0; }; _local7 = readUBits(5); _local5 = (readSBits(_local7) * 0.05); _local6 = (readSBits(_local7) * 0.05); return (new Matrix(_local1, _local3, _local4, _local2, _local5, _local6)); } public function get length():uint{ return (_data.length); } } }//package wumedia.parsers.swf
Section 268
//Edge (wumedia.parsers.swf.Edge) package wumedia.parsers.swf { public class Edge { public var sx:int; public var sy:int; public var cx:int; public var cy:int; public var x:int; public var y:int; public var type:uint; public static const LINE:uint = 1; public static const CURVE:uint = 0; public function Edge(_arg1:uint, _arg2:Data, _arg3:int=0, _arg4:int=0){ this.type = _arg1; if (_arg2){ sx = _arg3; sy = _arg4; if (_arg1 == CURVE){ parseCurve(_arg2); } else { parseLine(_arg2); }; }; } public function reverse():Edge{ var _local1:Edge = new Edge(type, null); _local1.x = sx; _local1.y = sy; _local1.cx = cx; _local1.cy = cy; _local1.sx = x; _local1.sy = y; return (_local1); } private function parseLine(_arg1:Data):void{ var _local4:Boolean; var _local2:uint = (_arg1.readUBits(4) + 2); var _local3 = (_arg1.readUBits(1) == 1); if (_local3){ x = (_arg1.readSBits(_local2) + sx); y = (_arg1.readSBits(_local2) + sy); } else { _local4 = (_arg1.readUBits(1) == 1); if (_local4){ x = sx; y = (_arg1.readSBits(_local2) + sy); } else { x = (_arg1.readSBits(_local2) + sx); y = sy; }; }; } public function apply(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0):void{ if (type == CURVE){ var _local5 = _arg1; _local5["curveTo"](((cx * _arg2) + _arg3), ((cy * _arg2) + _arg4), ((x * _arg2) + _arg3), ((y * _arg2) + _arg4)); } else { _local5 = _arg1; _local5["lineTo"](((x * _arg2) + _arg3), ((y * _arg2) + _arg4)); }; } private function parseCurve(_arg1:Data):void{ var _local2:uint = (_arg1.readUBits(4) + 2); cx = (_arg1.readSBits(_local2) + sx); cy = (_arg1.readSBits(_local2) + sy); x = (_arg1.readSBits(_local2) + cx); y = (_arg1.readSBits(_local2) + cy); } } }//package wumedia.parsers.swf
Section 269
//FillStyle (wumedia.parsers.swf.FillStyle) package wumedia.parsers.swf { import flash.display.*; import flash.geom.*; public class FillStyle { private var _method:String; private var _fillMatrix:Matrix; private var _solidColor:Color; public var type:String; private var _arguments:Array; public function FillStyle(_arg1:Data, _arg2:Boolean){ var _local3:int; var _local5:int; var _local6:Array; var _local7:Array; var _local8:uint; super(); var _local4:int = _arg1.readUnsignedByte(); if (_local4 == 0){ _solidColor = new Color(_arg1, _arg2); _method = "beginFill"; _arguments = [_solidColor.color, _solidColor.alpha]; type = "FS"; } else { if ((((((_local4 == 16)) || ((_local4 == 18)))) || ((_local4 == 19)))){ _fillMatrix = _arg1.readMatrix(); _local5 = _arg1.readUnsignedByte(); _local6 = new Array(_local5); _local7 = new Array(_local5); _local3 = 0; while (_local3 < _local5) { _local6[_local3] = _arg1.readUnsignedByte(); _local7[_local3] = new Color(_arg1, _arg2); _local3++; }; if (_local4 == 16){ _arguments = [GradientType.LINEAR]; } else { if (_local4 == 18){ _arguments = [GradientType.RADIAL]; } else { _arguments = [GradientType.RADIAL]; }; }; _arguments = _arguments.concat([_local7.map(mapColors), _local7.map(mapAlphas), _local6]); _method = "beginGradientFill"; type = "FG"; } else { if ((((((((_local4 == 64)) || ((_local4 == 65)))) || ((_local4 == 66)))) || ((_local4 == 67)))){ _local8 = _arg1.readUnsignedShort(); _fillMatrix = _arg1.readMatrix(); _method = "beginBitmapFill"; type = "FB"; } else { type = "FS"; _method = "beginFill"; _arguments = [0xFFFFFF]; }; }; }; } public function get method(){ return (_method); } private function mapColors(_arg1:Color, ... _args):uint{ return (_arg1.color); } private function mapAlphas(_arg1:Color, ... _args):uint{ return (_arg1.alpha); } public function apply(_arg1, _arg2:Number=1, _arg3:Number=0, _arg4:Number=0):void{ var mat:Matrix; var graphics = _arg1; var scale = _arg2; var offsetX = _arg3; var offsetY = _arg4; if (graphics["hasOwnProperty"](_method)){ if (type == "FS"){ graphics[_method].apply(null, _arguments); } else { mat = _fillMatrix.clone(); mat.scale(scale, scale); mat.translate(offsetX, offsetY); graphics[_method].apply(null, _arguments.concat(mat)); }; } else { if (graphics["hasOwnProperty"]("beginFill")){ if (type == "FG"){ try { var _local6 = graphics; _local6["beginFill"](_arguments[1][0]); } catch(err:Error) { var _local7 = graphics; _local7["beginFill"](0); }; } else { _local6 = graphics; _local6["beginFill"](0); }; }; }; } } }//package wumedia.parsers.swf
Section 270
//LineStyle (wumedia.parsers.swf.LineStyle) package wumedia.parsers.swf { import flash.display.*; public class LineStyle { public var type:uint; public var jointStyle:String; private var _flags:uint; public var width:Number; public var endCaps:String; public var color:Color; public var startCaps:String; public var miterLimit:Number; public var noClose:Boolean; public static const TYPE_1:uint = 0; public static const TYPE_2:uint = 1; public function LineStyle(_arg1:uint, _arg2:Data, _arg3:Boolean=true){ this.type = _arg1; if (_arg2){ if (_arg1 == TYPE_1){ parseStyle1(_arg2, _arg3); } else { parseStyle2(_arg2, _arg3); }; }; } public function get noVScale():Boolean{ return (!(((_flags & 2) == 0))); } public function get pixelHinting():Boolean{ return (!(((_flags & 1) == 0))); } public function apply(_arg1):void{ if (_arg1["hasOwnProperty"]("lineStyle")){ if (color){ var _local2 = _arg1; _local2["lineStyle"](width, color.color, color.alpha); } else { _local2 = _arg1; _local2["lineStyle"](); }; }; } public function get noHScale():Boolean{ return (!(((_flags & 4) == 0))); } private function parseStyle1(_arg1:Data, _arg2:Boolean=true):void{ width = (_arg1.readUnsignedShort() * 0.05); color = new Color(_arg1, _arg2); } private function parseStyle2(_arg1:Data, _arg2:Boolean=true):void{ var _local3:uint; width = (_arg1.readUnsignedShort() * 0.05); _local3 = _arg1.readUBits(2); if (_local3 == 0){ startCaps = CapsStyle.ROUND; } else { if (_local3 == 1){ startCaps = CapsStyle.NONE; } else { startCaps = CapsStyle.SQUARE; }; }; _local3 = _arg1.readUBits(2); if (_local3 == 0){ jointStyle = JointStyle.ROUND; } else { if (_local3 == 1){ jointStyle = JointStyle.BEVEL; } else { jointStyle = JointStyle.MITER; }; }; _flags = _arg1.readUBits(4); _arg1.readUBits(5); noClose = (_arg1.readUBits(1) == 1); _local3 = _arg1.readUBits(2); if (_local3 == 0){ endCaps = CapsStyle.ROUND; } else { if (_local3 == 1){ endCaps = CapsStyle.NONE; } else { endCaps = CapsStyle.SQUARE; }; }; if (jointStyle == JointStyle.MITER){ miterLimit = (_arg1.readUnsignedShort() * 0.05); }; if (hasFill){ } else { color = new Color(_arg1, _arg2); }; } public function get hasFill():Boolean{ return (!(((_flags & 8) == 0))); } } }//package wumedia.parsers.swf
Section 271
//ShapeRecord (wumedia.parsers.swf.ShapeRecord) package wumedia.parsers.swf { import flash.display.*; import flash.geom.*; public class ShapeRecord { private var _hasAlpha:Boolean; private var _hasStateNewStyle:Boolean; private var _fillBits:uint; private var _fill1Index:uint; private var _fill0:Array; private var _fill1:Array; private var _fills:Array; private var _bounds:Rectangle; private var _elements:Array; private var _hasExtendedFill:Boolean; private var _hasStyle:Boolean; private var _fill0Index:uint; private var _tagType:uint; private var _lineBits:uint; private static var _shape:Shape = new Shape(); public function ShapeRecord(_arg1:Data, _arg2:uint){ _tagType = _arg2; _hasStyle = (((((((_tagType == TagTypes.DEFINE_SHAPE)) || ((_tagType == TagTypes.DEFINE_SHAPE2)))) || ((_tagType == TagTypes.DEFINE_SHAPE3)))) || ((_tagType == TagTypes.DEFINE_SHAPE4))); _hasAlpha = (((_tagType == TagTypes.DEFINE_SHAPE3)) || ((_tagType == TagTypes.DEFINE_SHAPE4))); _hasExtendedFill = (((((_tagType == TagTypes.DEFINE_SHAPE2)) || ((_tagType == TagTypes.DEFINE_SHAPE3)))) || ((_tagType == TagTypes.DEFINE_SHAPE4))); _hasStateNewStyle = (((((_tagType == TagTypes.DEFINE_SHAPE2)) || ((_tagType == TagTypes.DEFINE_SHAPE3)))) || ((_tagType == TagTypes.DEFINE_SHAPE4))); parse(_arg1); if (_elements.length > 0){ calculateBounds(); } else { _bounds = new Rectangle(0, 0, 0, 0); }; } private function calculateBounds():void{ var _local1:Graphics = _shape.graphics; _local1.clear(); _local1.beginFill(0); drawShape(_local1, this); _local1.endFill(); _bounds = _shape.getRect(_shape); } public function get bounds():Rectangle{ return (_bounds); } private function queueEdges():void{ if (_fill0){ _fills[_fill0Index] = _fills[_fill0Index].concat(_fill0); }; if (_fill1){ _fills[_fill1Index] = _fills[_fill1Index].concat(_fill1); }; } private function sortEdges(_arg1:Array):Array{ var _local2:int; var _local3:int; var _local5:Edge; var _local4:Array = [_arg1.shift()]; while (_arg1.length > 0) { _local5 = _arg1.pop(); _local4.push(_local5); _local3 = _arg1.length; while (--_local3 > -1) { _local2 = _arg1.length; while (--_local2 > -1) { if ((((_local5.x == _arg1[_local2].sx)) && ((_local5.y == _arg1[_local2].sy)))){ _local5 = _arg1.splice(_local2, 1)[0]; _local4.push(_local5); continue; }; }; }; }; return (_local4); } private function saveEdges():void{ var _local1:int; var _local2:int; queueEdges(); _local2 = _fills.length; _local1 = -1; while (++_local1 < _local2) { _fills[_local1] = sortEdges(_fills[_local1]); _elements = _elements.concat(_fills[_local1]); }; _fills = new Array(); } public function get elements():Array{ return (_elements); } private function parse(_arg1:Data):void{ var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; var _local6:Boolean; var _local7:uint; var _local8:int; var _local9:int; var _local10:int; var _local11:uint; var _local14:Edge; var _local15:uint; var _local12:int; var _local13:int; _elements = new Array(); _fills = new Array(); _arg1.synchBits(); if (_hasStyle){ parseStyles(_arg1); _arg1.synchBits(); } else { _fills = [[]]; _fill0 = []; _fill0Index = 0; }; _fillBits = _arg1.readUBits(4); _lineBits = _arg1.readUBits(4); while (true) { _local15 = _arg1.readUBits(1); if (_local15 == 1){ _local14 = new Edge(((_arg1.readUBits(1) == 0)) ? Edge.CURVE : Edge.LINE, _arg1, _local12, _local13); if (_fill0){ _fill0.push(_local14.reverse()); }; if (_fill1){ _fill1.push(_local14); }; _local12 = _local14.x; _local13 = _local14.y; } else { _local11 = _arg1.readUBits(5); if (_local11 == 0){ break; }; _local2 = !(((_local11 & 1) == 0)); _local3 = !(((_local11 & 2) == 0)); _local4 = !(((_local11 & 4) == 0)); _local5 = !(((_local11 & 8) == 0)); _local6 = !(((_local11 & 16) == 0)); if (_local2){ _local7 = _arg1.readUBits(5); _local12 = _arg1.readSBits(_local7); _local13 = _arg1.readSBits(_local7); }; if (_local3){ _local8 = _arg1.readUBits(_fillBits); }; if (_local4){ _local9 = _arg1.readUBits(_fillBits); }; if (_local5){ _local10 = _arg1.readUBits(_lineBits); }; if (_hasStyle){ queueEdges(); _fill0Index = (_local8 - 1); if ((((_local8 > 0)) && (_fills[_fill0Index]))){ _fill0 = []; } else { _fill0 = null; }; _fill1Index = (_local9 - 1); if ((((_local9 > 0)) && (_fills[_fill1Index]))){ _fill1 = []; } else { _fill1 = null; }; }; if (((_hasStateNewStyle) && (_local6))){ parseStyles(_arg1); _fillBits = _arg1.readUBits(4); _lineBits = _arg1.readUBits(4); }; }; }; saveEdges(); } private function parseStyles(_arg1:Data):void{ var _local2:int; var _local3:int; saveEdges(); _local3 = _arg1.readUnsignedByte(); if (((_hasExtendedFill) && ((_local3 == 0xFF)))){ _local3 = _arg1.readUnsignedShort(); }; _local2 = 0; while (_local2 < _local3) { _fills.push([new FillStyle(_arg1, _hasAlpha)]); _local2++; }; _local3 = _arg1.readUnsignedByte(); if (_local3 == 0xFF){ _local3 = _arg1.readUnsignedShort(); }; _local2 = 0; while (_local2 < _local3) { new LineStyle(((_tagType == TagTypes.DEFINE_SHAPE4)) ? LineStyle.TYPE_2 : LineStyle.TYPE_1, _arg1, _hasAlpha); _local2++; }; } public static function getPoints(_arg1:ShapeRecord, _arg2:Number=1):Array{ var _local9:Edge; var _local3:Array = new Array(); var _local4:Array = _arg1._elements; var _local5 = -1; var _local6:int = _local4.length; var _local7:int; var _local8:int; _arg2 = (_arg2 * 0.05); while (++_local5 < _local6) { if ((_local4[_local5] is Edge)){ _local9 = _local4[_local5]; _local3.push(new Point((_local9.x * _arg2), (_local9.y * _arg2))); _local7 = _local9.x; _local8 = _local9.y; }; }; return (_local3); } public static function drawShape(_arg1, _arg2:ShapeRecord, _arg3:Number=1, _arg4:Number=0, _arg5:Number=0):void{ var _local11:Edge; var _local6:Array = _arg2._elements; var _local7 = -1; var _local8:int = _local6.length; var _local9:int; var _local10:int; _arg3 = (_arg3 * 0.05); while (++_local7 < _local8) { if ((_local6[_local7] is Edge)){ _local11 = _local6[_local7]; if (((!((_local9 == _local11.sx))) || (!((_local10 == _local11.sy))))){ var _local12 = _arg1; _local12["moveTo"]((_arg4 + (_local11.sx * _arg3)), (_arg5 + (_local11.sy * _arg3))); }; _local11.apply(_arg1, _arg3, _arg4, _arg5); _local9 = _local11.x; _local10 = _local11.y; } else { if ((_local6[_local7] is FillStyle)){ (_local6[_local7] as FillStyle).apply(_arg1, _arg3, _arg4, _arg5); }; }; }; } } }//package wumedia.parsers.swf
Section 272
//SWFParser (wumedia.parsers.swf.SWFParser) package wumedia.parsers.swf { import flash.utils.*; import flash.geom.*; public class SWFParser { protected var _size:uint; protected var _rect:Rectangle; protected var _frames:uint; protected var _version:uint; protected var _data:Data; protected var _frameRate:uint; public function SWFParser(_arg1:ByteArray){ var _local2:String; var _local3:ByteArray; super(); if (_arg1){ _arg1.position = 0; _local2 = _arg1.readUTFBytes(3); _version = _arg1.readUnsignedByte(); _size = _arg1.readUnsignedInt(); _data = new Data(_arg1); if (_local2 == "CWS"){ _local3 = new ByteArray(); _data.readBytes(_local3); _local3.position = 0; _local3.uncompress(); _local3.position = 0; _data = new Data(_local3); }; _rect = _data.readRect(); _frameRate = (_data.readUnsignedShort() >> 8); _frames = _data.readShort(); }; } public function get size():uint{ return (_size); } public function get rect():Rectangle{ return (_rect); } public function parseTags(_arg1, _arg2:Boolean, _arg3:uint=0, _arg4:Data=null):Array{ var _local6:uint; var _local7:uint; var _local10:Tag; var _local11:ByteArray; if (_arg4 == null){ _arg4 = _data; }; var _local5 = -1; var _local8:uint = _arg4.position; var _local9:Array = []; while (((_arg4.bytesAvailable) && (!((_local5 == _arg3))))) { _local5 = _arg4.readUnsignedShort(); _local6 = (_local5 & 63); if (_local6 == 63){ _local6 = _arg4.readUnsignedInt(); }; _local5 = (_local5 >> 6); _local7 = _arg4.position; if ((((_local5 == _arg1)) || (((_arg1 is Array)) ? !(((_arg1 as Array).indexOf(_local5) == -1)) : false))){ _local10 = new Tag(_local5, _arg4.position, _local6); if (_arg2){ _local11 = new ByteArray(); _arg4.readBytes(_local11, 0, _local10.length); _local11.position = 0; _local10.data = new Data(_local11); }; _local9.push(_local10); }; if (_arg4.position == _local7){ _arg4.position = (_arg4.position + _local6); }; }; _arg4.position = _local8; return (_local9); } public function get frameRate():uint{ return (_frameRate); } public function get data():Data{ return (_data); } public function get frames():uint{ return (_frames); } public function get ver():uint{ return (_version); } } }//package wumedia.parsers.swf
Section 273
//Tag (wumedia.parsers.swf.Tag) package wumedia.parsers.swf { public class Tag { public var data:Data; public var length:uint; public var position:uint; public var type:int; public function Tag(_arg1:uint=0, _arg2:uint=0, _arg3:uint=0){ this.type = _arg1; this.position = _arg2; this.length = _arg3; } } }//package wumedia.parsers.swf
Section 274
//TagTypes (wumedia.parsers.swf.TagTypes) package wumedia.parsers.swf { public class TagTypes { public static const SYMBOL_CLASS:uint = 76; public static const DEFINE_BITS:uint = 6; public static const SCRIPT_LIMITS:uint = 65; public static const CSM_TEXT_SETTINGS:uint = 74; public static const DEFINE_FONT_INFO:uint = 13; public static const DEFINE_MORPH_SHAPE2:uint = 84; public static const JPEG_TABLES:uint = 8; public static const DEFINE_TEXT2:uint = 33; public static const SOUND_STREAM_HEAD2:uint = 45; public static const METADATA:uint = 77; public static const DEFINE_TEXT:uint = 11; public static const DEFINE_BUTTON:uint = 7; public static const REMNOVE_OBJECT2:uint = 28; public static const DEFINE_FONT2:uint = 48; public static const DEFINE_FONT3:uint = 75; public static const DEFINE_FONT4:uint = 91; public static const DEFINE_BUTTON_CX_FORM:uint = 23; public static const SOUND_STREAM_BLOCK:uint = 19; public static const SET_BACKGROUND_COLOR:uint = 9; public static const DEFINE_FONT:uint = 10; public static const DEFINE_BITS_JPEG2:uint = 21; public static const DEFINE_BITS_JPEG4:uint = 90; public static const DEFINE_FONT_INFO2:uint = 62; public static const REMOVE_OBJECT:uint = 5; public static const DEFINE_BITS_JPEG3:uint = 35; public static const DEFINE_FONT_ALIGN_ZONES:uint = 73; public static const FRAME_LABEL:uint = 43; public static const DO_ACTION:uint = 12; public static const DEFINE_SOUND:uint = 14; public static const EXPORT_ASSETS:uint = 56; public static const ENABLE_DEBUGGER2:uint = 64; public static const PLACE_OBJECT2:uint = 26; public static const ENABLE_DEBUGGER:uint = 58; public static const DEFINE_BITS_LOSSLESS2:uint = 36; public static const IMPORT_ASSETS2:uint = 71; public static const SHOW_FRAME:uint = 1; public static const DO_ABC:uint = 82; public static const DO_INIT_ACTION:uint = 59; public static const PLACE_OBJECT3:uint = 70; public static const PLACE_OBJECT:uint = 4; public static const DEFINE_BINARY_DATA:uint = 87; public static const SET_TAB_INDEX:uint = 66; public static const DEFINE_BUTTON_SOUND:uint = 17; public static const PROTECT:uint = 24; public static const START_SOUND:uint = 15; public static const END:uint = 0; public static const DEFINE_BUTTON2:uint = 34; public static const DEFINE_EDIT_TEXT:uint = 37; public static const START_SOUND2:uint = 89; public static const DEFINE_SCALIGN_GRID:uint = 78; public static const DEFINE_SPRITE:uint = 39; public static const IMOPRT_ASSETS:uint = 57; public static const DEFINE_BITS_LOSSLESS:uint = 20; public static const DEFINE_SHAPE2:uint = 22; public static const DEFINE_SHAPE4:uint = 83; public static const DEFINE_SHAPE3:uint = 32; public static const VIDEO_STREAM:uint = 61; public static const DEFINE_MORPH_SHAPE:uint = 46; public static const DEFINE_VIDEO_STREAM:uint = 60; public static const DEFINE_SCENE_AND_FRAME_LABEL_DATA:uint = 86; public static const SOUND_STREAM_HEAD:uint = 18; public static const DEFINE_FONT_NAME:uint = 88; public static const FILE_ATTRIBUTES:uint = 69; public static const DEFINE_SHAPE:uint = 2; } }//package wumedia.parsers.swf
Section 275
//VectorShapes (wumedia.vector.VectorShapes) package wumedia.vector { import flash.utils.*; import wumedia.parsers.swf.*; import flash.geom.*; public class VectorShapes { private static var _library:Object = new Object(); public function VectorShapes(){ throw (new Error((getQualifiedClassName(this) + " can not be instantiated"))); } public static function draw(_arg1, _arg2:String, _arg3:Number=1, _arg4:Number=0, _arg5:Number=0):void{ if (_library[_arg2]){ ShapeRecord.drawShape(_arg1, _library[_arg2], _arg3, _arg4, _arg5); } else { trace((("ERROR: missing " + _arg2) + " vector")); }; } private static function getShapeFromPlaceTags(_arg1:SWFParser, _arg2:Array):Tag{ var swf = _arg1; var placeTags = _arg2; var lib:Array = swf.parseTags([TagTypes.DEFINE_SHAPE, TagTypes.DEFINE_SHAPE2, TagTypes.DEFINE_SHAPE3, TagTypes.DEFINE_SHAPE4], true).filter(function (_arg1:Tag, ... _args):Boolean{ var _local3:* = _arg1.data.readUnsignedShort(); _arg1.data.position = 0; return (!((placeTags.indexOf(_local3) == -1))); }); return (lib[0]); } private static function parsePlacetags(_arg1:Array):Array{ var _local5:uint; var _local6:Matrix; var _local7:Data; var _local8:uint; var _local9:uint; var _local2:Array = []; var _local3 = -1; var _local4:int = _arg1.length; while (++_local3 < _local4) { _local7 = _arg1[_local3].data; _local8 = _arg1[_local3].type; if (_local8 == TagTypes.PLACE_OBJECT){ _local5 = _local7.readUnsignedShort(); _local7.readUnsignedShort(); _local6 = _local7.readMatrix(); } else { if (_local8 == TagTypes.PLACE_OBJECT2){ _local7.readUBits(8); _local7.readUnsignedShort(); _local5 = _local7.readUnsignedShort(); _local6 = _local7.readMatrix(); } else { if (_local8 == TagTypes.PLACE_OBJECT3){ _local9 = _local7.readUBits(16); _local7.readUnsignedShort(); if (((((!(((_local9 & 8) == 0))) || (!(((_local9 & 16) == 0))))) || (!(((_local9 & 0x0200) == 0))))){ _local7.readString(); }; _local5 = _local7.readUnsignedShort(); _local6 = _local7.readMatrix(); } else { _local5 = 0; }; }; }; if (_local5 != 0){ _local2.push(_local5); _local2.push(_local6); }; }; return (_local2); } private static function parseClassIdTable(_arg1:SWFParser):Object{ var _local7:uint; var _local8:String; var _local2:Object = {}; var _local3:Array = _arg1.parseTags(TagTypes.SYMBOL_CLASS, true); if (_local3.length != 1){ return (_local2); }; var _local4:Data = _local3[0].data; var _local5:uint = _local4.readUnsignedShort(); var _local6 = -1; while (++_local6 < _local5) { _local7 = _local4.readUnsignedShort(); _local8 = _local4.readString(); _local2[_local7] = _local8; }; return (_local2); } private static function shiftDataPosToShapeRecord(_arg1:Data, _arg2:uint):void{ _arg1.readUnsignedShort(); _arg1.readRect(); if (_arg2 == TagTypes.DEFINE_SHAPE4){ _arg1.readRect(); _arg1.readUBits(5); _arg1.readUBits(1); _arg1.readUBits(1); _arg1.readUBits(1); }; } public static function extractFromLibrary(_arg1:ByteArray, _arg2:Array):void{ var swf:SWFParser; var classes:Object; var sprites:Array; var i:int; var l:int; var placeTags:Array; var defineShape:Tag; var spriteId:uint; var bytes = _arg1; var ids = _arg2; try { swf = new SWFParser(bytes); classes = parseClassIdTable(swf); sprites = swf.parseTags([TagTypes.DEFINE_SPRITE], true).filter(function (_arg1:Tag, ... _args):Boolean{ var _local3:* = _arg1.data.readUnsignedShort(); _arg1.data.position = (_arg1.data.position - 2); return (!((ids.indexOf(classes[_local3]) == -1))); }); i = -1; l = sprites.length; while ((i = (i + 1)), (i + 1) < l) { sprites[i].data.readUnsignedInt(); placeTags = parsePlacetags(swf.parseTags([TagTypes.PLACE_OBJECT, TagTypes.PLACE_OBJECT2, TagTypes.PLACE_OBJECT3], true, 1, sprites[i].data)); defineShape = getShapeFromPlaceTags(swf, placeTags); if (defineShape){ sprites[i].data.position = 0; spriteId = sprites[i].data.readUnsignedShort(); defineShape.data.position = 0; shiftDataPosToShapeRecord(defineShape.data, defineShape.type); if (!_library[classes[spriteId]]){ _library[classes[spriteId]] = new ShapeRecord(defineShape.data, defineShape.type); } else { trace((("WARNING: vector shape with id " + classes[spriteId]) + " already exists. skipping.")); }; }; }; } catch(err:Error) { trace("**************************************************"); trace("** Error: unable to extract vectors from swf bytes"); trace(err.getStackTrace()); trace("**************************************************"); }; } public static function extractFromStage(_arg1:ByteArray, _arg2:String):void{ var swf:SWFParser; var placeTags:Array; var defineShape:Tag; var bytes = _arg1; var id = _arg2; try { swf = new SWFParser(bytes); placeTags = parsePlacetags(swf.parseTags([TagTypes.PLACE_OBJECT, TagTypes.PLACE_OBJECT2, TagTypes.PLACE_OBJECT3], true, 1)); defineShape = getShapeFromPlaceTags(swf, placeTags); if (defineShape){ defineShape.data.position = 0; shiftDataPosToShapeRecord(defineShape.data, defineShape.type); if (!_library[id]){ _library[id] = new ShapeRecord(defineShape.data, defineShape.type); } else { trace((("WARNING: vector shape with id " + id) + " already exists, skipping.")); }; } else { throw (new Error("no shapes found")); }; } catch(err:Error) { trace("**************************************************"); trace("** Error: unable to extract vectors from swf bytes"); trace(err.getStackTrace()); trace("**************************************************"); }; } public static function getPoints(_arg1:String, _arg2:Number=1):Array{ if (_library[_arg1]){ return (ShapeRecord.getPoints(_library[_arg1], _arg2)); }; trace((("ERROR: missing " + _arg1) + " vector")); return (null); } public static function get library():Object{ return (_library); } } }//package wumedia.vector
Section 276
//catchSound (catchSound) package { import flash.media.*; public dynamic class catchSound extends Sound { } }//package
Section 277
//chomp (chomp) package { import flash.media.*; public dynamic class chomp extends Sound { } }//package
Section 278
//completePanel (completePanel) package { import flash.display.*; import flash.text.*; public dynamic class completePanel extends MovieClip { public var nextButton:MovieClip; public var bonusNameText:TextField; public var bonusText:TextField; public var scoreText:TextField; } }//package
Section 279
//failPanel (failPanel) package { import flash.display.*; import flash.text.*; public dynamic class failPanel extends MovieClip { public var submitButton:MovieClip; public var retryButton:MovieClip; public var failText:TextField; } }//package
Section 280
//gulp (gulp) package { import flash.media.*; public dynamic class gulp extends Sound { } }//package
Section 281
//gulp2 (gulp2) package { import flash.media.*; public dynamic class gulp2 extends Sound { } }//package
Section 282
//gulp3 (gulp3) package { import flash.media.*; public dynamic class gulp3 extends Sound { } }//package
Section 283
//hurray (hurray) package { import flash.media.*; public dynamic class hurray extends Sound { } }//package
Section 284
//level01 (level01) package { import flash.display.*; public dynamic class level01 extends MovieClip { } }//package
Section 285
//level02 (level02) package { import flash.display.*; public dynamic class level02 extends MovieClip { } }//package
Section 286
//level03 (level03) package { import flash.display.*; public dynamic class level03 extends MovieClip { } }//package
Section 287
//level04 (level04) package { import flash.display.*; public dynamic class level04 extends MovieClip { } }//package
Section 288
//level05 (level05) package { import flash.display.*; public dynamic class level05 extends MovieClip { } }//package
Section 289
//level06 (level06) package { import flash.display.*; public dynamic class level06 extends MovieClip { } }//package
Section 290
//level07 (level07) package { import flash.display.*; public dynamic class level07 extends MovieClip { } }//package
Section 291
//level08 (level08) package { import flash.display.*; public dynamic class level08 extends MovieClip { } }//package
Section 292
//level09 (level09) package { import flash.display.*; public dynamic class level09 extends MovieClip { } }//package
Section 293
//level10 (level10) package { import flash.display.*; public dynamic class level10 extends MovieClip { } }//package
Section 294
//level11 (level11) package { import flash.display.*; public dynamic class level11 extends MovieClip { } }//package
Section 295
//level12 (level12) package { import flash.display.*; public dynamic class level12 extends MovieClip { } }//package
Section 296
//level13 (level13) package { import flash.display.*; public dynamic class level13 extends MovieClip { } }//package
Section 297
//level14 (level14) package { import flash.display.*; public dynamic class level14 extends MovieClip { } }//package
Section 298
//level15 (level15) package { import flash.display.*; public dynamic class level15 extends MovieClip { } }//package
Section 299
//level16 (level16) package { import flash.display.*; public dynamic class level16 extends MovieClip { } }//package
Section 300
//level17 (level17) package { import flash.display.*; public dynamic class level17 extends MovieClip { } }//package
Section 301
//level18 (level18) package { import flash.display.*; public dynamic class level18 extends MovieClip { } }//package
Section 302
//level19 (level19) package { import flash.display.*; public dynamic class level19 extends MovieClip { } }//package
Section 303
//level20 (level20) package { import flash.display.*; public dynamic class level20 extends MovieClip { } }//package
Section 304
//level21 (level21) package { import flash.display.*; public dynamic class level21 extends MovieClip { } }//package
Section 305
//level22 (level22) package { import flash.display.*; public dynamic class level22 extends MovieClip { } }//package
Section 306
//level23 (level23) package { import flash.display.*; public dynamic class level23 extends MovieClip { } }//package
Section 307
//level24 (level24) package { import flash.display.*; public dynamic class level24 extends MovieClip { } }//package
Section 308
//level25 (level25) package { import flash.display.*; public dynamic class level25 extends MovieClip { } }//package
Section 309
//menumusic (menumusic) package { import flash.media.*; public dynamic class menumusic extends Sound { } }//package
Section 310
//nomsfx (nomsfx) package { import flash.media.*; public dynamic class nomsfx extends Sound { } }//package
Section 311
//ohno (ohno) package { import flash.media.*; public dynamic class ohno extends Sound { } }//package
Section 312
//ohno2 (ohno2) package { import flash.media.*; public dynamic class ohno2 extends Sound { } }//package
Section 313
//popBubble (popBubble) package { import flash.display.*; import flash.text.*; import com.greensock.*; import com.greensock.easing.*; public dynamic class popBubble extends MovieClip { public var txt:TextField; public var txt2:TextField; public function popBubble(){ addFrameScript(0, frame1); } function frame1(){ txt.mouseEnabled = false; this.mouseChildren = false; TweenLite.from(this, 0.3, {scaleX:0.1, scaleY:0.1, ease:Back.easeOut, onComplete:fade}); } public function fade(){ TweenLite.to(this, 0.5, {y:"-40", alpha:0, ease:Strong.easeIn, onComplete:kill}); } public function kill(){ MovieClip(parent).removeChild(this); } } }//package
Section 314
//props (props) package { import flash.display.*; public dynamic class props extends MovieClip { public var mc:MovieClip; } }//package
Section 315
//rocks1 (rocks1) package { import flash.media.*; public dynamic class rocks1 extends Sound { } }//package
Section 316
//rocks2 (rocks2) package { import flash.media.*; public dynamic class rocks2 extends Sound { } }//package
Section 317
//rocks3 (rocks3) package { import flash.media.*; public dynamic class rocks3 extends Sound { } }//package
Section 318
//rocks4 (rocks4) package { import flash.media.*; public dynamic class rocks4 extends Sound { } }//package
Section 319
//startPanel (startPanel) package { import flash.display.*; import flash.text.*; public dynamic class startPanel extends MovieClip { public var levelNum2:TextField; public var startButton:MovieClip; public var introText:TextField; public var levelNum1:TextField; } }//package
Section 320
//throw1 (throw1) package { import flash.media.*; public dynamic class throw1 extends Sound { } }//package
Section 321
//throw2 (throw2) package { import flash.media.*; public dynamic class throw2 extends Sound { } }//package
Section 322
//throw3 (throw3) package { import flash.media.*; public dynamic class throw3 extends Sound { } }//package
Section 323
//throw4 (throw4) package { import flash.media.*; public dynamic class throw4 extends Sound { } }//package
Section 324
//throw5 (throw5) package { import flash.media.*; public dynamic class throw5 extends Sound { } }//package
Section 325
//tic1 (tic1) package { import flash.media.*; public dynamic class tic1 extends Sound { } }//package
Section 326
//tic2 (tic2) package { import flash.media.*; public dynamic class tic2 extends Sound { } }//package
Section 327
//tic3 (tic3) package { import flash.media.*; public dynamic class tic3 extends Sound { } }//package
Section 328
//tic4 (tic4) package { import flash.media.*; public dynamic class tic4 extends Sound { } }//package
Section 329
//trampoline (trampoline) package { import flash.media.*; public dynamic class trampoline extends Sound { } }//package
Section 330
//wood1 (wood1) package { import flash.media.*; public dynamic class wood1 extends Sound { } }//package
Section 331
//wood2 (wood2) package { import flash.media.*; public dynamic class wood2 extends Sound { } }//package
Section 332
//wood3 (wood3) package { import flash.media.*; public dynamic class wood3 extends Sound { } }//package
Section 333
//world1music (world1music) package { import flash.media.*; public dynamic class world1music extends Sound { } }//package
Section 334
//world2music (world2music) package { import flash.media.*; public dynamic class world2music extends Sound { } }//package
Section 335
//world3music (world3music) package { import flash.media.*; public dynamic class world3music extends Sound { } }//package
Section 336
//world4music (world4music) package { import flash.media.*; public dynamic class world4music extends Sound { } }//package
Section 337
//world5music (world5music) package { import flash.media.*; public dynamic class world5music extends Sound { } }//package

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClipUses:1Used by:40 55 68 74 76 88 90 111 117 158 160 196 198 544
Symbol 3 GraphicUsed by:4
Symbol 4 MovieClipUses:3Used by:40 55 68 74 76 88 90 111 117 158 160 196 198 544
Symbol 5 GraphicUsed by:6
Symbol 6 MovieClipUses:5Used by:40 55 68 74 76 88 90 544
Symbol 7 GraphicUsed by:8
Symbol 8 MovieClipUses:7Used by:40 55 68 74 76 88 90 111 117 158 160 196 198 455 544 688
Symbol 9 GraphicUsed by:12
Symbol 10 GraphicUsed by:12
Symbol 11 GraphicUsed by:12
Symbol 12 MovieClipUses:9 10 11Used by:35 54 66 73 75 83
Symbol 13 GraphicUsed by:14
Symbol 14 MovieClipUses:13Used by:35 54 66 73 75 83
Symbol 15 ShapeTweeningUsed by:35
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:16Used by:26 35 54 66 73 75 83 110 116 157 159 186 197 429 674
Symbol 18 GraphicUsed by:19 84
Symbol 19 MovieClipUses:18Used by:21 26 35 54 66 73 75 83 110 116 157 159 186 197 429 674
Symbol 20 GraphicUsed by:21
Symbol 21 MovieClipUses:20 19Used by:26 35 83
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClipUses:22Used by:26 35 66 186
Symbol 24 GraphicUsed by:25
Symbol 25 MovieClipUses:24Used by:26 35 44 58 82 83 110 116 159 197
Symbol 26 MovieClip {mayhem34_fla.thrower01_eyes_idle_88}Uses:17 19 21 23 25Used by:35
Symbol 27 ShapeTweeningUsed by:35
Symbol 28 ShapeTweeningUsed by:35
Symbol 29 ShapeTweeningUsed by:35
Symbol 30 ShapeTweeningUsed by:35
Symbol 31 ShapeTweeningUsed by:35
Symbol 32 GraphicUsed by:35
Symbol 33 GraphicUsed by:34 54 66 75 110 157 186
Symbol 34 MovieClipUses:33Used by:35 73 75 83
Symbol 35 MovieClip {mayhem34_fla.thrower01_head_idle_87}Uses:12 14 15 26 27 28 17 19 29 23 25 30 31 32 34 21Used by:40
Symbol 36 GraphicUsed by:37
Symbol 37 MovieClipUses:36Used by:40 68 74 88 90 117 160 196 198 544
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClipUses:38Used by:40 68 74 88 90 117 160 198 544
Symbol 40 MovieClip {mayhem34_fla.Thrower01_idle_86}Uses:2 4 6 8 35 37 39Used by:91 544
Symbol 41 ShapeTweeningUsed by:54
Symbol 42 ShapeTweeningUsed by:54
Symbol 43 ShapeTweeningUsed by:54
Symbol 44 MovieClipUses:25Used by:54 66 73 75 83 110 116 157 159 186 197
Symbol 45 ShapeTweeningUsed by:54
Symbol 46 ShapeTweeningUsed by:54
Symbol 47 ShapeTweeningUsed by:54
Symbol 48 ShapeTweeningUsed by:54
Symbol 49 ShapeTweeningUsed by:54
Symbol 50 ShapeTweeningUsed by:54
Symbol 51 ShapeTweeningUsed by:54
Symbol 52 ShapeTweeningUsed by:54
Symbol 53 ShapeTweeningUsed by:54
Symbol 54 MovieClip {mayhem34_fla.thrower01_head_wait_37}Uses:12 14 41 17 19 42 43 44 45 46 47 48 49 50 51 52 53 33Used by:55
Symbol 55 MovieClip {mayhem34_fla.Thrower01_wait_32}Uses:2 4 6 8 54Used by:91 544 545
Symbol 56 ShapeTweeningUsed by:66
Symbol 57 ShapeTweeningUsed by:66
Symbol 58 MovieClipUses:25Used by:66
Symbol 59 ShapeTweeningUsed by:66
Symbol 60 GraphicUsed by:66
Symbol 61 ShapeTweeningUsed by:66
Symbol 62 ShapeTweeningUsed by:66
Symbol 63 ShapeTweeningUsed by:66
Symbol 64 ShapeTweeningUsed by:66
Symbol 65 GraphicUsed by:66 80 177
Symbol 66 MovieClipUses:12 14 56 17 19 57 23 58 59 60 33 61 62 44 63 64 65Used by:68 90 544
Symbol 67 GraphicUsed by:68 544
Symbol 68 MovieClip {mayhem34_fla.Thrower01_throw_202}Uses:2 4 6 8 66 37 39 67Used by:91
Symbol 69 ShapeTweeningUsed by:73
Symbol 70 GraphicUsed by:73 83
Symbol 71 GraphicUsed by:72
Symbol 72 MovieClipUses:71Used by:73 75 83 116
Symbol 73 MovieClipUses:12 14 69 17 19 70 44 72 34Used by:74 544
Symbol 74 MovieClip {mayhem34_fla.Thrower01_reload_203}Uses:2 4 6 8 73 39 37Used by:91
Symbol 75 MovieClip {mayhem34_fla.thrower01_head_success_205}Uses:12 14 33 17 19 34 44 72Used by:76
Symbol 76 MovieClip {mayhem34_fla.Thrower01_success_204}Uses:2 4 6 8 75Used by:91
Symbol 77 ShapeTweeningUsed by:83
Symbol 78 GraphicUsed by:79
Symbol 79 MovieClipUses:78Used by:83
Symbol 80 MovieClipUses:65Used by:82 83 110 116 159 197
Symbol 81 GraphicUsed by:83
Symbol 82 MovieClipUses:80 25Used by:83
Symbol 83 MovieClip {mayhem34_fla.thrower01_head_fail_207}Uses:12 14 77 17 19 70 79 80 81 72 21 44 25 82 34Used by:88
Symbol 84 MovieClipUses:18Used by:85
Symbol 85 MovieClipUses:84Used by:88 117 160 198 544
Symbol 86 GraphicUsed by:87
Symbol 87 MovieClipUses:86Used by:88 117 160 196 198 544
Symbol 88 MovieClip {mayhem34_fla.Thrower01_fail_206}Uses:2 4 6 8 83 37 39 85 87Used by:91
Symbol 89 GraphicUsed by:90
Symbol 90 MovieClip {mayhem34_fla.Thrower01_throwsmall_210}Uses:2 4 6 8 66 37 39 89Used by:91
Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201}Uses:40 55 68 74 76 88 90Used by:212
Symbol 92 GraphicUsed by:93
Symbol 93 MovieClipUses:92Used by:111 117 544
Symbol 94 GraphicUsed by:95
Symbol 95 MovieClipUses:94Used by:110 116
Symbol 96 GraphicUsed by:97
Symbol 97 MovieClipUses:96Used by:110 116
Symbol 98 ShapeTweeningUsed by:110
Symbol 99 ShapeTweeningUsed by:110
Symbol 100 ShapeTweeningUsed by:110
Symbol 101 ShapeTweeningUsed by:110
Symbol 102 ShapeTweeningUsed by:110
Symbol 103 ShapeTweeningUsed by:110
Symbol 104 ShapeTweeningUsed by:110
Symbol 105 ShapeTweeningUsed by:110
Symbol 106 ShapeTweeningUsed by:110
Symbol 107 ShapeTweeningUsed by:110
Symbol 108 ShapeTweeningUsed by:110
Symbol 109 ShapeTweeningUsed by:110
Symbol 110 MovieClipUses:95 97 98 17 19 99 100 44 101 102 103 104 105 106 107 108 109 33 80 25Used by:111
Symbol 111 MovieClip {mayhem34_fla.Eater01_wait_45}Uses:2 4 93 110 8Used by:132 544 545
Symbol 112 GraphicUsed by:113
Symbol 113 MovieClipUses:112Used by:116 159 197
Symbol 114 ShapeTweeningUsed by:116
Symbol 115 GraphicUsed by:116
Symbol 116 MovieClipUses:95 97 72 17 19 44 80 25 113 114 115Used by:117 544
Symbol 117 MovieClip {mayhem34_fla.Eater01_hit_129}Uses:2 4 93 116 8 39 87 37 85Used by:132
Symbol 118 GraphicUsed by:119
Symbol 119 MovieClipUses:118Used by:130
Symbol 120 GraphicUsed by:130
Symbol 121 GraphicUsed by:130
Symbol 122 GraphicUsed by:130
Symbol 123 GraphicUsed by:130
Symbol 124 GraphicUsed by:130
Symbol 125 GraphicUsed by:130
Symbol 126 GraphicUsed by:130
Symbol 127 GraphicUsed by:130
Symbol 128 GraphicUsed by:130
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClip {mayhem34_fla.nomAnim_96}Uses:119 120 121 122 123 124 125 126 127 128 129Used by:131 539
Symbol 131 MovieClip {mayhem34_fla.nom_mcProp_130}Uses:130Used by:132 161 199
Symbol 132 MovieClip {mayhem34_fla.Eater01_mc_128}Uses:111 117 131Used by:212 550
Symbol 133 GraphicUsed by:134
Symbol 134 MovieClipUses:133Used by:158 160 544
Symbol 135 GraphicUsed by:145
Symbol 136 GraphicUsed by:137
Symbol 137 MovieClipUses:136Used by:145
Symbol 138 GraphicUsed by:139
Symbol 139 MovieClipUses:138Used by:145
Symbol 140 GraphicUsed by:141
Symbol 141 MovieClipUses:140Used by:145
Symbol 142 GraphicUsed by:143
Symbol 143 MovieClipUses:142Used by:145
Symbol 144 GraphicUsed by:145
Symbol 145 MovieClipUses:135 137 139 141 143 144Used by:157 159
Symbol 146 GraphicUsed by:147
Symbol 147 MovieClipUses:146Used by:157 159
Symbol 148 GraphicUsed by:149
Symbol 149 MovieClipUses:148Used by:150
Symbol 150 MovieClipUses:149Used by:157 159
Symbol 151 ShapeTweeningUsed by:157
Symbol 152 ShapeTweeningUsed by:157
Symbol 153 ShapeTweeningUsed by:157
Symbol 154 ShapeTweeningUsed by:157
Symbol 155 ShapeTweeningUsed by:157
Symbol 156 ShapeTweeningUsed by:157
Symbol 157 MovieClip {mayhem34_fla.eater03_head_wait_115}Uses:145 147 150 17 19 44 151 152 153 154 155 156 33Used by:158
Symbol 158 MovieClip {mayhem34_fla.Eater03_wait_113}Uses:2 4 134 157 8Used by:161 544
Symbol 159 MovieClipUses:145 147 150 17 19 44 80 25 113Used by:160 544
Symbol 160 MovieClip {mayhem34_fla.Eater03_hit_212}Uses:2 4 134 159 8 39 87 37 85Used by:161
Symbol 161 MovieClip {mayhem34_fla.Eater03_mc_211}Uses:158 160 131Used by:212
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClipUses:162Used by:196 198 544
Symbol 164 GraphicUsed by:172
Symbol 165 GraphicUsed by:166
Symbol 166 MovieClipUses:165Used by:172
Symbol 167 GraphicUsed by:168
Symbol 168 MovieClipUses:167Used by:172
Symbol 169 GraphicUsed by:170
Symbol 170 MovieClipUses:169Used by:172
Symbol 171 GraphicUsed by:172
Symbol 172 MovieClipUses:164 166 168 170 171Used by:186 197
Symbol 173 GraphicUsed by:174
Symbol 174 MovieClipUses:173Used by:186 197
Symbol 175 GraphicUsed by:176
Symbol 176 MovieClipUses:175Used by:177 185
Symbol 177 MovieClipUses:176 65Used by:186 197
Symbol 178 ShapeTweeningUsed by:186
Symbol 179 ShapeTweeningUsed by:186
Symbol 180 ShapeTweeningUsed by:186
Symbol 181 ShapeTweeningUsed by:186
Symbol 182 ShapeTweeningUsed by:186
Symbol 183 ShapeTweeningUsed by:186
Symbol 184 GraphicUsed by:185
Symbol 185 MovieClipUses:184 176Used by:186 197
Symbol 186 MovieClip {mayhem34_fla.eater02_head_wait_103}Uses:172 174 177 17 19 44 178 179 180 181 182 183 33 185 23Used by:196
Symbol 187 ShapeTweeningUsed by:196
Symbol 188 ShapeTweeningUsed by:196
Symbol 189 GraphicUsed by:196
Symbol 190 ShapeTweeningUsed by:196
Symbol 191 ShapeTweeningUsed by:196
Symbol 192 GraphicUsed by:196
Symbol 193 ShapeTweeningUsed by:196
Symbol 194 ShapeTweeningUsed by:196
Symbol 195 GraphicUsed by:196
Symbol 196 MovieClip {mayhem34_fla.Eater02_wait_101}Uses:2 4 163 186 8 37 187 87 188 189 190 191 192 193 194 195Used by:199 544
Symbol 197 MovieClipUses:172 174 177 17 19 185 44 80 25 113Used by:198 544
Symbol 198 MovieClip {mayhem34_fla.Eater02_hit_214}Uses:2 4 163 197 8 39 87 37 85Used by:199
Symbol 199 MovieClip {mayhem34_fla.Eater02_mc_213}Uses:196 198 131Used by:212
Symbol 200 GraphicUsed by:212
Symbol 201 GraphicUsed by:212
Symbol 202 GraphicUsed by:212
Symbol 203 GraphicUsed by:212
Symbol 204 GraphicUsed by:212
Symbol 205 GraphicUsed by:212
Symbol 206 GraphicUsed by:212
Symbol 207 GraphicUsed by:212
Symbol 208 GraphicUsed by:212
Symbol 209 GraphicUsed by:212
Symbol 210 GraphicUsed by:212
Symbol 211 GraphicUsed by:212
Symbol 212 MovieClip {props}Uses:91 132 161 199 200 201 202 203 204 205 206 207 208 209 210 211
Symbol 213 FontUsed by:214 215 227 228 234 235 239 240 244 245 246 247 252 253 258 259 263 297 464 465 471 472 478 479 487 525 556 557 560 561 573 652 653 654 695 697 699 700 701 702 703 706 722 728 729 734 735 739 740 743 744 747 748 752 753 770 775 776 780 781
Symbol 214 EditableTextUses:213Used by:216
Symbol 215 EditableTextUses:213Used by:216
Symbol 216 MovieClip {popBubble}Uses:214 215
Symbol 217 GraphicUsed by:232
Symbol 218 FontUsed by:219 223
Symbol 219 EditableTextUses:218Used by:232
Symbol 220 BitmapUsed by:222 233 715 742 772
Symbol 221 BitmapUsed by:222 233 715 742 772
Symbol 222 GraphicUses:220 221Used by:232
Symbol 223 EditableTextUses:218Used by:232
Symbol 224 FontUsed by:225
Symbol 225 EditableTextUses:224Used by:232
Symbol 226 GraphicUsed by:229 236 254
Symbol 227 TextUses:213Used by:229
Symbol 228 TextUses:213Used by:229
Symbol 229 MovieClipUses:226 227 228Used by:231
Symbol 230 GraphicUsed by:231
Symbol 231 MovieClipUses:229 230Used by:232
Symbol 232 MovieClip {startPanel}Uses:217 219 222 223 225 231
Symbol 233 GraphicUses:220 221Used by:248
Symbol 234 TextUses:213Used by:236
Symbol 235 TextUses:213Used by:236
Symbol 236 MovieClipUses:226 234 235Used by:243
Symbol 237 GraphicUsed by:243
Symbol 238 GraphicUsed by:241
Symbol 239 TextUses:213Used by:241
Symbol 240 TextUses:213Used by:241
Symbol 241 MovieClipUses:238 239 240Used by:243
Symbol 242 GraphicUsed by:243
Symbol 243 MovieClip {mayhem34_fla.nextLevelButton_193}Uses:236 237 241 242Used by:248
Symbol 244 EditableTextUses:213Used by:248
Symbol 245 EditableTextUses:213Used by:248
Symbol 246 TextUses:213Used by:248
Symbol 247 EditableTextUses:213Used by:248
Symbol 248 MovieClip {completePanel}Uses:233 243 244 245 246 247Used by:Timeline
Symbol 249 BitmapUsed by:251
Symbol 250 BitmapUsed by:251
Symbol 251 GraphicUses:249 250Used by:264
Symbol 252 TextUses:213Used by:254
Symbol 253 TextUses:213Used by:254
Symbol 254 MovieClipUses:226 252 253Used by:256
Symbol 255 GraphicUsed by:256
Symbol 256 MovieClipUses:254 255Used by:264
Symbol 257 GraphicUsed by:260
Symbol 258 TextUses:213Used by:260
Symbol 259 TextUses:213Used by:260
Symbol 260 MovieClipUses:257 258 259Used by:262
Symbol 261 GraphicUsed by:262
Symbol 262 MovieClipUses:260 261Used by:264
Symbol 263 EditableTextUses:213Used by:264
Symbol 264 MovieClip {failPanel}Uses:251 256 262 263Used by:Timeline
Symbol 265 BitmapUsed by:266
Symbol 266 GraphicUses:265Used by:267
Symbol 267 MovieClip {level24}Uses:266Used by:394
Symbol 268 BitmapUsed by:269
Symbol 269 GraphicUses:268Used by:270
Symbol 270 MovieClip {level16}Uses:269Used by:394
Symbol 271 BitmapUsed by:272
Symbol 272 GraphicUses:271Used by:273
Symbol 273 MovieClip {level13}Uses:272Used by:394
Symbol 274 BitmapUsed by:275
Symbol 275 GraphicUses:274Used by:276
Symbol 276 MovieClip {level12}Uses:275Used by:394
Symbol 277 BitmapUsed by:278
Symbol 278 GraphicUses:277Used by:279
Symbol 279 MovieClip {level05}Uses:278Used by:394
Symbol 280 GraphicUsed by:281
Symbol 281 MovieClipUses:280Used by:285
Symbol 282 BitmapUsed by:283
Symbol 283 GraphicUses:282Used by:284
Symbol 284 MovieClip {com.google.analytics.components.Icon}Uses:283Used by:285
Symbol 285 MovieClip {com.google.analytics.components.FlashTracker}Uses:281 284Used by:Timeline
Symbol 286 GraphicUsed by:Timeline
Symbol 287 GraphicUsed by:460  Timeline
Symbol 288 GraphicUsed by:Timeline
Symbol 289 GraphicUsed by:Timeline
Symbol 290 GraphicUsed by:Timeline
Symbol 291 GraphicUsed by:Timeline
Symbol 292 GraphicUsed by:Timeline
Symbol 293 GraphicUsed by:Timeline
Symbol 294 GraphicUsed by:Timeline
Symbol 295 GraphicUsed by:Timeline
Symbol 296 GraphicUsed by:Timeline
Symbol 297 EditableTextUses:213Used by:Timeline
Symbol 298 BitmapUsed by:299
Symbol 299 GraphicUses:298Used by:300
Symbol 300 MovieClipUses:299Used by:Timeline
Symbol 301 GraphicUsed by:394
Symbol 302 Sound {catchSound}Used by:394
Symbol 303 Sound {chomp}Used by:394
Symbol 304 Sound {gulp}Used by:394
Symbol 305 Sound {gulp2}Used by:394
Symbol 306 Sound {gulp3}Used by:394
Symbol 307 Sound {hurray}Used by:394
Symbol 308 Sound {ohno}Used by:394
Symbol 309 Sound {ohno2}Used by:394
Symbol 310 Sound {rocks1}Used by:394
Symbol 311 Sound {rocks2}Used by:394
Symbol 312 Sound {rocks3}Used by:394
Symbol 313 Sound {rocks4}Used by:394
Symbol 314 Sound {throw1}Used by:394
Symbol 315 Sound {throw2}Used by:394
Symbol 316 Sound {tic1}Used by:394
Symbol 317 Sound {tic2}Used by:394
Symbol 318 Sound {tic3}Used by:394
Symbol 319 Sound {tic4}Used by:394
Symbol 320 Sound {trampoline}Used by:394
Symbol 321 Sound {wood1}Used by:394
Symbol 322 Sound {wood2}Used by:394
Symbol 323 Sound {wood3}Used by:394
Symbol 324 Sound {nomsfx}Used by:394
Symbol 325 Sound {throw3}Used by:394
Symbol 326 Sound {throw4}Used by:394
Symbol 327 Sound {throw5}Used by:394
Symbol 328 Sound {menumusic}Used by:394
Symbol 329 Sound {world1music}Used by:394
Symbol 330 Sound {world2music}Used by:394
Symbol 331 Sound {world3music}Used by:394
Symbol 332 Sound {world4music}Used by:394
Symbol 333 Sound {world5music}Used by:394
Symbol 334 BitmapUsed by:335
Symbol 335 GraphicUses:334Used by:336
Symbol 336 MovieClip {level01}Uses:335Used by:394
Symbol 337 BitmapUsed by:338
Symbol 338 GraphicUses:337Used by:339
Symbol 339 MovieClip {level02}Uses:338Used by:394
Symbol 340 BitmapUsed by:341
Symbol 341 GraphicUses:340Used by:342
Symbol 342 MovieClip {level03}Uses:341Used by:394
Symbol 343 BitmapUsed by:344
Symbol 344 GraphicUses:343Used by:345
Symbol 345 MovieClip {level04}Uses:344Used by:394
Symbol 346 BitmapUsed by:347
Symbol 347 GraphicUses:346Used by:348
Symbol 348 MovieClip {level06}Uses:347Used by:394
Symbol 349 BitmapUsed by:350
Symbol 350 GraphicUses:349Used by:351
Symbol 351 MovieClip {level07}Uses:350Used by:394
Symbol 352 BitmapUsed by:353
Symbol 353 GraphicUses:352Used by:354
Symbol 354 MovieClip {level08}Uses:353Used by:394
Symbol 355 BitmapUsed by:356
Symbol 356 GraphicUses:355Used by:357
Symbol 357 MovieClip {level09}Uses:356Used by:394
Symbol 358 BitmapUsed by:359
Symbol 359 GraphicUses:358Used by:360
Symbol 360 MovieClip {level10}Uses:359Used by:394
Symbol 361 BitmapUsed by:362
Symbol 362 GraphicUses:361Used by:363
Symbol 363 MovieClip {level11}Uses:362Used by:394
Symbol 364 BitmapUsed by:365
Symbol 365 GraphicUses:364Used by:366
Symbol 366 MovieClip {level14}Uses:365Used by:394
Symbol 367 BitmapUsed by:368
Symbol 368 GraphicUses:367Used by:369
Symbol 369 MovieClip {level15}Uses:368Used by:394
Symbol 370 BitmapUsed by:371
Symbol 371 GraphicUses:370Used by:372
Symbol 372 MovieClip {level17}Uses:371Used by:394
Symbol 373 BitmapUsed by:374
Symbol 374 GraphicUses:373Used by:375
Symbol 375 MovieClip {level18}Uses:374Used by:394
Symbol 376 BitmapUsed by:377
Symbol 377 GraphicUses:376Used by:378
Symbol 378 MovieClip {level19}Uses:377Used by:394
Symbol 379 BitmapUsed by:380
Symbol 380 GraphicUses:379Used by:381
Symbol 381 MovieClip {level20}Uses:380Used by:394
Symbol 382 BitmapUsed by:383
Symbol 383 GraphicUses:382Used by:384
Symbol 384 MovieClip {level21}Uses:383Used by:394
Symbol 385 BitmapUsed by:386
Symbol 386 GraphicUses:385Used by:387
Symbol 387 MovieClip {level22}Uses:386Used by:394
Symbol 388 BitmapUsed by:389
Symbol 389 GraphicUses:388Used by:390
Symbol 390 MovieClip {level23}Uses:389Used by:394
Symbol 391 BitmapUsed by:392
Symbol 392 GraphicUses:391Used by:393
Symbol 393 MovieClip {level25}Uses:392Used by:394
Symbol 394 MovieClip {mayhem34_fla.soundDump_2}Uses:301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 336 339 342 345 279 348 351 354 357 360 363 276 273 366 369 270 372 375 378 381 384 387 390 267 393Used by:Timeline
Symbol 395 FontUsed by:396 398 663
Symbol 396 EditableTextUses:395Used by:397
Symbol 397 MovieClip {mayhem34_fla.soundBox_28}Uses:396Used by:Timeline
Symbol 398 EditableTextUses:395Used by:399
Symbol 399 MovieClip {mayhem34_fla.musicBox2_29}Uses:398Used by:Timeline
Symbol 400 ShapeTweeningUsed by:545
Symbol 401 GraphicUsed by:402
Symbol 402 MovieClipUses:401Used by:545
Symbol 403 GraphicUsed by:404
Symbol 404 MovieClipUses:403Used by:545
Symbol 405 ShapeTweeningUsed by:414
Symbol 406 ShapeTweeningUsed by:414
Symbol 407 ShapeTweeningUsed by:414
Symbol 408 ShapeTweeningUsed by:414
Symbol 409 ShapeTweeningUsed by:414
Symbol 410 ShapeTweeningUsed by:414
Symbol 411 ShapeTweeningUsed by:414
Symbol 412 ShapeTweeningUsed by:414
Symbol 413 GraphicUsed by:414
Symbol 414 MovieClipUses:405 406 407 408 409 410 411 412 413Used by:425 426
Symbol 415 ShapeTweeningUsed by:424
Symbol 416 ShapeTweeningUsed by:424
Symbol 417 ShapeTweeningUsed by:424
Symbol 418 ShapeTweeningUsed by:424
Symbol 419 ShapeTweeningUsed by:424
Symbol 420 ShapeTweeningUsed by:424
Symbol 421 ShapeTweeningUsed by:424
Symbol 422 ShapeTweeningUsed by:424
Symbol 423 GraphicUsed by:424
Symbol 424 MovieClipUses:415 416 417 418 419 420 421 422 423Used by:425
Symbol 425 MovieClipUses:414 424Used by:456
Symbol 426 MovieClipUses:414Used by:456
Symbol 427 GraphicUsed by:455
Symbol 428 GraphicUsed by:429
Symbol 429 MovieClipUses:428 17 19Used by:455
Symbol 430 GraphicUsed by:455
Symbol 431 GraphicUsed by:455
Symbol 432 GraphicUsed by:455
Symbol 433 GraphicUsed by:455
Symbol 434 GraphicUsed by:455
Symbol 435 GraphicUsed by:455
Symbol 436 GraphicUsed by:455
Symbol 437 GraphicUsed by:455
Symbol 438 GraphicUsed by:455
Symbol 439 GraphicUsed by:455
Symbol 440 GraphicUsed by:455
Symbol 441 GraphicUsed by:455
Symbol 442 GraphicUsed by:455
Symbol 443 GraphicUsed by:455
Symbol 444 GraphicUsed by:455
Symbol 445 GraphicUsed by:455
Symbol 446 GraphicUsed by:455
Symbol 447 GraphicUsed by:455
Symbol 448 GraphicUsed by:455
Symbol 449 GraphicUsed by:455
Symbol 450 GraphicUsed by:455
Symbol 451 GraphicUsed by:455
Symbol 452 GraphicUsed by:455
Symbol 453 GraphicUsed by:455 688
Symbol 454 GraphicUsed by:455 688
Symbol 455 MovieClipUses:427 8 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454Used by:456 689
Symbol 456 MovieClipUses:425 426 455Used by:545
Symbol 457 GraphicUsed by:545
Symbol 458 GraphicUsed by:460
Symbol 459 GraphicUsed by:460
Symbol 460 MovieClipUses:458 287 459Used by:545
Symbol 461 ShapeTweeningUsed by:469
Symbol 462 GraphicUsed by:463
Symbol 463 MovieClipUses:462Used by:469 476 483
Symbol 464 TextUses:213Used by:469
Symbol 465 TextUses:213Used by:469
Symbol 466 ShapeTweeningUsed by:469
Symbol 467 ShapeTweeningUsed by:469
Symbol 468 GraphicUsed by:469
Symbol 469 MovieClip {mayhem34_fla.btn_59}Uses:461 463 464 465 466 467 468Used by:545
Symbol 470 ShapeTweeningUsed by:476
Symbol 471 TextUses:213Used by:476
Symbol 472 TextUses:213Used by:476
Symbol 473 ShapeTweeningUsed by:476
Symbol 474 ShapeTweeningUsed by:476
Symbol 475 GraphicUsed by:476
Symbol 476 MovieClip {mayhem34_fla.btn_61}Uses:470 463 471 472 473 474 475Used by:545
Symbol 477 ShapeTweeningUsed by:483
Symbol 478 TextUses:213Used by:483
Symbol 479 TextUses:213Used by:483
Symbol 480 ShapeTweeningUsed by:483
Symbol 481 ShapeTweeningUsed by:483
Symbol 482 GraphicUsed by:483
Symbol 483 MovieClip {mayhem34_fla.btn_62}Uses:477 463 478 479 480 481 482Used by:545
Symbol 484 ShapeTweeningUsed by:491
Symbol 485 GraphicUsed by:486
Symbol 486 MovieClipUses:485Used by:491 529
Symbol 487 TextUses:213Used by:491
Symbol 488 ShapeTweeningUsed by:491
Symbol 489 ShapeTweeningUsed by:491
Symbol 490 GraphicUsed by:491
Symbol 491 MovieClip {mayhem34_fla.btn_63}Uses:484 486 487 488 489 490Used by:545
Symbol 492 BitmapUsed by:493
Symbol 493 GraphicUses:492Used by:494
Symbol 494 MovieClipUses:493Used by:495
Symbol 495 MovieClipUses:494Used by:523
Symbol 496 ShapeTweeningUsed by:523 544 545
Symbol 497 BitmapUsed by:498
Symbol 498 GraphicUses:497Used by:499
Symbol 499 MovieClipUses:498Used by:500
Symbol 500 MovieClipUses:499Used by:523
Symbol 501 ShapeTweeningUsed by:523 544 545
Symbol 502 ShapeTweeningUsed by:523 544 545
Symbol 503 BitmapUsed by:504
Symbol 504 GraphicUses:503Used by:505
Symbol 505 MovieClipUses:504Used by:506
Symbol 506 MovieClipUses:505Used by:523
Symbol 507 BitmapUsed by:508
Symbol 508 GraphicUses:507Used by:509
Symbol 509 MovieClipUses:508Used by:510
Symbol 510 MovieClipUses:509Used by:523
Symbol 511 ShapeTweeningUsed by:523 544 545
Symbol 512 ShapeTweeningUsed by:523 544 545
Symbol 513 BitmapUsed by:514
Symbol 514 GraphicUses:513Used by:515
Symbol 515 MovieClipUses:514Used by:516
Symbol 516 MovieClipUses:515Used by:523
Symbol 517 GraphicUsed by:523 544 545
Symbol 518 ShapeTweeningUsed by:523 544 545
Symbol 519 GraphicUsed by:523 544 545
Symbol 520 GraphicUsed by:523 544 545
Symbol 521 GraphicUsed by:523 544 545
Symbol 522 GraphicUsed by:523 544 545
Symbol 523 MovieClip {mayhem34_fla.mc_65}Uses:495 496 500 501 502 506 510 511 512 516 517 518 519 520 521 522Used by:545
Symbol 524 ShapeTweeningUsed by:529
Symbol 525 TextUses:213Used by:529
Symbol 526 ShapeTweeningUsed by:529
Symbol 527 ShapeTweeningUsed by:529
Symbol 528 GraphicUsed by:529
Symbol 529 MovieClip {mayhem34_fla.btn_76}Uses:524 486 525 526 527 528Used by:545
Symbol 530 BitmapUsed by:531
Symbol 531 GraphicUses:530Used by:532
Symbol 532 MovieClipUses:531Used by:536 545
Symbol 533 BitmapUsed by:534
Symbol 534 GraphicUses:533Used by:535
Symbol 535 MovieClipUses:534Used by:536
Symbol 536 MovieClip {mayhem34_fla.mc_78}Uses:532 535Used by:545
Symbol 537 GraphicUsed by:544
Symbol 538 GraphicUsed by:544
Symbol 539 MovieClip {mayhem34_fla.nom_mc_95}Uses:130Used by:544
Symbol 540 GraphicUsed by:544
Symbol 541 GraphicUsed by:544
Symbol 542 GraphicUsed by:544
Symbol 543 GraphicUsed by:544
Symbol 544 MovieClip {mayhem34_fla.mc_80}Uses:55 111 39 537 2 4 6 8 73 538 37 40 66 67 93 116 539 87 85 496 501 196 502 511 512 517 518 519 520 521 522 540 541 163 197 158 542 543 134 159Used by:545
Symbol 545 MovieClip {mayhem34_fla.mc_30}Uses:400 402 55 404 111 456 457 460 469 476 483 491 523 529 532 496 501 502 511 512 517 518 519 520 521 522 536 544Used by:Timeline
Symbol 546 GraphicUsed by:548
Symbol 547 GraphicUsed by:548
Symbol 548 MovieClip {mayhem34_fla.muteButton_125}Uses:546 547Used by:Timeline
Symbol 549 GraphicUsed by:558
Symbol 550 MovieClipUses:132Used by:558
Symbol 551 GraphicUsed by:558 669
Symbol 552 GraphicUsed by:558
Symbol 553 GraphicUsed by:558 669
Symbol 554 GraphicUsed by:558 669
Symbol 555 GraphicUsed by:558 669
Symbol 556 TextUses:213Used by:558
Symbol 557 TextUses:213Used by:558
Symbol 558 MovieClipUses:549 550 551 552 553 554 555 556 557Used by:Timeline
Symbol 559 GraphicUsed by:562
Symbol 560 TextUses:213Used by:562
Symbol 561 TextUses:213Used by:562
Symbol 562 MovieClipUses:559 560 561Used by:564
Symbol 563 GraphicUsed by:564
Symbol 564 MovieClipUses:562 563Used by:Timeline
Symbol 565 GraphicUsed by:566
Symbol 566 MovieClipUses:565Used by:Timeline
Symbol 567 BitmapUsed by:568
Symbol 568 GraphicUses:567Used by:569
Symbol 569 MovieClipUses:568Used by:571
Symbol 570 GraphicUsed by:571 648
Symbol 571 MovieClipUses:569 570Used by:Timeline
Symbol 572 GraphicUsed by:575
Symbol 573 TextUses:213Used by:575
Symbol 574 GraphicUsed by:575
Symbol 575 MovieClipUses:572 573 574Used by:577
Symbol 576 GraphicUsed by:577
Symbol 577 MovieClipUses:575 576Used by:Timeline
Symbol 578 GraphicUsed by:579
Symbol 579 MovieClipUses:578Used by:581
Symbol 580 GraphicUsed by:581
Symbol 581 MovieClip {mayhem34_fla.stepArrow_138}Uses:579 580Used by:Timeline
Symbol 582 BitmapUsed by:583
Symbol 583 GraphicUses:582Used by:584
Symbol 584 MovieClipUses:583Used by:Timeline
Symbol 585 GraphicUsed by:591
Symbol 586 GraphicUsed by:591
Symbol 587 GraphicUsed by:591
Symbol 588 GraphicUsed by:591
Symbol 589 GraphicUsed by:591
Symbol 590 GraphicUsed by:591
Symbol 591 MovieClip {mayhem34_fla.frames_143}Uses:585 586 587 588 589 590Used by:649
Symbol 592 BitmapUsed by:593
Symbol 593 GraphicUses:592Used by:642
Symbol 594 BitmapUsed by:595
Symbol 595 GraphicUses:594Used by:642
Symbol 596 BitmapUsed by:597
Symbol 597 GraphicUses:596Used by:642
Symbol 598 BitmapUsed by:599
Symbol 599 GraphicUses:598Used by:642
Symbol 600 BitmapUsed by:601
Symbol 601 GraphicUses:600Used by:642
Symbol 602 BitmapUsed by:603
Symbol 603 GraphicUses:602Used by:642
Symbol 604 BitmapUsed by:605
Symbol 605 GraphicUses:604Used by:642
Symbol 606 BitmapUsed by:607
Symbol 607 GraphicUses:606Used by:642
Symbol 608 BitmapUsed by:609
Symbol 609 GraphicUses:608Used by:642
Symbol 610 BitmapUsed by:611
Symbol 611 GraphicUses:610Used by:642
Symbol 612 BitmapUsed by:613
Symbol 613 GraphicUses:612Used by:642
Symbol 614 BitmapUsed by:615
Symbol 615 GraphicUses:614Used by:642
Symbol 616 BitmapUsed by:617
Symbol 617 GraphicUses:616Used by:642
Symbol 618 BitmapUsed by:619
Symbol 619 GraphicUses:618Used by:642
Symbol 620 BitmapUsed by:621
Symbol 621 GraphicUses:620Used by:642
Symbol 622 BitmapUsed by:623
Symbol 623 GraphicUses:622Used by:642
Symbol 624 BitmapUsed by:625
Symbol 625 GraphicUses:624Used by:642
Symbol 626 BitmapUsed by:627
Symbol 627 GraphicUses:626Used by:642
Symbol 628 BitmapUsed by:629
Symbol 629 GraphicUses:628Used by:642
Symbol 630 BitmapUsed by:631
Symbol 631 GraphicUses:630Used by:642
Symbol 632 BitmapUsed by:633
Symbol 633 GraphicUses:632Used by:642
Symbol 634 BitmapUsed by:635
Symbol 635 GraphicUses:634Used by:642
Symbol 636 BitmapUsed by:637
Symbol 637 GraphicUses:636Used by:642
Symbol 638 BitmapUsed by:639
Symbol 639 GraphicUses:638Used by:642
Symbol 640 BitmapUsed by:641
Symbol 641 GraphicUses:640Used by:642
Symbol 642 MovieClip {mayhem34_fla.THUMBNAILS_144}Uses:593 595 597 599 601 603 605 607 609 611 613 615 617 619 621 623 625 627 629 631 633 635 637 639 641Used by:649
Symbol 643 GraphicUsed by:644 709
Symbol 644 MovieClipUses:643Used by:649
Symbol 645 GraphicUsed by:647
Symbol 646 GraphicUsed by:647
Symbol 647 MovieClipUses:645 646Used by:649
Symbol 648 MovieClipUses:570Used by:649
Symbol 649 MovieClipUses:591 642 644 647 648Used by:650
Symbol 650 MovieClipUses:649Used by:Timeline
Symbol 651 GraphicUsed by:660
Symbol 652 EditableTextUses:213Used by:655
Symbol 653 EditableTextUses:213Used by:655
Symbol 654 EditableTextUses:213Used by:655
Symbol 655 MovieClipUses:652 653 654Used by:660
Symbol 656 GraphicUsed by:657
Symbol 657 MovieClipUses:656Used by:659
Symbol 658 GraphicUsed by:659
Symbol 659 MovieClip {mayhem34_fla.loadingIcon_150}Uses:657 658Used by:660 771
Symbol 660 MovieClip {mayhem34_fla.mc_148}Uses:651 655 659Used by:Timeline
Symbol 661 GraphicUsed by:662
Symbol 662 MovieClipUses:661Used by:Timeline
Symbol 663 EditableTextUses:395Used by:693
Symbol 664 GraphicUsed by:665
Symbol 665 MovieClipUses:664Used by:693
Symbol 666 GraphicUsed by:667
Symbol 667 MovieClipUses:666Used by:669
Symbol 668 GraphicUsed by:669
Symbol 669 MovieClip {mayhem34_fla.powerArrow_155}Uses:551 667 668 553 554 555Used by:693
Symbol 670 GraphicUsed by:688
Symbol 671 GraphicUsed by:672
Symbol 672 MovieClipUses:671Used by:688
Symbol 673 GraphicUsed by:674
Symbol 674 MovieClipUses:673 17 19Used by:688
Symbol 675 GraphicUsed by:688
Symbol 676 GraphicUsed by:688
Symbol 677 GraphicUsed by:688
Symbol 678 GraphicUsed by:688
Symbol 679 GraphicUsed by:688
Symbol 680 GraphicUsed by:688
Symbol 681 GraphicUsed by:688
Symbol 682 GraphicUsed by:688
Symbol 683 GraphicUsed by:688
Symbol 684 GraphicUsed by:688
Symbol 685 GraphicUsed by:688
Symbol 686 GraphicUsed by:688
Symbol 687 GraphicUsed by:688
Symbol 688 MovieClipUses:670 8 672 674 675 676 677 678 679 680 681 682 683 684 685 686 687 453 454Used by:689
Symbol 689 MovieClip {mayhem34_fla.bird_mc_157}Uses:455 688Used by:693
Symbol 690 GraphicUsed by:692
Symbol 691 GraphicUsed by:692
Symbol 692 MovieClip {mayhem34_fla.myGrenade_161}Uses:690 691Used by:693
Symbol 693 MovieClip {mayhem34_fla.engine_153}Uses:663 665 669 689 692Used by:Timeline
Symbol 694 GraphicUsed by:710
Symbol 695 TextUses:213Used by:710
Symbol 696 GraphicUsed by:710
Symbol 697 EditableTextUses:213Used by:710
Symbol 698 GraphicUsed by:710
Symbol 699 EditableTextUses:213Used by:710
Symbol 700 TextUses:213Used by:710
Symbol 701 EditableTextUses:213Used by:710
Symbol 702 EditableTextUses:213Used by:710
Symbol 703 EditableTextUses:213Used by:710
Symbol 704 GraphicUsed by:710
Symbol 705 GraphicUsed by:709
Symbol 706 TextUses:213Used by:709
Symbol 707 GraphicUsed by:709
Symbol 708 GraphicUsed by:709
Symbol 709 MovieClip {mayhem34_fla.titacCounter_163}Uses:643 705 706 707 708Used by:710
Symbol 710 MovieClip {mayhem34_fla.mc_162}Uses:694 695 696 697 698 699 700 701 702 703 704 709Used by:Timeline
Symbol 711 GraphicUsed by:712
Symbol 712 MovieClipUses:711Used by:Timeline
Symbol 713 GraphicUsed by:714
Symbol 714 MovieClipUses:713Used by:Timeline
Symbol 715 GraphicUses:220 221Used by:741
Symbol 716 GraphicUsed by:718
Symbol 717 GraphicUsed by:718
Symbol 718 MovieClipUses:716 717Used by:720
Symbol 719 GraphicUsed by:720
Symbol 720 MovieClipUses:718 719Used by:741 771 782
Symbol 721 GraphicUsed by:724
Symbol 722 TextUses:213Used by:724
Symbol 723 GraphicUsed by:724
Symbol 724 MovieClipUses:721 722 723Used by:726
Symbol 725 GraphicUsed by:726
Symbol 726 MovieClipUses:724 725Used by:741 771 782
Symbol 727 GraphicUsed by:730
Symbol 728 TextUses:213Used by:730
Symbol 729 TextUses:213Used by:730
Symbol 730 MovieClipUses:727 728 729Used by:732
Symbol 731 GraphicUsed by:732
Symbol 732 MovieClipUses:730 731Used by:741 771 782
Symbol 733 GraphicUsed by:736 745 749
Symbol 734 TextUses:213Used by:736
Symbol 735 TextUses:213Used by:736
Symbol 736 MovieClipUses:733 734 735Used by:738
Symbol 737 GraphicUsed by:738
Symbol 738 MovieClipUses:736 737Used by:741
Symbol 739 TextUses:213Used by:741 771 782
Symbol 740 EditableTextUses:213Used by:741
Symbol 741 MovieClipUses:715 720 726 732 738 739 740Used by:Timeline
Symbol 742 GraphicUses:220 221Used by:771
Symbol 743 TextUses:213Used by:745
Symbol 744 TextUses:213Used by:745
Symbol 745 MovieClipUses:733 743 744Used by:750
Symbol 746 GraphicUsed by:750
Symbol 747 TextUses:213Used by:749
Symbol 748 TextUses:213Used by:749
Symbol 749 MovieClipUses:733 747 748Used by:750
Symbol 750 MovieClip {mayhem34_fla.sendButton_176}Uses:745 746 749Used by:771
Symbol 751 GraphicUsed by:771
Symbol 752 TextUses:213Used by:771
Symbol 753 TextUses:213Used by:771
Symbol 754 FontUsed by:755 763
Symbol 755 TextUses:754Used by:771
Symbol 756 FontUsed by:757 758
Symbol 757 EditableTextUses:756Used by:771
Symbol 758 EditableTextUses:756Used by:771
Symbol 759 GraphicUsed by:771
Symbol 760 GraphicUsed by:762
Symbol 761 GraphicUsed by:762
Symbol 762 MovieClip {mayhem34_fla.privacyCheckBox_179}Uses:760 761Used by:771
Symbol 763 TextUses:754Used by:765
Symbol 764 GraphicUsed by:765
Symbol 765 ButtonUses:763 764Used by:766
Symbol 766 MovieClipUses:765Used by:771
Symbol 767 GraphicUsed by:768 769
Symbol 768 MovieClipUses:767Used by:771
Symbol 769 MovieClipUses:767Used by:771
Symbol 770 EditableTextUses:213Used by:771
Symbol 771 MovieClipUses:742 720 726 732 750 751 752 753 755 757 758 759 762 659 766 768 769 739 770Used by:Timeline
Symbol 772 GraphicUses:220 221Used by:782
Symbol 773 GraphicUsed by:782
Symbol 774 GraphicUsed by:777
Symbol 775 TextUses:213Used by:777
Symbol 776 TextUses:213Used by:777
Symbol 777 MovieClipUses:774 775 776Used by:779
Symbol 778 GraphicUsed by:779
Symbol 779 MovieClipUses:777 778Used by:782
Symbol 780 EditableTextUses:213Used by:782
Symbol 781 TextUses:213Used by:782
Symbol 782 MovieClipUses:772 720 773 779 726 732 739 780 781Used by:Timeline

Instance Names

"ga"Frame 1Symbol 285 MovieClip {com.google.analytics.components.FlashTracker}
"percentText"Frame 2Symbol 297 EditableText
"logo"Frame 2Symbol 300 MovieClip
"sb"Frame 9Symbol 397 MovieClip {mayhem34_fla.soundBox_28}
"mb"Frame 9Symbol 399 MovieClip {mayhem34_fla.musicBox2_29}
"mButton"Frame 10Symbol 548 MovieClip {mayhem34_fla.muteButton_125}
"howtoPanel"Frame 20Symbol 558 MovieClip
"playbutton2"Frame 20Symbol 564 MovieClip
"shad"Frame 20Symbol 566 MovieClip
"tictacLogo"Frame 20Symbol 571 MovieClip
"homeButton"Frame 30Symbol 577 MovieClip
"stepLeft"Frame 30Symbol 581 MovieClip {mayhem34_fla.stepArrow_138}
"stepRight"Frame 30Symbol 581 MovieClip {mayhem34_fla.stepArrow_138}
"logo"Frame 30Symbol 584 MovieClip
"levelSelectPanel"Frame 30Symbol 650 MovieClip
"tictacLogo"Frame 30Symbol 571 MovieClip
"highscoresPanel"Frame 40Symbol 660 MovieClip {mayhem34_fla.mc_148}
"stepLeft"Frame 40Symbol 581 MovieClip {mayhem34_fla.stepArrow_138}
"stepRight"Frame 40Symbol 581 MovieClip {mayhem34_fla.stepArrow_138}
"homeButton"Frame 40Symbol 577 MovieClip
"shad"Frame 40Symbol 662 MovieClip
"tictacLogo"Frame 40Symbol 571 MovieClip
"engine"Frame 50Symbol 693 MovieClip {mayhem34_fla.engine_153}
"gui"Frame 50Symbol 710 MovieClip {mayhem34_fla.mc_162}
"homeButton"Frame 50Symbol 712 MovieClip
"restartButton"Frame 50Symbol 714 MovieClip
"tictacLogo"Frame 50Symbol 571 MovieClip
"gameoverPanel"Frame 60Symbol 741 MovieClip
"tictacLogo"Frame 60Symbol 571 MovieClip
"submitPanel"Frame 70Symbol 771 MovieClip
"tictacLogo"Frame 70Symbol 571 MovieClip
"submittedPanel"Frame 80Symbol 782 MovieClip
"tictacLogo"Frame 80Symbol 571 MovieClip
"fx"Symbol 132 MovieClip {mayhem34_fla.Eater01_mc_128} Frame 10Symbol 131 MovieClip {mayhem34_fla.nom_mcProp_130}
"fx"Symbol 161 MovieClip {mayhem34_fla.Eater03_mc_211} Frame 10Symbol 131 MovieClip {mayhem34_fla.nom_mcProp_130}
"fx"Symbol 199 MovieClip {mayhem34_fla.Eater02_mc_213} Frame 10Symbol 131 MovieClip {mayhem34_fla.nom_mcProp_130}
"mc"Symbol 212 MovieClip {props} Frame 1Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201}
"mc"Symbol 212 MovieClip {props} Frame 3Symbol 132 MovieClip {mayhem34_fla.Eater01_mc_128}
"mc"Symbol 212 MovieClip {props} Frame 4Symbol 161 MovieClip {mayhem34_fla.Eater03_mc_211}
"mc"Symbol 212 MovieClip {props} Frame 5Symbol 199 MovieClip {mayhem34_fla.Eater02_mc_213}
"txt"Symbol 216 MovieClip {popBubble} Frame 1Symbol 214 EditableText
"txt2"Symbol 216 MovieClip {popBubble} Frame 1Symbol 215 EditableText
"body"Symbol 231 MovieClip Frame 1Symbol 229 MovieClip
"levelNum2"Symbol 232 MovieClip {startPanel} Frame 1Symbol 219 EditableText
"levelNum1"Symbol 232 MovieClip {startPanel} Frame 1Symbol 223 EditableText
"introText"Symbol 232 MovieClip {startPanel} Frame 1Symbol 225 EditableText
"startButton"Symbol 232 MovieClip {startPanel} Frame 1Symbol 231 MovieClip
"body"Symbol 243 MovieClip {mayhem34_fla.nextLevelButton_193} Frame 1Symbol 236 MovieClip
"body"Symbol 243 MovieClip {mayhem34_fla.nextLevelButton_193} Frame 2Symbol 241 MovieClip
"nextButton"Symbol 248 MovieClip {completePanel} Frame 1Symbol 243 MovieClip {mayhem34_fla.nextLevelButton_193}
"bonusNameText"Symbol 248 MovieClip {completePanel} Frame 1Symbol 244 EditableText
"bonusText"Symbol 248 MovieClip {completePanel} Frame 1Symbol 245 EditableText
"scoreText"Symbol 248 MovieClip {completePanel} Frame 1Symbol 247 EditableText
"body"Symbol 256 MovieClip Frame 1Symbol 254 MovieClip
"retryButton"Symbol 264 MovieClip {failPanel} Frame 1Symbol 256 MovieClip
"submitButton"Symbol 264 MovieClip {failPanel} Frame 1Symbol 262 MovieClip
"failText"Symbol 264 MovieClip {failPanel} Frame 1Symbol 263 EditableText
"boundingBox_mc"Symbol 285 MovieClip {com.google.analytics.components.FlashTracker} Frame 1Symbol 281 MovieClip
"flying1"Symbol 456 MovieClip Frame 129Symbol 455 MovieClip
"playbutton"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 16Symbol 469 MovieClip {mayhem34_fla.btn_59}
"howtoButton"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 16Symbol 476 MovieClip {mayhem34_fla.btn_61}
"scoreButton"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 21Symbol 483 MovieClip {mayhem34_fla.btn_62}
"shareButton"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 26Symbol 491 MovieClip {mayhem34_fla.btn_63}
"titleMC"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 28Symbol 523 MovieClip {mayhem34_fla.mc_65}
"moregameButton"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 29Symbol 529 MovieClip {mayhem34_fla.btn_76}
"packLoop"Symbol 545 MovieClip {mayhem34_fla.mc_30} Frame 83Symbol 536 MovieClip {mayhem34_fla.mc_78}
"mc"Symbol 550 MovieClip Frame 1Symbol 132 MovieClip {mayhem34_fla.Eater01_mc_128}
"body"Symbol 564 MovieClip Frame 1Symbol 562 MovieClip
"body"Symbol 571 MovieClip Frame 1Symbol 569 MovieClip
"body"Symbol 577 MovieClip Frame 1Symbol 575 MovieClip
"bOn"Symbol 581 MovieClip {mayhem34_fla.stepArrow_138} Frame 1Symbol 579 MovieClip
"bOff"Symbol 581 MovieClip {mayhem34_fla.stepArrow_138} Frame 1Symbol 579 MovieClip
"frames"Symbol 649 MovieClip Frame 1Symbol 591 MovieClip {mayhem34_fla.frames_143}
"thumb"Symbol 649 MovieClip Frame 1Symbol 642 MovieClip {mayhem34_fla.THUMBNAILS_144}
"dismask"Symbol 649 MovieClip Frame 1Symbol 644 MovieClip
"padlock"Symbol 649 MovieClip Frame 1Symbol 647 MovieClip
"hitTarget"Symbol 649 MovieClip Frame 1Symbol 648 MovieClip
"t1"Symbol 650 MovieClip Frame 1Symbol 649 MovieClip
"t2"Symbol 650 MovieClip Frame 1Symbol 649 MovieClip
"t3"Symbol 650 MovieClip Frame 1Symbol 649 MovieClip
"t4"Symbol 650 MovieClip Frame 1Symbol 649 MovieClip
"t5"Symbol 650 MovieClip Frame 1Symbol 649 MovieClip
"num"Symbol 655 MovieClip Frame 1Symbol 652 EditableText
"nam"Symbol 655 MovieClip Frame 1Symbol 653 EditableText
"score"Symbol 655 MovieClip Frame 1Symbol 654 EditableText
"c01"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c02"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c03"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c04"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c05"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c06"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c07"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c08"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c09"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c10"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c11"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c12"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c13"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c14"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c15"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c16"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c17"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c18"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c19"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"c20"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 655 MovieClip
"loadIcon"Symbol 660 MovieClip {mayhem34_fla.mc_148} Frame 1Symbol 659 MovieClip {mayhem34_fla.loadingIcon_150}
"powerMask"Symbol 669 MovieClip {mayhem34_fla.powerArrow_155} Frame 1Symbol 667 MovieClip
"canvas"Symbol 693 MovieClip {mayhem34_fla.engine_153} Frame 1Symbol 665 MovieClip
"powerArrow"Symbol 693 MovieClip {mayhem34_fla.engine_153} Frame 1Symbol 669 MovieClip {mayhem34_fla.powerArrow_155}
"bird"Symbol 693 MovieClip {mayhem34_fla.engine_153} Frame 1Symbol 689 MovieClip {mayhem34_fla.bird_mc_157}
"grGfx"Symbol 693 MovieClip {mayhem34_fla.engine_153} Frame 1Symbol 692 MovieClip {mayhem34_fla.myGrenade_161}
"scoreNum"Symbol 710 MovieClip {mayhem34_fla.mc_162} Frame 1Symbol 697 EditableText
"n1"Symbol 710 MovieClip {mayhem34_fla.mc_162} Frame 1Symbol 699 EditableText
"n2"Symbol 710 MovieClip {mayhem34_fla.mc_162} Frame 1Symbol 701 EditableText
"n3"Symbol 710 MovieClip {mayhem34_fla.mc_162} Frame 1Symbol 702 EditableText
"n4"Symbol 710 MovieClip {mayhem34_fla.mc_162} Frame 1Symbol 703 EditableText
"tacs"Symbol 710 MovieClip {mayhem34_fla.mc_162} Frame 1Symbol 709 MovieClip {mayhem34_fla.titacCounter_163}
"body"Symbol 726 MovieClip Frame 1Symbol 724 MovieClip
"homeButton"Symbol 741 MovieClip Frame 1Symbol 726 MovieClip
"retryButton"Symbol 741 MovieClip Frame 1Symbol 732 MovieClip
"submitButton"Symbol 741 MovieClip Frame 1Symbol 738 MovieClip
"scoreText"Symbol 741 MovieClip Frame 1Symbol 740 EditableText
"homeButton"Symbol 771 MovieClip Frame 1Symbol 726 MovieClip
"retryButton"Symbol 771 MovieClip Frame 1Symbol 732 MovieClip
"sendButton"Symbol 771 MovieClip Frame 1Symbol 750 MovieClip {mayhem34_fla.sendButton_176}
"nameText"Symbol 771 MovieClip Frame 1Symbol 757 EditableText
"emailText"Symbol 771 MovieClip Frame 1Symbol 758 EditableText
"cbox"Symbol 771 MovieClip Frame 1Symbol 762 MovieClip {mayhem34_fla.privacyCheckBox_179}
"loadIcon"Symbol 771 MovieClip Frame 1Symbol 659 MovieClip {mayhem34_fla.loadingIcon_150}
"privacyButton"Symbol 771 MovieClip Frame 1Symbol 766 MovieClip
"nameErrorDummy"Symbol 771 MovieClip Frame 1Symbol 768 MovieClip
"emailErrorDummy"Symbol 771 MovieClip Frame 1Symbol 769 MovieClip
"scoreText"Symbol 771 MovieClip Frame 1Symbol 770 EditableText
"body"Symbol 779 MovieClip Frame 1Symbol 777 MovieClip
"scoreButton"Symbol 782 MovieClip Frame 1Symbol 779 MovieClip
"homeButton"Symbol 782 MovieClip Frame 1Symbol 726 MovieClip
"retryButton"Symbol 782 MovieClip Frame 1Symbol 732 MovieClip
"scoreText"Symbol 782 MovieClip Frame 1Symbol 780 EditableText

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 11284 bytes "<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmln ..."

Labels

"preloader"Frame 2
"home"Frame 10
"howto"Frame 20
"levelselect"Frame 30
"highscores"Frame 40
"gameplay"Frame 50
"gameover"Frame 60
"submit"Frame 70
"submitted"Frame 80
"share"Frame 90
"loop"Symbol 75 MovieClip {mayhem34_fla.thrower01_head_success_205} Frame 30
"loop"Symbol 76 MovieClip {mayhem34_fla.Thrower01_success_204} Frame 30
"loop"Symbol 83 MovieClip {mayhem34_fla.thrower01_head_fail_207} Frame 88
"idle"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 1
"wait"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 10
"throw"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 20
"reload"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 30
"success"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 40
"fail"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 50
"throwsmall"Symbol 91 MovieClip {mayhem34_fla.Thrower01_mc_201} Frame 61
"_idle01"Symbol 111 MovieClip {mayhem34_fla.Eater01_wait_45} Frame 62
"_idle02"Symbol 111 MovieClip {mayhem34_fla.Eater01_wait_45} Frame 91
"idle"Symbol 132 MovieClip {mayhem34_fla.Eater01_mc_128} Frame 1
"hit"Symbol 132 MovieClip {mayhem34_fla.Eater01_mc_128} Frame 10
"_idle01"Symbol 157 MovieClip {mayhem34_fla.eater03_head_wait_115} Frame 92
"_idle02"Symbol 157 MovieClip {mayhem34_fla.eater03_head_wait_115} Frame 122
"_idle01"Symbol 158 MovieClip {mayhem34_fla.Eater03_wait_113} Frame 62
"_idle02"Symbol 158 MovieClip {mayhem34_fla.Eater03_wait_113} Frame 91
"idle"Symbol 161 MovieClip {mayhem34_fla.Eater03_mc_211} Frame 1
"hit"Symbol 161 MovieClip {mayhem34_fla.Eater03_mc_211} Frame 10
"_idle01"Symbol 186 MovieClip {mayhem34_fla.eater02_head_wait_103} Frame 62
"_idle02"Symbol 186 MovieClip {mayhem34_fla.eater02_head_wait_103} Frame 92
"_idle01"Symbol 196 MovieClip {mayhem34_fla.Eater02_wait_101} Frame 62
"_idle02"Symbol 196 MovieClip {mayhem34_fla.Eater02_wait_101} Frame 91
"idle"Symbol 199 MovieClip {mayhem34_fla.Eater02_mc_213} Frame 1
"hit"Symbol 199 MovieClip {mayhem34_fla.Eater02_mc_213} Frame 10
"thrower"Symbol 212 MovieClip {props} Frame 1
"teammate_thrower"Symbol 212 MovieClip {props} Frame 2
"eater_1"Symbol 212 MovieClip {props} Frame 3
"eater_2"Symbol 212 MovieClip {props} Frame 4
"eater_3"Symbol 212 MovieClip {props} Frame 5
"rock_1"Symbol 212 MovieClip {props} Frame 6
"rock_2"Symbol 212 MovieClip {props} Frame 7
"rock_3"Symbol 212 MovieClip {props} Frame 8
"rock_4"Symbol 212 MovieClip {props} Frame 9
"stick_1"Symbol 212 MovieClip {props} Frame 10
"stick_2"Symbol 212 MovieClip {props} Frame 11
"stick_3"Symbol 212 MovieClip {props} Frame 12
"plank_1"Symbol 212 MovieClip {props} Frame 13
"plank_2"Symbol 212 MovieClip {props} Frame 14
"plank_3"Symbol 212 MovieClip {props} Frame 15
"log"Symbol 212 MovieClip {props} Frame 16
"watertrap"Symbol 212 MovieClip {props} Frame 17
"in"Symbol 469 MovieClip {mayhem34_fla.btn_59} Frame 2
"out"Symbol 469 MovieClip {mayhem34_fla.btn_59} Frame 11
"in"Symbol 476 MovieClip {mayhem34_fla.btn_61} Frame 2
"out"Symbol 476 MovieClip {mayhem34_fla.btn_61} Frame 11
"in"Symbol 483 MovieClip {mayhem34_fla.btn_62} Frame 2
"out"Symbol 483 MovieClip {mayhem34_fla.btn_62} Frame 11
"in"Symbol 491 MovieClip {mayhem34_fla.btn_63} Frame 2
"out"Symbol 491 MovieClip {mayhem34_fla.btn_63} Frame 11
"packHit"Symbol 523 MovieClip {mayhem34_fla.mc_65} Frame 41
"in"Symbol 529 MovieClip {mayhem34_fla.btn_76} Frame 2
"out"Symbol 529 MovieClip {mayhem34_fla.btn_76} Frame 11
"fly"Symbol 689 MovieClip {mayhem34_fla.bird_mc_157} Frame 1
"grab"Symbol 689 MovieClip {mayhem34_fla.bird_mc_157} Frame 10




http://swfchan.com/26/129721/info.shtml
Created: 22/2 -2019 23:24:45 Last modified: 22/2 -2019 23:24:45 Server time: 11/05 -2024 04:28:38