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

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

Roller Boaster - get the ball to the finish as fast as possible.swf

This is the info page for
Flash #89392

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


Text
<p align="left"><font face="Arcade" size="20" color="#666666" letterSpacing="0.000000" kerning="1">0 %</font></p>

<p align="right"><font face="Arcade" size="20" color="#666666" letterSpacing="0.000000" kerning="1">LOADING</font></p>

90

90

-90

180

0

180

270

50

310

-310

-50

camera

orientation

GOLD
SILVER
BRONZE

superjump

timestop

speedbooster

gravitation change

acceleration booster

dynamic objects

air time

coins

LEVEL #

Medals

if (Hungry) {
GoEat();
}

Created by: Alexander "Gurt" Siigur

Music by: Dj Piro at Newgrounds.com

Textures from: Various free texture sites

HURRY

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

:

TIME

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="40" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

GOLD

SILVER

BRONZE

PREV BEST

:

<p align="center"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

<p align="center"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">0</font></p>

COINS

<p align="right"><font face="Arcade" size="40" color="#000000" letterSpacing="4.000000" kerning="1">00</font></p>

<p align="right"><font face="Arcade" size="40" color="#000000" letterSpacing="4.000000" kerning="1">06</font></p>

/

CLICK TO RESTART

STAGE FINISHED

<p align="center"><font face="Arcade" size="20" color="#333333" letterSpacing="0.000000" kerning="1">NEW MEDALS EARNED</font></p>

<p align="center"><font face="Arcade" size="20" color="#333333" letterSpacing="0.000000" kerning="1">TIME: 00:23:4</font></p>

<p align="center"><font face="Arcade" size="20" color="#333333" letterSpacing="0.000000" kerning="1">NEW PERSONAL RECORD</font></p>

CLICK TO CONTINUE

BE AS FAST AS YOU CAN
AND COLLECT ALL MEDALS

GOAL

BRONZE   SILVER   GOLD

COLLECT
ALL COINS

COLLECT COINS TO GAIN TIME

0.1 SECONDS

0.5 SECONDS

1.0 SECONDS

YELLOW COIN

BLUE COIN

RED COIN

COINS

SPECIAL ITEMS WILL HELP
YOU IN DIFFERENT WAYS

SPECIAL ITEMS

?

BOUNCE (JUMP)
HOLD TO BOUNCE HIGHER

RIGHT

LEFT

CONTROLS

P

PAUSE

R

RESTART

CONTINUE

- GAME PAUSED -

EXIT LEVEL

CONTINUE

NEW GAME

ROLLER BOASTER

USING Box2D

CREDITS

THE GAME WILL AUTOSAVE YOUR PROGRESS

OLD SAVE FILE FOUND. WHAT DO YOU WANT TO DO?

CONTINUE OLD GAME

DELETE OLD GAME

CREATED BY: ALEXANDER "GURT" SIIGUR
MUSIC BY: SOME RANDOM GUY AT NEWGROUNDS

BACK

LEVEL

BRONZE

SILVER

GOLD

COINS

PERSONAL TIME

GOLD TIME

SILVER TIME

BRONZE TIME

PERSONAL TIME

<p align="center"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">10</font></p>

<p align="left"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">??:??:?</font></p>

CLICK TO START

CHOOSE A LEVEL

<p align="left"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">??:??:?</font></p>

<p align="left"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">??:??:?</font></p>

<p align="left"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">??:??:?</font></p>

<p align="left"><font face="Arcade" size="30" color="#000000" letterSpacing="0.000000" kerning="1">??:??:?</font></p>

GAME PROGRESS

BRONZE MEDALS

SILVER MEDALS

GOLD MEDALS

COIN MEDALS

SKINS UNLOCKED

COLOURS UNLOCKED

APPEARANCE

<p align="left"><font face="Arcade" size="20" color="#000000" letterSpacing="0.000000" kerning="1">0 / 10 </font></p>

<p align="left"><font face="Arcade" size="20" color="#000000" letterSpacing="0.000000" kerning="1">0 / 10 </font></p>

<p align="left"><font face="Arcade" size="20" color="#000000" letterSpacing="0.000000" kerning="1">0 / 10 </font></p>

<p align="left"><font face="Arcade" size="20" color="#000000" letterSpacing="0.000000" kerning="1">0 / 10 </font></p>

<p align="left"><font face="Arcade" size="20" color="#000000" letterSpacing="0.000000" kerning="1">1 / 11</font></p>

<p align="left"><font face="Arcade" size="20" color="#000000" letterSpacing="0.000000" kerning="1">1 / 11 </font></p>

<p align="center"><font face="Arcade" size="14" color="#000000" letterSpacing="0.000000" kerning="1">SKIN 1 OF 1</font></p>

<p align="center"><font face="Arcade" size="14" color="#000000" letterSpacing="0.000000" kerning="1">COLOUR 1 OF 1</font></p>

<p align="left"><font face="Arcade" size="14" color="#000000" letterSpacing="0.000000" kerning="1">45 %</font></p>

EXIT GAME

S
H
O
W

P
R
O
G
R
E
S
S

H
I
D
E

P
R
O
G
R
E
S
S

SoundHandler

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 4
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ mass = 0; center = new b2Vec2(0, 0); I = 0; super(); } } }//package Box2D.Collision.Shapes
Section 5
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public function GetCoreVertices():Array{ return (m_coreVertices); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local5:Array; var _local6:Number; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Shape { public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_next:b2Shape; public var m_restitution:Number; public var m_userData; public var m_isSensor:Boolean; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); _local3 = s_resetAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ var _local4:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; _local4 = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; _local3 = s_proxyAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var isSensor:Boolean;// = false public var density:Number;// = 0 public var type:int;// = -1 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); _local10 = 0; _local11 = 0; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.lowerBound.x; _local5 = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); _local6 = _arg3.upperBound.x; _local7 = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; _local10 = 0; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; _local7 = 0; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 13
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 14
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:Array; var _local9:int; var _local10:Array; var _local11:b2Mat22; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local6 = _arg1.m_vertexCount; _local7 = _arg1.m_vertices; _local8 = _arg1.m_normals; _local9 = _arg4.m_vertexCount; _local10 = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; _local13 = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); _local14 = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; _local15 = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); _local16 = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; _local20 = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local21 = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; _local22 = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local23 = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); _local24 = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg2.lowerBound; _local4 = _arg1.upperBound; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; _local7 = (_local3.x - _local4.x); _local8 = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local7:int; var _local8:Array; var _local9:int; var _local10:Array; var _local11:Array; var _local12:b2Mat22; var _local13:b2Vec2; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:ClipVertex; var _local21:int; var _local22:int; var _local23:Number; _local7 = _arg2.m_vertexCount; _local8 = _arg2.m_normals; _local9 = _arg5.m_vertexCount; _local10 = _arg5.m_vertices; _local11 = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; _local14 = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); _local15 = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; _local16 = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; _local21 = _local17; _local22 = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local7:int; var _local8:Array; var _local9:Number; var _local10:int; var _local11:Array; var _local12:Number; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local15:b2XForm; var _local16:b2XForm; var _local17:int; var _local18:uint; var _local19:Number; var _local20:Number; var _local21:Array; var _local22:int; var _local23:Array; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:b2Vec2; var _local28:b2Vec2; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Array; var _local33:Array; var _local34:int; var _local35:int; var _local36:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; _local7 = 0; _local8 = [_local7]; _local9 = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; _local10 = 0; _local11 = [_local10]; _local12 = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; _local15 = new b2XForm(); _local16 = new b2XForm(); _local19 = 0.98; _local20 = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; _local21 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); _local22 = _local13.m_vertexCount; _local23 = _local13.m_vertices; _local24 = _local23[_local17]; _local25 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; _local26 = b2Math.SubtractVV(_local37, _local25); _local27 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); _local28 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); _local29 = b2Math.b2Dot(_local28, _local25); _local30 = -(b2Math.b2Dot(_local27, _local25)); _local31 = b2Math.b2Dot(_local27, _local37); _local32 = [new ClipVertex(), new ClipVertex()]; _local33 = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); _local35 = 0; _local36 = 0; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:b2Vec2; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:int; var _local15:Number; var _local16:int; var _local17:Number; var _local18:int; var _local19:Number; var _local20:int; var _local21:Number; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; _local6 = _arg2.m_vertexCount; _local7 = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; _local10 = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); _local11 = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); _local12 = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); _local13 = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); _local14 = 0; _local15 = -(Number.MAX_VALUE); _local16 = 0; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; _local18 = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); _local19 = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; _local20 = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; _local21 = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); _local10 = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2ManifoldPoint; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; _local8 = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local9 = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; _local10 = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local11 = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local14 = ((_local12 * _local12) + (_local13 * _local13)); _local15 = _arg2.m_radius; _local16 = _arg4.m_radius; _local17 = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; _local19 = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); _local20 = (0.5 * (_local8 + _local10)); _local21 = (0.5 * (_local9 + _local11)); _local22 = (_local20 - _arg3.position.x); _local23 = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; var _local21:int; var _local22:Array; var _local23:Array; var _local24:int; var _local25:int; var _local26:int; var _local27:b2Vec2; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; _local13 = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); _local14 = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; _local15 = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local16 = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local18 = 0; _local19 = -(Number.MAX_VALUE); _local20 = _arg4.m_radius; _local21 = _arg2.m_vertexCount; _local22 = _arg2.m_vertices; _local23 = _arg2.m_normals; _local24 = 0; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; _local25 = _local18; _local26 = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; _local27 = _local22[_local26]; _local28 = (_local27.x - _local11.x); _local29 = (_local27.y - _local11.y); _local30 = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local31 = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID; _local1 = new b2ContactID(); _local1.key = key; return (_local1); } public function get key():uint{ return (_key); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactPoint { public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var friction:Number; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local4:Number; var _local5:int; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local4 = (100 * Number.MIN_VALUE); _local5 = 0; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local8:Array; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Number; var _local13:int; var _local14:int; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; _local8 = s_p1s; _local9 = s_p2s; _local10 = s_points; _local11 = 0; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); _local12 = 0; _local13 = 20; _local14 = 0; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - _local21) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; _local9 = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local10 = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; _local11 = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local12 = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); _local16 = (_arg3.m_radius - b2Settings.b2_toiSlop); _local17 = (_arg5.m_radius - b2Settings.b2_toiSlop); _local18 = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; _local14 = _arg4[2]; _local15 = _local6.x; _local16 = _local6.y; _local17 = _local7.x; _local18 = _local7.y; _local19 = _local8.x; _local20 = _local8.y; _local21 = (_local17 - _local15); _local22 = (_local18 - _local16); _local23 = (_local19 - _local15); _local24 = (_local20 - _local16); _local25 = (_local19 - _local17); _local26 = (_local20 - _local18); _local27 = -(((_local15 * _local21) + (_local16 * _local22))); _local28 = ((_local17 * _local21) + (_local18 * _local22)); _local29 = -(((_local15 * _local23) + (_local16 * _local24))); _local30 = ((_local19 * _local23) + (_local20 * _local24)); _local31 = -(((_local17 * _local25) + (_local18 * _local26))); _local32 = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; _local33 = ((_local21 * _local24) - (_local22 * _local23)); _local34 = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); _local36 = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; _local37 = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; _local38 = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); _local39 = (_local36 * _local38); _local40 = (_local37 * _local38); _local41 = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:b2Point; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local9 = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local10 = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); _local11 = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int; var _local8:int; _local7 = _arg3.m_type; _local8 = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; _local12 = -(_local7.x); _local13 = -(_local7.y); _local14 = (_local6.x - _local7.x); _local15 = (_local6.y - _local7.y); _local16 = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var points:Array; public var pointCount:int;// = 0 public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; pointCount = 0; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ var _local2:int; pointCount = _arg1.pointCount; _local2 = 0; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { public class b2Pair { public var userData;// = null public var proxyId1:uint; public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = 0xFFFF; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = 0xFFFF; public static var b2_tableCapacity:int = 4096; public function b2Pair(){ userData = null; super(); } public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint; _local5 = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local3:int; var _local4:Array; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; _local3 = 0; _local4 = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local4:uint; var _local5:uint; var _local6:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; _local4 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local5 = m_hashTable[_local4]; _local6 = null; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:b2Pair; var _local5:uint; var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; _local5 = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint; _local3 = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var lowerBounds:Array; public var upperBounds:Array; public var userData;// = null public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; userData = null; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; _local5 = _arg3.p1; _local6 = (_arg3.p2.x - _local5.x); _local7 = (_arg3.p2.y - _local5.y); _local8 = (p2.x - p1.x); _local9 = (p2.y - p1.y); _local10 = _local9; _local11 = -(_local8); _local12 = (100 * Number.MIN_VALUE); _local13 = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local6) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:int; var _local20:int; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; _local7 = _arg1.m_sweepRadius; _local8 = _arg3.m_sweepRadius; _local9 = _arg2.t0; _local10 = (_arg2.c.x - _arg2.c0.x); _local11 = (_arg2.c.y - _arg2.c0.y); _local12 = (_arg4.c.x - _arg4.c0.x); _local13 = (_arg4.c.y - _arg4.c0.y); _local14 = (_arg2.a - _arg2.a0); _local15 = (_arg4.a - _arg4.a0); _local16 = 0; _local17 = s_p1; _local18 = s_p2; _local19 = 20; _local20 = 0; _local21 = 0; _local22 = 0; _local23 = 0; _local24 = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var v:b2Vec2; public var id:b2ContactID; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function Set(_arg1:Number):void{ var _local2:Number; var _local3:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = col1.x; _local3 = col2.x; _local4 = col1.y; _local5 = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = col1.x; _local5 = col2.x; _local6 = col1.y; _local7 = col2.y; _local8 = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22; _local2 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Mat22; _local3 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); _local4 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); _local5 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean; _local2 = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number; _local3 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c:b2Vec2; public var a:Number; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; _local3 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function SetZero():void{ x = 0; y = 0; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function Normalize():Number{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var R:b2Mat22; public var position:b2Vec2; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _g:uint;// = 0 private var _b:uint;// = 0 private var _r:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = 0; _g = 0; _b = 0; super(); _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7); }; } else { _local4 = m0.points[0]; _local8.normalImpulse = _local4.normalImpulse; _local8.tangentImpulse = _local4.tangentImpulse; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Persist(_local7); }; }; } else { m_manifoldCount = 0; if ((((m0.pointCount > 0)) && (_arg1))){ _local4 = m0.points[0]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function GetShape1():b2Shape{ return (m_shape1); } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetManifolds():Array{ return (null); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function Update(_arg1:b2ContactListener):void{ var _local2:int; var _local3:int; var _local4:b2Body; var _local5:b2Body; _local2 = m_manifoldCount; Evaluate(_arg1); _local3 = m_manifoldCount; _local4 = m_shape1.m_body; _local5 = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local1:int; var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); _local1 = 0; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ var _local3:int; var _local4:int; var _local5:b2ContactRegister; var _local6:Function; if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; _local3 = _arg1.m_shape1.m_type; _local4 = _arg1.m_shape2.m_type; _local5 = s_registers[_local3][_local4]; _local6 = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local4:int; var _local5:int; var _local6:b2ContactRegister; var _local7:Function; var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5]; _local7 = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:int; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; _local9 = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; _local2 = 0; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local19:int; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; _local19 = 0; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; _local1 = 0; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 45
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function GetManifolds():Array{ return (null); } override public function Evaluate(_arg1:b2ContactListener):void{ } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); _local8 = [false, false]; _local9 = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); _local9 = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Add(_local7); }; _local8++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local8 = 0; while (_local8 < m0.pointCount) { if (_local9[_local8]){ } else { _local4 = m0.points[_local8]; _local7.position = _local5.GetWorldPoint(_local4.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m0.normal); _local7.separation = _local4.separation; _local7.id.key = _local4.id._key; _arg1.Remove(_local7); }; _local8++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_mass:Number; public var m_u:b2Vec2; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_localAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; if (m_frequencyHz > 0){ return (true); }; _local2 = m_body1; _local3 = m_body2; _local1 = _local2.m_xf.R; _local4 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; _local7 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; _local9 = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); _local10 = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); _local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); _local12 = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local13 = (-(m_mass) * _local12); m_u.Set(_local9, _local10); _local14 = (_local13 * m_u.x); _local15 = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); _local10 = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; _local11 = ((_local6 * m_u.y) - (_local7 * m_u.x)); _local12 = ((_local8 * m_u.y) - (_local9 * m_u.x)); _local13 = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local3 = m_body1; _local4 = m_body2; _local2 = _local3.m_xf.R; _local5 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; _local8 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; _local10 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); _local11 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); _local12 = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); _local13 = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); _local14 = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); _local15 = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); _local16 = (_local15 * m_u.x); _local17 = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 49
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var length:Number; public var dampingRatio:Number; public var frequencyHz:Number; public var localAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ var _local5:Number; var _local6:Number; body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); _local5 = (_arg4.x - _arg3.x); _local6 = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_force:Number; public var m_mass:Number; public var m_prismatic1:b2PrismaticJoint; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_ground2:b2Body; public var m_constant:Number; public var m_revolute1:b2RevoluteJoint; public var m_revolute2:b2RevoluteJoint; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local2:int; var _local3:int; var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); _local2 = _arg1.joint1.m_type; _local3 = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = 0; _local2 = m_body1; _local3 = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; _local6 = (m_constant - (_local4 + (m_ratio * _local5))); _local7 = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local2 = m_ground1; _local3 = m_ground2; _local4 = m_body1; _local5 = m_body2; _local14 = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = m_body2.m_xf.R; _local2 = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); _local3 = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); _local4 = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); _local6 = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint2:b2Joint; public var joint1:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular2:Number; public var angular1:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; _local3 = null; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var collideConnected:Boolean; public var body1:b2Body; public var body2:b2Body; public var userData; public var type:int; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var joint:b2Joint; public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; } }//package Box2D.Dynamics.Joints
Section 56
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { public var m_beta:Number; public var m_mass:b2Mat22; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_localAnchor:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K:b2Mat22; public var m_gamma:Number; public var m_C:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); _local4 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); _local5 = m_body2.m_mass; _local6 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local7 = (((2 * _local5) * _arg1.dampingRatio) * _local6); _local8 = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); _local9 = (_arg1.dt * m_impulse.x); _local10 = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local6 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; _local8 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); _local9 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); _local10 = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); _local11 = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); _local12 = m_impulse.x; _local13 = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); _local14 = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local15 = (_arg1.dt * _local10); _local16 = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 57
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var frequencyHz:Number; public var dampingRatio:Number; public var maxForce:Number; public var target:b2Vec2; public var timeStep:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_refAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_torque:Number; public var m_enableLimit:Boolean; public var m_motorForce:Number; public var m_force:Number; public var m_localYAxis1:b2Vec2; public var m_motorMass:Number; public var m_maxMotorForce:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_angularMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_linearJacobian:b2Jacobian; public var m_enableMotor:Boolean; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; _local1 = m_body1; _local2 = m_body2; _local4 = _local1.GetWorldPoint(m_localAnchor1); _local5 = _local2.GetWorldPoint(m_localAnchor2); _local6 = (_local5.x - _local4.x); _local7 = (_local5.y - _local4.y); _local8 = _local1.GetWorldVector(m_localXAxis1); _local9 = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_xf.R; _local2 = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); _local3 = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); _local4 = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); _local5 = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; _local3 = m_body1; _local4 = m_body2; _local5 = _local3.m_invMass; _local6 = _local4.m_invMass; _local7 = _local3.m_invI; _local8 = _local4.m_invI; _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local21 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local22 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local23 = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local24 = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); _local25 = b2Math.b2Abs(_local23); _local26 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local27 = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local28 = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_xf.R; _local4 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; _local7 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; _local9 = (_local1.m_sweep.c.x + _local4); _local10 = (_local1.m_sweep.c.y + _local5); _local11 = (_local2.m_sweep.c.x + _local7); _local12 = (_local2.m_sweep.c.y + _local8); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = _local1.GetWorldVector(m_localXAxis1); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; _local4 = _local2.m_xf.R; _local14 = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); _local15 = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); _local16 = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); _local17 = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_invMass; _local5 = _local3.m_invMass; _local6 = _local2.m_invI; _local7 = _local3.m_invI; _local9 = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local10 = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); _local11 = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); _local12 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local13 = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); _local14 = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } } }//package Box2D.Dynamics.Joints
Section 59
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var localAxis1:b2Vec2; public var referenceAngle:Number; public var maxMotorForce:Number; public var motorSpeed:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_ground:b2Body; public var m_maxLength2:Number; public var m_limitForce1:Number; public var m_maxLength1:Number; public var m_limitState1:int; public var m_limitState2:int; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_limitPositionImpulse1:Number; public var m_constant:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_positionImpulse:Number; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitForce2:Number; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local5 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local6 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local7 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local23 = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; _local10 = (_local2.m_sweep.c.x + _local5); _local11 = (_local2.m_sweep.c.y + _local6); _local12 = (_local3.m_sweep.c.x + _local8); _local13 = (_local3.m_sweep.c.y + _local9); _local14 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local15 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local16 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local17 = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); _local18 = m_u1.Length(); _local19 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; _local20 = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; _local21 = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); _local22 = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.GetWorldPoint(m_localAnchor2); _local2 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.GetWorldPoint(m_localAnchor1); _local2 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength2:Number; public var length1:Number; public var length2:Number; public var maxLength1:Number; public var ratio:Number; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); _local8 = (_arg5.x - _arg3.x); _local9 = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local10 = (_arg6.x - _arg4.x); _local11 = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; _local12 = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_motorForce:Number; public var m_pivotMass:b2Mat22; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_xf.R; _local7 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; _local10 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; _local12 = (_local3.m_sweep.c.x + _local7); _local13 = (_local3.m_sweep.c.y + _local8); _local14 = (_local4.m_sweep.c.x + _local10); _local15 = (_local4.m_sweep.c.y + _local11); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); _local18 = _local3.m_invMass; _local19 = _local4.m_invMass; _local20 = _local3.m_invI; _local21 = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local22 = tImpulse.x; _local23 = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local24 = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local11 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); _local12 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); _local13 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); _local14 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); _local15 = (_arg1.dt * _local13); _local16 = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } } }//package Box2D.Dynamics.Joints
Section 63
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var referenceAngle:Number; public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var maxMotorTorque:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_invI:Number; public var m_xf:b2XForm; public var m_torque:Number; public var m_flags:uint; public var m_linearVelocity:b2Vec2; public var m_world:b2World; public var m_shapeCount:int; public var m_isPlayer:Boolean; public var m_next:b2Body; public var m_mass:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_sweep:b2Sweep; public var m_userData; public var m_invMass:Number; public var m_forceSleep:Boolean; public var m_prev:b2Body; public var m_type:int; public var m_angularDamping:Number; public var m_linearDamping:Number; public var m_hyperSleep:Boolean; public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ var _local3:b2Mat22; var _local4:b2Vec2; m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; m_isPlayer = false; m_forceSleep = false; m_hyperSleep = false; } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function SetAsPlayer():void{ m_isPlayer = true; } public function SynchronizeTransform():void{ var _local1:b2Mat22; var _local2:b2Vec2; m_xf.R.Set(m_sweep.a); _local1 = m_xf.R; _local2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function SetMassFromShapes():void{ var _local1:b2Shape; var _local2:Number; var _local3:Number; var _local4:b2MassData; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:int; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; _local2 = 0; _local3 = 0; _local4 = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); _local5 = m_xf.R; _local6 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; _local7 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local4:b2Mat22; var _local5:b2Vec2; var _local6:Boolean; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); _local4 = m_xf.R; _local5 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); _local6 = false; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local1:b2XForm; var _local2:b2Mat22; var _local3:b2Vec2; var _local4:b2Shape; var _local5:Boolean; _local1 = s_xf1; _local1.R.Set(m_sweep.a0); _local2 = _local1.R; _local3 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); _local5 = true; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function GetShapeList():b2Shape{ return (m_shapeList); } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; _local5 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function GetUserData(){ return (m_userData); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function WakeUp():void{ m_forceSleep = false; m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetForceSleep():void{ m_forceSleep = true; PutToSleep(); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetInertia():Number{ return (m_I); } public function SetHyperSleep():void{ m_hyperSleep = true; SetForceSleep(); } 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); } public function IsPlayer():Boolean{ return (m_isPlayer); } public function IsForcedToSleep():Boolean{ if (m_hyperSleep){ return (true); }; return (m_forceSleep); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge; _local2 = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function DestroyShape(_arg1:b2Shape):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:Boolean; if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); _local2 = m_shapeList; _local3 = null; _local4 = false; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorld():b2World{ return (m_world); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2BodyDef { public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 66
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 67
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ var _local2:Number; if (_arg1.shape1.GetBody().IsPlayer()){ _local2 = GetAngle(_arg1, 1); if ((((_local2 <= 55)) || ((_local2 >= 305)))){ _arg1.shape1.GetBody().GetUserData().touching = true; _arg1.shape1.GetBody().GetUserData().touchBody = _arg1.shape2.GetBody(); }; }; if (_arg1.shape2.GetBody().IsPlayer()){ _local2 = GetAngle(_arg1, 2); if ((((_local2 <= 55)) || ((_local2 >= 305)))){ _arg1.shape2.GetBody().GetUserData().touching = true; _arg1.shape2.GetBody().GetUserData().touchBody = _arg1.shape1.GetBody(); }; }; } public function Persist(_arg1:b2ContactPoint):void{ var _local2:Number; if (_arg1.shape1.GetBody().IsPlayer()){ _local2 = GetAngle(_arg1, 1); if ((((_local2 <= 55)) || ((_local2 >= 305)))){ _arg1.shape1.GetBody().GetUserData().touching = true; _arg1.shape1.GetBody().GetUserData().touchBody = _arg1.shape2.GetBody(); }; }; if (_arg1.shape2.GetBody().IsPlayer()){ _local2 = GetAngle(_arg1, 2); if ((((_local2 <= 55)) || ((_local2 >= 305)))){ _arg1.shape2.GetBody().GetUserData().touching = true; _arg1.shape2.GetBody().GetUserData().touchBody = _arg1.shape1.GetBody(); }; }; } public function Remove(_arg1:b2ContactPoint):void{ if (_arg1.shape1.GetBody().IsPlayer()){ _arg1.shape1.GetBody().GetUserData().touching = false; }; if (_arg1.shape2.GetBody().IsPlayer()){ _arg1.shape2.GetBody().GetUserData().touching = false; }; } public function Result(_arg1:b2ContactResult):void{ } private function GetAngle(_arg1:b2ContactPoint, _arg2:Number):Number{ var _local3:Number; if (_arg2 == 1){ _local3 = ((_arg1.shape1.GetBody().GetUserData().worldOrientation + 90) + (Math.atan2((_arg1.shape1.GetBody().GetPosition().y - _arg1.position.y), (_arg1.shape1.GetBody().GetPosition().x - _arg1.position.x)) * (180 / Math.PI))); } else { _local3 = ((_arg1.shape2.GetBody().GetUserData().worldOrientation + 90) + (Math.atan2((_arg1.shape2.GetBody().GetPosition().y - _arg1.position.y), (_arg1.shape2.GetBody().GetPosition().x - _arg1.position.x)) * (180 / Math.PI))); }; if (_local3 < 0){ _local3 = (_local3 + 360); }; if (_local3 > 360){ _local3 = (_local3 - 360); }; return (_local3); } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; _local5 = _local2.m_body; _local6 = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_lineThickness:Number;// = 1 public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawScale = 1; m_lineThickness = 1; m_alpha = 1; m_fillAlpha = 1; m_xformScale = 1; super(); m_drawFlags = 0; } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(2, 0, 1, false, "none"); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } } }//package Box2D.Dynamics
Section 71
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeShape(_arg1:b2Shape):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local4:int; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; _local4 = 0; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:b2ContactSolver; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; _local8 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; _local4 = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.8, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ var _local4:b2BodyDef; m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2XForm; var _local5:b2XForm; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; _local2 = _arg1.m_body1; _local3 = _arg1.m_body2; _local4 = _local2.m_xf; _local5 = _local3.m_xf; _local6 = _local4.position; _local7 = _local5.position; _local8 = _arg1.GetAnchor1(); _local9 = _arg1.GetAnchor2(); _local10 = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_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; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function DrawDebugData():void{ var _local1:uint; var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2XForm; var _local12:b2AABB; var _local13:b2AABB; var _local14:Array; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); _local1 = m_debugDraw.GetFlags(); _local7 = new b2Vec2(); _local8 = new b2Vec2(); _local9 = new b2Vec2(); _local10 = new b2Color(0, 0, 0); _local12 = new b2AABB(); _local13 = new b2AABB(); _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; } public function DestroyBody(_arg1:b2Body):void{ var _local2:b2JointEdge; var _local3:b2Shape; var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; _local2 = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; _local3 = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local5:b2Color; var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; _local5 = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Island; var _local4:b2Contact; var _local5:b2Joint; var _local6:int; var _local7:Array; var _local8:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; _local3 = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; _local4 = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; _local5 = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; _local6 = m_bodyCount; _local7 = new Array(_local6); _local8 = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; _local4 = new Array(_arg3); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Island; var _local9:int; var _local10:Array; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; _local8 = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); _local9 = m_bodyCount; _local10 = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function Validate():void{ m_broadPhase.Validate(); } public function GetGravity():b2Vec2{ return (m_gravity); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local2:b2Joint; var _local3:b2Body; var _local4:b2Shape; _local2 = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local2:Boolean; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:b2Shape; _local2 = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; _local3 = _arg1.m_body1; _local4 = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ var _local2:b2Body; if (m_lock == true){ return (null); }; _local2 = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ var _local3:b2TimeStep; m_lock = true; _local3 = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 75
//actor_PC (code.actor_PC) package code { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.display.*; public class actor_PC extends Sprite { private var _zoomTarget:Number;// = 0 private var _cameraRotationTarget:Number;// = 0 private var _cameraExtraXTarget:Number;// = 0 private var _rotationSpeed:Number;// = 0 private var _cameraLayer:Sprite; private var _waitForRotation:Boolean;// = false private var _backgroundLayer:MovieClip; private var _timeStep:Number;// = 0 private var _ballBody:b2Body; private var _cameraExtraYTarget:Number;// = 0 private var _cameraRotation:Number;// = 0 public function actor_PC(_arg1:b2Body){ _rotationSpeed = 0; _timeStep = 0; _zoomTarget = 0; _cameraRotation = 0; _cameraExtraXTarget = 0; _cameraExtraYTarget = 0; _cameraRotationTarget = 0; _waitForRotation = false; super(); _ballBody = _arg1; _ballBody.GetUserData().visible = false; } public function DoSlowmotion():void{ if (_ballBody.GetUserData().slowTime){ _ballBody.GetUserData().slowTimeTimer = (_ballBody.GetUserData().slowTimeTimer - 1); if (_ballBody.GetUserData().slowTimeTimer <= 0){ _ballBody.GetUserData().slowTime = false; }; }; } public function get NewCoinsCollected():Boolean{ if (_ballBody.GetUserData().newCoinCollected){ _ballBody.GetUserData().newCoinCollected = false; return (true); }; return (false); } public function SetBallLayers(_arg1:Array):void{ _ballBody.GetUserData().customSkin.gotoAndStop(_arg1[1]); _ballBody.GetUserData().customSkin.mc.gotoAndStop(_arg1[0]); } public function get AirTime():Boolean{ if (_ballBody.GetUserData().airTime){ _ballBody.GetUserData().airTimeTimer = (_ballBody.GetUserData().airTimeTimer - 1); if (_ballBody.GetUserData().airTimeTimer <= 0){ _ballBody.GetUserData().airTime = false; }; }; return (_ballBody.GetUserData().airTime); } public function get GetXPos():Number{ return (_ballBody.GetUserData().hitTestMC.x); } public function IsCameraInRotation():Boolean{ return (_waitForRotation); } public function UpdateMC():void{ var _local1:Number; _ballBody.GetUserData().customSkin.x = _ballBody.GetUserData().x; _ballBody.GetUserData().customSkin.y = _ballBody.GetUserData().y; if (!_waitForRotation){ if (_ballBody.GetUserData().slowTime){ _ballBody.GetUserData().customSkin.mc.rotation = (_ballBody.GetUserData().customSkin.mc.rotation + (_rotationSpeed * 0.5)); } else { _ballBody.GetUserData().customSkin.mc.rotation = (_ballBody.GetUserData().customSkin.mc.rotation + _rotationSpeed); }; }; _local1 = _ballBody.GetLinearVelocity().Length(); _zoomTarget = (1 - (_local1 * 0.01)); if ((_cameraRotationTarget - 4) > _cameraRotation){ _cameraRotation = (_cameraRotation + 4); } else { if ((_cameraRotationTarget + 4) < _cameraRotation){ _cameraRotation = (_cameraRotation - 4); } else { if (_cameraRotation != _cameraRotationTarget){ _cameraRotation = _cameraRotationTarget; _waitForRotation = false; }; }; }; ZoomCamera(_zoomTarget, _cameraRotation); } public function get SlowmotionInitialized():Boolean{ if (_ballBody.GetUserData().slowmotionInitialized == false){ _ballBody.GetUserData().slowmotionInitialized = true; return (false); }; return (true); } public function get RotationSpeed():Number{ return (_rotationSpeed); } public function get GetCoinsCollected():Number{ var _local1:Number; _local1 = _ballBody.GetUserData().coinsCollected; _ballBody.GetUserData().coinsCollected = 0; return (_local1); } public function SetRotationSpeed():void{ _rotationSpeed = (_ballBody.GetAngularVelocity() * (180 / (Math.PI * _timeStep))); } public function get AirTimeTrace():Boolean{ _ballBody.GetUserData().airTimeTrace = (_ballBody.GetUserData().airTimeTrace - 1); if (_ballBody.GetUserData().airTimeTrace <= 0){ _ballBody.GetUserData().airTimeTrace = 5; return (true); }; return (false); } public function get GetYPos():Number{ return (_ballBody.GetUserData().hitTestMC.y); } public function get ChangeGravity():Boolean{ if (_ballBody.GetUserData().changeGravity){ _ballBody.GetUserData().changeGravity = false; return (true); }; return (false); } public function get SuperAcceleration():Boolean{ if (_ballBody.GetUserData().superAcceleration){ _ballBody.GetUserData().superAccelerationTimer = (_ballBody.GetUserData().superAccelerationTimer - 1); if (_ballBody.GetUserData().superAccelerationTimer <= 0){ _ballBody.GetUserData().superAcceleration = false; }; }; return (_ballBody.GetUserData().superAcceleration); } public function WakeUp():void{ _ballBody.WakeUp(); } public function get SuperAccelerationTrace():Boolean{ _ballBody.GetUserData().superAccelerationTrace = (_ballBody.GetUserData().superAccelerationTrace - 1); if (_ballBody.GetUserData().superAccelerationTrace <= 0){ _ballBody.GetUserData().superAccelerationTrace = 4; return (true); }; return (false); } public function get DeadStopTouched():Boolean{ if (_ballBody.GetUserData().deadStopTouched){ _ballBody.GetUserData().deadStopTouched = false; return (true); }; return (false); } public function get SlowmotionTime():Boolean{ return (_ballBody.GetUserData().slowTime); } public function SetCameraRotation():void{ _cameraRotationTarget = _ballBody.GetUserData().changeGravityTo; _waitForRotation = true; } public function SetTimeStep(_arg1:Number):void{ _timeStep = (1 / _arg1); } public function get SlowmotionTurnedOff():Boolean{ if (_ballBody.GetUserData().slowmotionInitialized == true){ _ballBody.GetUserData().slowmotionInitialized = false; return (false); }; return (true); } public function get GetOrientation():Number{ return (_ballBody.GetUserData().worldOrientation); } public function SetBackgroundTo(_arg1:MovieClip):void{ _backgroundLayer = _arg1; } public function ApplyImpulse(_arg1:Number, _arg2:Number){ var _local3:b2Vec2; var _local4:b2Vec2; _ballBody; _local3 = new b2Vec2(); _local3.Set(_arg1, _arg2); _ballBody.WakeUp(); _local4 = new b2Vec2(); _local4 = _ballBody.GetPosition(); _ballBody.ApplyImpulse(_local3, _local4); if (((_ballBody.GetUserData().touchBody.IsDynamic) && (_ballBody.GetUserData().touching))){ _local3.Set((-(_arg1) * 0.8), (-(_arg2) * 0.8)); _ballBody.GetUserData().touchBody.WakeUp(); _local4 = _ballBody.GetUserData().touchBody.GetPosition(); _ballBody.GetUserData().touchBody.ApplyImpulse(_local3, _local4); }; } public function get TouchingGround():Boolean{ return (_ballBody.GetUserData().touching); } public function get SecretAchievementCollected():Boolean{ if (_ballBody.GetUserData().secretAchievementEarned){ _ballBody.GetUserData().secretAchievementEarned = false; return (true); }; return (false); } public function get GetRotation():Number{ return (_ballBody.GetUserData().hitTestMC.rotation); } public function SetCameraTo(_arg1:Sprite):void{ _cameraLayer = _arg1; ZoomCamera(1, 0); } private function ZoomCamera(_arg1:Number, _arg2:Number):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local3 = _ballBody.GetUserData().hitTestMC.x; _local4 = _ballBody.GetUserData().hitTestMC.y; if ((_cameraLayer.scaleX + 0.005) < _arg1){ _cameraLayer.scaleX = (_cameraLayer.scaleX + 0.005); _cameraLayer.scaleY = (_cameraLayer.scaleY + 0.005); } else { if ((_cameraLayer.scaleX - 0.005) > _arg1){ _cameraLayer.scaleX = (_cameraLayer.scaleX - 0.005); _cameraLayer.scaleY = (_cameraLayer.scaleY - 0.005); } else { _cameraLayer.scaleX = _arg1; _cameraLayer.scaleY = _arg1; }; }; _local5 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4))); _local6 = (Math.atan2((0 - _local4), (0 - _local3)) * (180 / Math.PI)); _local7 = ((_local6 + _arg2) + 90); _local8 = ((Math.sin((_local7 * (Math.PI / 180))) * _local5) * _cameraLayer.scaleX); _local9 = (((Math.cos((_local7 * (Math.PI / 180))) * _local5) * -1) * _cameraLayer.scaleX); _local10 = (-(_ballBody.GetLinearVelocity().x) * 2); if ((_cameraExtraXTarget - 0.5) > _local10){ _cameraExtraXTarget = (_cameraExtraXTarget - 0.5); } else { if ((_cameraExtraXTarget + 0.5) < _local10){ _cameraExtraXTarget = (_cameraExtraXTarget + 0.5); }; }; _cameraLayer.x = ((_local8 + 320) + (_cameraExtraXTarget * Math.cos((_arg2 * (Math.PI / 180))))); _cameraLayer.y = ((_local9 + 240) + _cameraExtraYTarget); _cameraLayer.rotation = _arg2; _backgroundLayer.x = (_cameraLayer.x / 10); _backgroundLayer.y = (_cameraLayer.y / 10); } } }//package code
Section 76
//countdownStart (code.countdownStart) package code { import flash.display.*; public class countdownStart extends MovieClip { private var _startMC:MovieClip; public function countdownStart(_arg1:MovieClip){ _startMC = _arg1; _startMC.stop(); } public function CountdownDone():Boolean{ _startMC.play(); if (_startMC.currentFrame == _startMC.totalFrames){ _startMC.stop(); return (true); }; return (false); } } }//package code
Section 77
//finishLine (code.finishLine) package code { import Box2D.Common.Math.*; import flash.display.*; public class finishLine extends MovieClip { private var _zones:Array; private var _finishReached:Boolean; private var _oldPos:Array; private var _finishMC:MovieClip; public function finishLine(_arg1:MovieClip, _arg2:MovieClip){ var _local3:Number; _oldPos = new Array(0, 0); _zones = new Array(0, 0); super(); _finishMC = _arg1; _finishReached = false; _oldPos[0] = _arg2.x; _oldPos[1] = (_arg2.y - 60); _local3 = Math.round(_finishMC.rotation); if (_local3 == 0){ _zones[0] = 1; _zones[1] = 2; } else { if (_local3 == 90){ _zones[0] = 1; _zones[1] = 4; } else { if (_local3 == 180){ _zones[0] = 3; _zones[1] = 4; } else { _zones[0] = 2; _zones[1] = 3; }; }; }; } public function FinishReached(_arg1:Number, _arg2:Number, _arg3:b2Vec2):Boolean{ if (((((IsInZone(_zones[0], _arg1, _arg2)) && (IsInZone(_zones[1], _oldPos[0], _oldPos[1])))) || (((IsInZone(_zones[1], _arg1, _arg2)) && (IsInZone(_zones[0], _oldPos[0], _oldPos[1])))))){ if (GetGravityOrientation(_arg3) == Math.round(_finishMC.rotation)){ _finishMC.gotoAndPlay("finish"); _finishReached = true; return (true); }; }; _oldPos[0] = _arg1; _oldPos[1] = _arg2; return (false); } private function IsInZone(_arg1:Number, _arg2:Number, _arg3:Number):Boolean{ if (_arg1 == 1){ if (_arg2 >= _finishMC.x){ if (_arg3 <= _finishMC.y){ return (true); }; }; } else { if (_arg1 == 2){ if (_arg2 <= _finishMC.x){ if (_arg3 <= _finishMC.y){ return (true); }; }; } else { if (_arg1 == 3){ if (_arg2 <= _finishMC.x){ if (_arg3 >= _finishMC.y){ return (true); }; }; } else { if (_arg1 == 4){ if (_arg2 >= _finishMC.x){ if (_arg3 >= _finishMC.y){ return (true); }; }; }; }; }; }; return (false); } private function GetGravityOrientation(_arg1:b2Vec2):Number{ if (_arg1.y == 10){ return (0); }; if (_arg1.y == -10){ return (180); }; if (_arg1.x == 10){ return (-90); }; if (_arg1.x == -10){ return (90); }; return (0); } public function LevelFinished():Boolean{ return (_finishReached); } } }//package code
Section 78
//gameInterface (code.gameInterface) package code { import flash.events.*; import flash.display.*; import flash.text.*; import flash.utils.*; public class gameInterface extends MovieClip { public var coins:MovieClip; public var nr5_txt:TextField; private var timeKeeper:Array; private var _gameOverType:String;// = "bounds" private var _hurryTimer:Number; private var _times:levelTimes; private var _DataHandler:saveInformation; private var _showMenuFunction:Function; public var cover_game_over:MovieClip; public var hurryTimer:MovieClip; public var nr4_txt:TextField; private var timeKeeperMax:Array; public var tutorial_info:MovieClip; public var nr3_txt:TextField; public var stage_cleared_plate:MovieClip; private var _addSoundFunction:Function; private var _timesUpFunction:Function; public var pause_info:MovieClip; private var _currentLevel:Number; public var current_goal_plate:MovieClip; private var _tutorialPerformed:Boolean;// = false private var _currTime:Number;// = 0 private var _coinsCollected:Number;// = 0 private var _timeToBeat:Number;// = 0 public var nr2_txt:TextField; public var nr6_txt:TextField; public var game_over_animation:MovieClip; private var _currGoal:String;// = "gold" private var _plateShowTimer:Number; public function gameInterface(_arg1:Number, _arg2:saveInformation, _arg3:Boolean, _arg4:Boolean, _arg5:Function, _arg6:Function){ timeKeeper = new Array(0, 0, 0, 0, 0, 0); timeKeeperMax = new Array(0, 0, 0, 0, 2, 0); _coinsCollected = 0; _currTime = 0; _timeToBeat = 0; _currGoal = "gold"; _tutorialPerformed = false; _gameOverType = "bounds"; super(); _currentLevel = _arg1; _DataHandler = _arg2; _timesUpFunction = _arg5; _addSoundFunction = _arg6; this.pause_info.visible = false; this.cover_game_over.visible = false; this.tutorial_info.gotoAndStop(1); this.game_over_animation.gotoAndStop(1); this.stage_cleared_plate.gotoAndStop(1); this.stage_cleared_plate.medal_1.gotoAndStop(1); this.stage_cleared_plate.medal_2.gotoAndStop(1); this.stage_cleared_plate.medal_3.gotoAndStop(1); this.stage_cleared_plate.medal_4.gotoAndStop(1); this.stage_cleared_plate.visible = false; this.tutorial_info.visible = false; if (((_arg3) && (!(_arg2.LevelTutorials[(_arg1 - 1)])))){ _arg2.LevelTutorials[(_arg1 - 1)] = true; _plateShowTimer = setInterval(ShowTutorial, 330); } else { _tutorialPerformed = true; }; this.hurryTimer.visible = false; if (_arg4){ this.coins.visible = false; this.hurryTimer.y = -80; }; } public function GameOver(_arg1:Function):void{ _showMenuFunction = _arg1; this.cover_game_over.visible = true; _plateShowTimer = setInterval(ShowGameOverText, 1000, _gameOverType); } private function ShowMenu(_arg1:Event):void{ ShowMenuSimple(); } public function TutorialDone():Boolean{ return (_tutorialPerformed); } public function SetTimes(_arg1:levelTimes):void{ _times = _arg1; if ((((_DataHandler.LevelTimes[(_currentLevel - 1)] <= _times.GetTimeGold)) && (!((_DataHandler.LevelTimes[(_currentLevel - 1)] == 0))))){ _currGoal = "record"; }; SetTimeToBeat(); } private function GetDigitAt(_arg1:Number, _arg2:Number):String{ var _local3:String; var _local4:String; _local3 = String(_arg2); _local4 = ""; _local4 = _local3.charAt(((_local3.length - 1) - _arg1)); if (_local4 == ""){ _local4 = "0"; }; return (_local4); } private function TutorialClickPerformed(_arg1:Event):void{ if (this.tutorial_info.currentFrame == this.tutorial_info.totalFrames){ this.tutorial_info.removeEventListener(MouseEvent.MOUSE_UP, TutorialClickPerformed); this.tutorial_info.visible = false; _tutorialPerformed = true; } else { this.tutorial_info.nextFrame(); }; } public function SetCoinsTot(_arg1:Number):void{ this.coins.coinsTot_txt.text = TurnIntoDigit(_arg1); } private function TimesUp():void{ _gameOverType = "time"; _timesUpFunction(); } private function TurnIntoDigit(_arg1:Number):String{ var _local2:String; _local2 = ""; if (_arg1 < 10){ _local2 = ("0" + _arg1); } else { _local2 = ("" + _arg1); }; return (_local2); } public function ShowStageCleared(_arg1:Function):void{ _showMenuFunction = _arg1; ShowStageClear0(); _plateShowTimer = setInterval(ShowStageClearPlate, 500); } private function DecreaseTimeByOne():void{ timeKeeper[1] = (timeKeeper[1] - 1); _currTime = (_currTime - 1); if (timeKeeper[1] < 0){ timeKeeper[2] = (timeKeeper[2] - 1); timeKeeper[1] = 9; if (timeKeeper[2] < 0){ timeKeeper[3] = (timeKeeper[3] - 1); timeKeeper[2] = 9; if (timeKeeper[3] < 0){ timeKeeper[3] = 5; timeKeeper[4] = (timeKeeper[4] - 1); if (timeKeeper[4] < 0){ timeKeeper[5] = (timeKeeper[5] - 1); timeKeeper[4] = 9; this.nr6_txt.text = timeKeeper[5]; }; this.nr5_txt.text = timeKeeper[4]; }; this.nr4_txt.text = timeKeeper[3]; }; this.nr3_txt.text = timeKeeper[2]; }; this.nr2_txt.text = timeKeeper[1]; } public function Deconstructor():void{ clearInterval(_hurryTimer); } private function ShowStageClear0():void{ var _local1:*; this.stage_cleared_plate.time_txt.alpha = 0; this.stage_cleared_plate.record_txt.alpha = 0; this.stage_cleared_plate.medal_txt.alpha = 0; _local1 = 1; while (_local1 <= 4) { this.stage_cleared_plate[("medal_" + _local1)].alpha = 0; _local1++; }; } private function ShowStageClear2():void{ clearInterval(_plateShowTimer); if (this.stage_cleared_plate.record_txt.text != ""){ this.stage_cleared_plate.record_txt.alpha = 1; _plateShowTimer = setInterval(ShowStageClear3, 500); } else { ShowStageClear3(); }; } private function ShowStageClear3():void{ var _local1:*; clearInterval(_plateShowTimer); if (this.stage_cleared_plate.medal_txt.text != ""){ this.stage_cleared_plate.medal_txt.alpha = 1; _local1 = 1; while (_local1 <= 4) { this.stage_cleared_plate[("medal_" + _local1)].alpha = 1; _local1++; }; _plateShowTimer = setInterval(ShowStageClear4, 500); } else { ShowStageClear4(); }; } private function ShowStageClear1():void{ this.stage_cleared_plate.time_txt.alpha = 1; clearInterval(_plateShowTimer); _plateShowTimer = setInterval(ShowStageClear2, 500); } private function ShowStageClear4():void{ this.stage_cleared_plate.gotoAndStop(2); clearInterval(_plateShowTimer); this.stage_cleared_plate.addEventListener(MouseEvent.MOUSE_UP, ShowMenu); } private function ShowMenuSimple():void{ this.stage_cleared_plate.removeEventListener(MouseEvent.MOUSE_UP, ShowMenu); this.cover_game_over.removeEventListener(MouseEvent.MOUSE_UP, ShowMenu); _showMenuFunction(); } private function HideTimeGoal():void{ this.current_goal_plate.visible = false; _timeToBeat = 88888; } public function HidePauseMenu():void{ this.pause_info.visible = false; } private function ShowTimeToBeat():void{ this.current_goal_plate.gnr2_txt.text = GetDigitAt(0, _timeToBeat); this.current_goal_plate.gnr3_txt.text = GetDigitAt(1, _timeToBeat); this.current_goal_plate.gnr4_txt.text = GetDigitAt(2, _timeToBeat); this.current_goal_plate.gnr5_txt.text = GetDigitAt(3, _timeToBeat); this.current_goal_plate.gnr6_txt.text = GetDigitAt(4, _timeToBeat); } public function UpdateTime():void{ timeKeeper[0] = (timeKeeper[0] + 1); if (timeKeeper[0] >= 3){ timeKeeper[0] = 0; timeKeeper[1] = (timeKeeper[1] + 1); timeKeeperMax[1] = (timeKeeperMax[1] - 1); if (timeKeeper[1] > 9){ timeKeeper[1] = 0; timeKeeper[2] = (timeKeeper[2] + 1); if (timeKeeper[2] > 9){ timeKeeper[2] = 0; timeKeeper[3] = (timeKeeper[3] + 1); if (timeKeeper[3] > 5){ timeKeeper[3] = 0; timeKeeper[4] = (timeKeeper[4] + 1); if (timeKeeper[4] > 9){ timeKeeper[4] = 0; timeKeeper[5] = (timeKeeper[5] + 1); this.nr6_txt.text = timeKeeper[5]; }; this.nr5_txt.text = timeKeeper[4]; }; this.nr4_txt.text = timeKeeper[3]; }; this.nr3_txt.text = timeKeeper[2]; }; this.nr2_txt.text = timeKeeper[1]; _currTime = (_currTime + 1); if (_currTime > _timeToBeat){ ChangeTimeToBeat(); }; }; if (timeKeeperMax[1] < 0){ if ((((((timeKeeperMax[4] == 0)) && ((timeKeeperMax[3] == 0)))) && ((timeKeeperMax[2] == 0)))){ timeKeeperMax[1] = 0; TimesUp(); } else { timeKeeperMax[2] = (timeKeeperMax[2] - 1); timeKeeperMax[1] = 9; if ((((timeKeeperMax[4] == 0)) && ((timeKeeperMax[3] <= 1)))){ _addSoundFunction(new snd_timeTick()); }; }; if (timeKeeperMax[2] < 0){ timeKeeperMax[2] = 9; timeKeeperMax[3] = (timeKeeperMax[3] - 1); if (timeKeeperMax[3] < 0){ timeKeeperMax[3] = 5; timeKeeperMax[4] = (timeKeeperMax[4] - 1); if (timeKeeperMax[4] == 0){ ShowHurryTimer(); }; if (timeKeeperMax[4] < 0){ timeKeeperMax[4] = 9; timeKeeperMax[5] = (timeKeeperMax[5] - 1); this.hurryTimer.nr6_txt.text = timeKeeperMax[5]; }; this.hurryTimer.nr5_txt.text = timeKeeperMax[4]; }; this.hurryTimer.nr4_txt.text = timeKeeperMax[3]; }; this.hurryTimer.nr3_txt.text = timeKeeperMax[2]; }; this.hurryTimer.nr2_txt.text = timeKeeperMax[1]; } public function NewCoinsGained(_arg1:Number):void{ var _local2:*; _coinsCollected = (_coinsCollected + 1); this.coins.coins_txt.text = TurnIntoDigit(_coinsCollected); _local2 = 1; while (_local2 <= _arg1) { DecreaseTimeByOne(); _local2++; }; } private function ShowStageClearPlate():void{ var _local1:Boolean; var _local2:Boolean; var _local3:Boolean; var _local4:Boolean; var _local5:Boolean; var _local6:Boolean; var _local7:Boolean; var _local8:Boolean; var _local9:Number; var _local10:Number; var _local11:*; var _local12:*; clearInterval(_plateShowTimer); _local1 = true; _local2 = true; _local3 = true; _local4 = false; _local5 = false; _local6 = false; _local7 = false; _local8 = false; if (_DataHandler.LevelTimes[(_currentLevel - 1)] != 0){ if (_DataHandler.LevelTimes[(_currentLevel - 1)] <= _times.GetTimeBronze){ _local1 = false; }; if (_DataHandler.LevelTimes[(_currentLevel - 1)] <= _times.GetTimeSilver){ _local2 = false; }; if (_DataHandler.LevelTimes[(_currentLevel - 1)] <= _times.GetTimeGold){ _local3 = false; }; }; _local9 = ((((timeKeeper[1] + (timeKeeper[2] * 10)) + (timeKeeper[3] * 100)) + (timeKeeper[4] * 1000)) + (timeKeeper[5] * 10000)); if ((((_local9 <= _times.GetTimeBronze)) && (_local1))){ _local4 = true; }; if ((((_local9 <= _times.GetTimeSilver)) && (_local2))){ _local5 = true; }; if ((((_local9 <= _times.GetTimeGold)) && (_local3))){ _local6 = true; _addSoundFunction(new voice_perfect()); }; if (_local9 < _DataHandler.LevelTimes[(_currentLevel - 1)]){ _local8 = true; _DataHandler.LevelTimes[(_currentLevel - 1)] = _local9; }; if (_DataHandler.LevelTimes[(_currentLevel - 1)] == 0){ _DataHandler.LevelTimes[(_currentLevel - 1)] = _local9; }; if (_coinsCollected >= _times.Coins){ if (_DataHandler.LevelCoins[(_currentLevel - 1)] == false){ _local7 = true; _DataHandler.LevelCoins[(_currentLevel - 1)] = true; }; }; this.stage_cleared_plate.time_txt.text = ((((((((("TIME: " + timeKeeper[5]) + "") + timeKeeper[4]) + ":") + timeKeeper[3]) + "") + timeKeeper[2]) + ":") + timeKeeper[1]); if (_local8){ this.stage_cleared_plate.record_txt.text = "NEW PERSONAL RECORD"; } else { this.stage_cleared_plate.record_txt.text = ""; }; _local10 = 1; if (_local4){ this.stage_cleared_plate[("medal_" + _local10)].gotoAndPlay("bronze"); _local10 = (_local10 + 1); }; if (_local5){ this.stage_cleared_plate[("medal_" + _local10)].gotoAndPlay("silver"); _local10 = (_local10 + 1); }; if (_local6){ this.stage_cleared_plate[("medal_" + _local10)].gotoAndPlay("gold"); _local10 = (_local10 + 1); }; if (_local7){ this.stage_cleared_plate[("medal_" + _local10)].gotoAndPlay("coin"); _local10 = (_local10 + 1); }; if (_local10 <= 4){ if (_local10 > 2){ this.stage_cleared_plate.medal_txt.text = "NEW MEDALS EARNED"; } else { if (_local10 == 2){ this.stage_cleared_plate.medal_txt.text = "NEW MEDAL EARNED"; } else { this.stage_cleared_plate.medal_txt.text = ""; }; }; _local11 = 1; while (_local11 < _local10) { this.stage_cleared_plate[("medal_" + _local11)].visible = true; _local11++; }; _local12 = _local10; while (_local12 <= 4) { this.stage_cleared_plate[("medal_" + _local12)].visible = false; _local12++; }; }; this.stage_cleared_plate.visible = true; _plateShowTimer = setInterval(ShowStageClear1, 500); } private function ShowTutorial():void{ clearInterval(_plateShowTimer); this.tutorial_info.visible = true; this.tutorial_info.addEventListener(MouseEvent.MOUSE_UP, TutorialClickPerformed); } private function GlideInHurryTimer():void{ this.hurryTimer.x = (this.hurryTimer.x - 4); if (this.hurryTimer.x <= 0){ this.hurryTimer.x = 0; clearInterval(_hurryTimer); }; } private function ShowHurryTimer():void{ this.hurryTimer.visible = true; _hurryTimer = setInterval(GlideInHurryTimer, 33); this.hurryTimer.nr6_txt.text = timeKeeperMax[5]; this.hurryTimer.nr5_txt.text = timeKeeperMax[4]; this.hurryTimer.nr4_txt.text = timeKeeperMax[3]; this.hurryTimer.nr3_txt.text = timeKeeperMax[2]; this.hurryTimer.nr2_txt.text = timeKeeperMax[1]; } public function ShowPauseMenu():void{ this.pause_info.visible = true; } private function SetTimeToBeat():void{ if (_currGoal == "gold"){ SetTimeGoal("gold", _times.GetTimeGold); } else { if (_currGoal == "silver"){ SetTimeGoal("silver", _times.GetTimeSilver); } else { if (_currGoal == "bronze"){ SetTimeGoal("bronze", _times.GetTimeBronze); } else { if (((!((_DataHandler.LevelTimes[(_currentLevel - 1)] == 0))) && ((_currGoal == "record")))){ SetTimeGoal("record", _DataHandler.LevelTimes[(_currentLevel - 1)]); } else { if (_currGoal == "nothing"){ HideTimeGoal(); }; }; }; }; }; } private function SetTimeGoal(_arg1:String, _arg2:Number):void{ this.current_goal_plate.goal_symb.gotoAndPlay(_arg1); this.current_goal_plate.goal_text.gotoAndStop(_arg1); _timeToBeat = _arg2; ShowTimeToBeat(); } private function ChangeTimeToBeat():void{ if (_currGoal == "gold"){ _currGoal = "silver"; if ((((_DataHandler.LevelTimes[(_currentLevel - 1)] <= _times.GetTimeSilver)) && (!((_DataHandler.LevelTimes[(_currentLevel - 1)] == 0))))){ _currGoal = "record"; }; } else { if (_currGoal == "silver"){ _currGoal = "bronze"; if ((((_DataHandler.LevelTimes[(_currentLevel - 1)] <= _times.GetTimeBronze)) && (!((_DataHandler.LevelTimes[(_currentLevel - 1)] == 0))))){ _currGoal = "record"; }; } else { if (_currGoal == "bronze"){ _currGoal = "record"; } else { if (_currGoal == "record"){ _currGoal = "nothing"; }; }; }; }; SetTimeToBeat(); } private function ShowGameOverText(_arg1:String):void{ this.game_over_animation.gotoAndStop(_arg1); clearInterval(_plateShowTimer); this.cover_game_over.addEventListener(MouseEvent.MOUSE_UP, ShowMenu); } } }//package code
Section 79
//key_registration (code.key_registration) package code { import flash.events.*; import flash.display.*; import flash.utils.*; public class key_registration extends Sprite { private var _gainUpPress:Number;// = 0 private var _rightPressed:Boolean;// = false private var _pauseFunc:Function; private var _leftPressed:Boolean;// = false private var _canPause:Boolean;// = false private var _upPressed:Boolean;// = false private var _restartFunc:Function; private var _upLocked:Boolean;// = false public function key_registration(_arg1, _arg2:Function, _arg3:Function){ _rightPressed = false; _leftPressed = false; _upPressed = false; _upLocked = false; _canPause = false; _gainUpPress = 0; super(); _restartFunc = _arg2; _pauseFunc = _arg3; _arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); _arg1.addEventListener(KeyboardEvent.KEY_UP, keyUpListener); } public function get UpPressedAir():Boolean{ return (_upPressed); } public function get LeftPressed():Boolean{ return (_leftPressed); } public function CanPause(_arg1:Boolean):void{ _canPause = _arg1; } public function RemoveHandlers(_arg1):void{ _arg1.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); _arg1.removeEventListener(KeyboardEvent.KEY_UP, keyUpListener); } private function keyUpListener(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case 38: UpLost(); break; case 87: UpLost(); break; case 37: _leftPressed = false; break; case 65: _leftPressed = false; break; case 39: _rightPressed = false; break; case 68: _rightPressed = false; break; case 82: if (_canPause){ _restartFunc(); }; break; case 80: if (_canPause){ _pauseFunc(); _canPause = false; }; break; }; } private function keyDownListener(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case 38: UpHit(); break; case 87: UpHit(); break; case 37: _leftPressed = true; break; case 65: _leftPressed = true; break; case 39: _rightPressed = true; break; case 68: _rightPressed = true; break; }; } private function UpLost():void{ _upPressed = false; _upLocked = false; } public function get RightPressed():Boolean{ return (_rightPressed); } private function GainUpPress():void{ clearInterval(_gainUpPress); if (_upPressed){ _upLocked = false; }; } public function CanPauseAgain():void{ _canPause = true; } public function get UpPressed():Boolean{ if (_upLocked){ return (false); }; if (_upPressed){ clearInterval(_gainUpPress); _gainUpPress = setInterval(GainUpPress, 200); _upLocked = true; return (true); }; return (_upPressed); } private function UpHit():void{ _upPressed = true; } } }//package code
Section 80
//levelTimes (code.levelTimes) package code { public class levelTimes { private var _coins:Number; private var _t1:Number; private var _record:Number; private var _t2:Number; private var _t3:Number; public function levelTimes(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){ _t1 = _arg1; _t2 = _arg2; _t3 = _arg3; _coins = _arg4; } public function get Coins():Number{ return (_coins); } public function get GetTimeBronze():Number{ return (_t3); } public function get GetTimeGold():Number{ return (_t1); } public function set SetTimeRecord(_arg1:Number):void{ _record = _arg1; } public function get GetTimeRecord():Number{ return (_record); } public function get GetTimeSilver():Number{ return (_t2); } } }//package code
Section 81
//m_worldShapeAdder (code.m_worldShapeAdder) package code { import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class m_worldShapeAdder extends Sprite { private var lastBodyFixed:b2Body; private var _coins:Number; private var itemsMC:Sprite; private var sndFunction:Function; private var objectsSMC:Sprite; private var objectsMC:Sprite; private var _collisionShape:Number;// = 1 public function m_worldShapeAdder(_arg1:Sprite, _arg2:Sprite, _arg3:MovieClip, _arg4:Function){ objectsMC = new Sprite(); objectsSMC = new Sprite(); itemsMC = new Sprite(); _collisionShape = 1; super(); objectsMC = _arg1; objectsSMC = _arg2; itemsMC = _arg3; sndFunction = _arg4; } private function AddRevoluteMotor(_arg1:b2World, _arg2:b2Body, _arg3:b2Body, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number){ var _local8:b2Vec2; var _local9:b2RevoluteJointDef; _local8 = new b2Vec2(); _local9 = new b2RevoluteJointDef(); _local8.Set(_arg4, _arg5); _local9.motorSpeed = _arg6; _local9.maxMotorTorque = _arg7; _local9.enableMotor = true; _local9.Initialize(_arg2, _arg3, _local8); _arg1.CreateJoint(_local9); } private function AddLimitedJoint(_arg1:b2World, _arg2:b2Body, _arg3:b2Body, _arg4:Number, _arg5:Number, _arg6:Number){ var _local7:b2Vec2; var _local8:b2RevoluteJointDef; _local7 = new b2Vec2(); _local8 = new b2RevoluteJointDef(); _local7.Set(_arg4, _arg5); _local8.lowerAngle = (-(_arg6) / (180 / Math.PI)); _local8.upperAngle = (_arg6 / (180 / Math.PI)); _local8.enableLimit = true; _local8.Initialize(_arg2, _arg3, _local7); _arg1.CreateJoint(_local8); } public function AddGroundBox(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{ var _local7:b2Body; var _local8:b2BodyDef; var _local9:b2PolygonDef; _local9 = new b2PolygonDef(); _local9.SetAsBox((_arg5 / 60), (_arg6 / 60)); _local9.friction = 1; _local9.density = 0; _local9.filter.categoryBits = _collisionShape; _local9.filter.maskBits = _collisionShape; _local8 = new b2BodyDef(); _local8.position.Set(_arg2, _arg3); _local8.angle = _arg4; _local7 = _arg1.CreateBody(_local8); _local7.CreateShape(_local9); _local7.SetMassFromShapes(); lastBodyFixed = _local7; } private function AddWorldItem(_arg1:b2Body, _arg2:String, _arg3:Number, _arg4:Number, _arg5:Number):void{ var _local6:worldItem; switch (_arg2){ case "coin1": _coins = (_coins + 1); break; case "coin2": _coins = (_coins + 1); break; case "coin3": _coins = (_coins + 1); break; }; _local6 = new worldItem(_arg1, _arg2, _arg5, sndFunction); _local6.x = (_arg3 * 30); _local6.y = (_arg4 * 30); itemsMC.addChild(_local6); } private function AddRevoluteJoint(_arg1:b2World, _arg2:b2Body, _arg3:b2Body, _arg4:Number, _arg5:Number){ var _local6:b2Vec2; var _local7:b2RevoluteJointDef; _local6 = new b2Vec2(); _local7 = new b2RevoluteJointDef(); _local6.Set(_arg4, _arg5); _local7.Initialize(_arg2, _arg3, _local6); _arg1.CreateJoint(_local7); } public function AddGroundCircle(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:b2Body; var _local6:b2BodyDef; var _local7:b2CircleDef; _local7 = new b2CircleDef(); _local7.radius = (_arg4 / 30); _local7.restitution = 0.2; _local7.friction = 1; _local7.density = 0; _local7.filter.categoryBits = _collisionShape; _local7.filter.maskBits = _collisionShape; _local6 = new b2BodyDef(); _local6.position.Set(_arg2, _arg3); _local5 = _arg1.CreateBody(_local6); _local5.CreateShape(_local7); _local5.SetMassFromShapes(); lastBodyFixed = _local5; } private function AddRevoluteGearMotor(_arg1:b2World, _arg2:b2Body, _arg3:b2Body, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):b2RevoluteJoint{ var _local8:b2Vec2; var _local9:b2RevoluteJointDef; _local8 = new b2Vec2(); _local9 = new b2RevoluteJointDef(); _local8.Set(_arg4, _arg5); _local9.motorSpeed = _arg6; _local9.maxMotorTorque = _arg7; _local9.enableMotor = true; _local9.Initialize(_arg2, _arg3, _local8); return ((_arg1.CreateJoint(_local9) as b2RevoluteJoint)); } public function AddDynamicBox(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):void{ var _local7:b2Body; var _local8:b2BodyDef; var _local9:b2PolygonDef; _local9 = new b2PolygonDef(); _local9.SetAsBox((_arg5 / 60), (_arg6 / 60)); _local9.density = 1; _local9.friction = 1; _local9.restitution = 0.2; _local9.filter.categoryBits = _collisionShape; _local9.filter.maskBits = _collisionShape; _local8 = new b2BodyDef(); _local8.position.x = _arg2; _local8.position.y = _arg3; _local8.angle = _arg4; _local8.userData = new grayModel_b(); _local8.userData.width = _arg5; _local8.userData.height = _arg6; objectsMC.addChild(_local8.userData); _local8.userData.touching = false; _local8.userData.touchBody = b2Body; _local8.userData.hitTestMC = new grayModel_b(); _local8.userData.hitTestMC.width = _arg5; _local8.userData.hitTestMC.height = _arg6; objectsSMC.addChild(_local8.userData.hitTestMC); _local7 = _arg1.CreateBody(_local8); _local7.CreateShape(_local9); _local7.SetMassFromShapes(); _local7.SetUserData(_local8.userData); _local7.SetBullet(true); _local7.WakeUp(); lastBodyFixed = _local7; } private function AddRevoluteGearJoint(_arg1:b2World, _arg2:b2Body, _arg3:b2Body, _arg4:Number, _arg5:Number):b2RevoluteJoint{ var _local6:b2Vec2; var _local7:b2RevoluteJointDef; _local6 = new b2Vec2(); _local7 = new b2RevoluteJointDef(); _local6.Set(_arg4, _arg5); _local7.Initialize(_arg2, _arg3, _local6); return ((_arg1.CreateJoint(_local7) as b2RevoluteJoint)); } private function SetCustomModel(_arg1:String):void{ lastBodyFixed.m_userData.width = 100; lastBodyFixed.m_userData.height = 100; lastBodyFixed.m_userData.gotoAndStop(_arg1); } public function AddGroundPolygon_special1(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Array):void{ var _local6:b2Body; var _local7:b2BodyDef; var _local8:*; var _local9:*; _local8 = new b2PolygonDef(); _local8.vertexCount = _arg5.length; _local9 = 0; while (_local9 < _arg5.length) { _local8.vertices[_local9] = new b2Vec2(_arg5[_local9][0], _arg5[_local9][1]); _local9++; }; _local8.friction = 5; _local8.density = 0; _local8.restitution = 0.8; _local8.filter.categoryBits = _collisionShape; _local8.filter.maskBits = _collisionShape; _local7 = new b2BodyDef(); _local7.position.Set(_arg2, _arg3); _local7.angle = _arg4; _local6 = _arg1.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); lastBodyFixed = _local6; } public function AddGroundPolygon(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Array):void{ var _local6:b2Body; var _local7:b2BodyDef; var _local8:*; var _local9:*; _local8 = new b2PolygonDef(); _local8.vertexCount = _arg5.length; _local9 = 0; while (_local9 < _arg5.length) { _local8.vertices[_local9] = new b2Vec2(_arg5[_local9][0], _arg5[_local9][1]); _local9++; }; _local8.friction = 1; _local8.density = 0; _local8.filter.categoryBits = _collisionShape; _local8.filter.maskBits = _collisionShape; _local7 = new b2BodyDef(); _local7.position.Set(_arg2, _arg3); _local7.angle = _arg4; _local6 = _arg1.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); lastBodyFixed = _local6; } public function CreateLevel(_arg1:b2World, _arg2:Number):b2Body{ var _local3:b2Body; var _local4:b2Body; var _local5:b2PrismaticJointDef; var _local6:b2PulleyJointDef; var _local7:b2GearJointDef; var _local8:b2RevoluteJoint; var _local9:b2RevoluteJoint; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Body; var _local15:b2Body; var _local16:b2Body; var _local17:b2Body; var _local18:b2Body; var _local19:b2Body; var _local20:b2Body; var _local21:b2Body; var _local22:b2Body; var _local23:b2Body; var _local24:b2Body; var _local25:*; var _local26:*; var _local27:*; var _local28:b2Body; var _local29:b2Body; var _local30:b2Body; var _local31:b2Body; var _local32:b2Body; var _local33:b2Body; var _local34:b2Body; var _local35:b2Body; var _local36:b2Body; _local4 = _arg1.GetGroundBody(); _local5 = new b2PrismaticJointDef(); _local6 = new b2PulleyJointDef(); _local7 = new b2GearJointDef(); _coins = 0; if (_arg2 == 1){ AddGroundPolygon(_arg1, -32, 3, 0, new Array([1, 6], [-1, 6], [-1, -7], [1, -7])); AddGroundBox(_arg1, -24, 8, 0, 420, 60); AddGroundBox(_arg1, -16.5, 7, 0, 150, 60); AddGroundBox(_arg1, -13.5, 6.5, 0, 90, 90); AddGroundCircle(_arg1, -12, 7, 60); AddGroundBox(_arg1, -6.5, 10, 0, 330, 60); AddGroundBox(_arg1, -11, 8, 0, 60, 60); AddGroundBox(_arg1, -2, 6, 0, 60, 180); AddGroundBox(_arg1, 1, 4, 0, 120, 60); AddGroundPolygon(_arg1, 14, 8, 0, new Array([13, 5], [-11, -3], [-11, -5], [13, 3])); AddGroundBox(_arg1, 32, 12, 0, 300, 60); AddGroundBox(_arg1, 36, 10, 0, 60, 60); AddGroundBox(_arg1, -46, -3, 0, 808, 22); AddGroundPolygon(_arg1, 32, 11, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); _local14 = AddStartPosition(_arg1, -27, 7); AddWorldItem(_local14, "sj", -6, 8.3, 10); AddWorldItem(_local14, "coin1", -14, 4.3, 0); AddWorldItem(_local14, "coin1", -12.5, 4.3, 0); AddWorldItem(_local14, "coin1", 6.6, 3.5, 0); AddWorldItem(_local14, "coin1", 12.5, 5.5, 0); AddWorldItem(_local14, "coin1", 18.5, 7.5, 0); AddWorldItem(_local14, "coin1", 24.5, 9.5, 0); AddWorldItem(_local14, "random", -57, -4.1, 0); }; if (_arg2 == 2){ AddGroundBox(_arg1, -6, -3, 0, 60, 304); AddGroundBox(_arg1, 0, 2, 0, 354, 60); AddGroundCircle(_arg1, 8, 3, 90); AddGroundBox(_arg1, 6.1, 1, 0, 66, 60); AddGroundBox(_arg1, 7.1, 1, 0, 56, 60); AddGroundBox(_arg1, 11.8, 4, 0.829, 208, 52); AddGroundBox(_arg1, 14.1, 5.9, 0.585, 162, 58); AddGroundBox(_arg1, 17.2, 7.5, 0.332, 150, 60); AddGroundBox(_arg1, 20.7, 8, 0, 186, 60); AddGroundBox(_arg1, 24, 7.4, -0.323, 142, 60); AddGroundBox(_arg1, 26.7, 5.7, -0.777, 114, 60); AddGroundBox(_arg1, 28.4, 3, -1.248, 140, 60); AddGroundBox(_arg1, 18.9, 7.4, 0.175, 90, 32); AddGroundBox(_arg1, 22.1, 7.2, -0.148, 86, 20); AddGroundBox(_arg1, 25.1, 6.2, -0.55, 70, 20); AddGroundBox(_arg1, 27.3, 4.2, 0.55, 26, 66); AddGroundBox(_arg1, 28.2, 1.1, 0.166, 20, 86); AddGroundBox(_arg1, 29, -3, 0, 60, 382); AddGroundBox(_arg1, 28, -9.3, -0.471, 34, 78); AddGroundBox(_arg1, 26.2, -11, 0.471, 90, 32); AddGroundBox(_arg1, 27, -12, 0, 240, 60); AddGroundBox(_arg1, 30, -1, 0, 60, 660); AddGroundBox(_arg1, 20, -11, 0, 60, 420); AddGroundPolygon(_arg1, 20.2, -3.5, 0, new Array([0.8, 1.5], [-1.2, -0.5], [0.8, -2.3])); AddGroundBox(_arg1, 16, -17, 0, 180, 60); AddGroundPolygon(_arg1, 14, -19, 0, new Array([-1, 2.4], [-1, -2], [1, -0.1], [1, 1.2])); AddGroundBox(_arg1, 25, -17, 0, 120, 120); AddGroundBox(_arg1, 33, -16, 0, 540, 60); AddGroundBox(_arg1, 36.5, -17.3, 0, 330, 42); AddGroundBox(_arg1, 6, -24, 0, 1140, 60); AddGroundBox(_arg1, 25.4, -24, 0, 36, 60); AddGroundBox(_arg1, 23, -20.3, -0.48, 34, 78); AddGroundBox(_arg1, 21.9, -21.8, 0.812, 78, 30); AddGroundBox(_arg1, 20.4, -22.9, 0.463, 120, 32); AddGroundBox(_arg1, 29.2, -20.4, 0.785, 330, 60); AddGroundPolygon(_arg1, -6, -22.4, 0, new Array([-1, -1.5], [1, -1.5], [1, 1.4], [-1, 0.4])); AddGroundPolygon(_arg1, -6, -17.5, 0, new Array([-1, 1.6], [-1, -1.5], [1, -0.5], [1, 1.5])); AddGroundBox(_arg1, -6, -8.9, 0, 60, 446); AddGroundBox(_arg1, -6, 4.4, 0, 60, 364); AddGroundBox(_arg1, -8, 10, 0, 180, 60); AddGroundBox(_arg1, -12, -12.7, 0, 60, 738); AddGroundPolygon(_arg1, -14, 0, 0, new Array([3, 1], [-4, 1], [-4, 0], [1, -2], [3, -2])); AddGroundBox(_arg1, 20, 9, 0, 660, 60); AddGroundBox(_arg1, 5.5, 5.9, 0.785, 322, 26); AddGroundBox(_arg1, 35, 18, 0, 360, 60); AddGroundBox(_arg1, 41.2, 18, 0, 48, 60); AddGroundBox(_arg1, -6, 14.7, 0, 60, 258); AddGroundBox(_arg1, -14, -28, 0, 180, 60); AddGroundBox(_arg1, -19.7, -25.8, -0.785, 174, 62); AddGroundPolygon(_arg1, -22.1, -23.6, 0, new Array([1.1, 0.6], [-0.9, 0.6], [-0.9, -0.4], [-0.1, -1.2])); AddGroundBox(_arg1, -17.2, -28, 0, 48, 60); AddGroundBox(_arg1, -29, 5.1, 0, 60, 306); AddGroundBox(_arg1, -27, 10, 0, 120, 60); AddGroundPolygon(_arg1, -29, 0, 0, new Array([1, 0], [-1, 1], [-1, -1])); AddGroundPolygon(_arg1, -11, -28, 0, new Array([2, 1], [-1, 1], [0, -1])); AddGroundPolygon(_arg1, 40, -18, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); _local14 = AddStartPosition(_arg1, 0, 1); AddWorldItem(_local14, "cg", 27.3, -4.5, 180); AddWorldItem(_local14, "cg", 30, 16.3, 180); AddWorldItem(_local14, "cg", 39, -14.3, 0); AddWorldItem(_local14, "cg", -12, -26, 0); AddWorldItem(_local14, "coin1", -3, 3.7, 0); AddWorldItem(_local14, "coin1", -1, 3.7, 0); AddWorldItem(_local14, "coin1", 1, 3.7, 0); AddWorldItem(_local14, "coin1", 15.5, 5, 0); AddWorldItem(_local14, "coin1", 25.2, 5, 0); AddWorldItem(_local14, "coin1", 25.9, -10, 0); AddWorldItem(_local14, "coin1", 12, -20, 0); AddWorldItem(_local14, "coin1", -6, -20, 0); AddWorldItem(_local14, "coin1", 22, -12, 0); AddWorldItem(_local14, "coin1", 22, -16.6, 0); AddWorldItem(_local14, "coin1", 22, -14.4, 0); AddWorldItem(_local14, "coin2", -26.7, 7.7, 0); AddWorldItem(_local14, "coin1", -17, -1.2, 0); AddWorldItem(_local14, "coin1", -14, -2.4, 0); AddWorldItem(_local14, "coin1", -22, -20, 0); AddWorldItem(_local14, "coin1", -22, -21.8, 0); AddWorldItem(_local14, "coin1", 28, -24, 0); AddWorldItem(_local14, "coin1", 30, -22, 0); AddWorldItem(_local14, "coin1", 32, -20, 0); AddWorldItem(_local14, "coin1", 20.7, 6.3, 0); AddWorldItem(_local14, "coin1", 21, -21, 0); AddWorldItem(_local14, "coin1", -4, -20, 0); AddWorldItem(_local14, "coin1", -2, -20, 0); AddWorldItem(_local14, "coin1", -8, -20, 0); AddWorldItem(_local14, "coin1", -10, -20, 0); AddWorldItem(_local14, "coin1", -9, -17, 0); AddWorldItem(_local14, "coin1", -9, -13, 0); AddWorldItem(_local14, "coin1", -9, -9, 0); AddWorldItem(_local14, "coin1", -9, -5, 0); AddWorldItem(_local14, "coin1", -9, -1, 0); AddWorldItem(_local14, "cg", -9, -22.3, 0); AddWorldItem(_local14, "cg", -14, -4, 180); AddWorldItem(_local14, "sj", -23, 3.1, 20); AddDynamicBox(_arg1, -10.4, -16, 0, 36, 20); lastBodyFixed.SetForceSleep(); SetCustomModel("shack1_lvl2"); AddDynamicBox(_arg1, -7.6, -16, 0, 36, 20); lastBodyFixed.SetForceSleep(); SetCustomModel("shack1_lvl2"); AddDynamicBox(_arg1, -9, -16, 0, 44, 20); lastBodyFixed.SetForceSleep(); SetCustomModel("shack2_lvl2"); AddDynamicBox(_arg1, -18, 10, 0, 400, 30); _local15 = lastBodyFixed; SetCustomModel("arm_lvl2"); AddDynamicBox(_arg1, -19, 14.4, 0, 140, 20); _local17 = lastBodyFixed; SetCustomModel("motor_lvl2"); AddDynamicBox(_arg1, -19, 12.2, 0.838, 190, 20); _local16 = lastBodyFixed; SetCustomModel("transmition_lvl2"); AddRevoluteJoint(_arg1, _local4, _local15, -12, 10); AddRevoluteJoint(_arg1, _local15, _local16, -20.9, 10); AddRevoluteJoint(_arg1, _local16, _local17, -17, 14.4); AddRevoluteMotor(_arg1, _local4, _local17, -20.9, 14.4, 1, 5000); }; if (_arg2 == 3){ AddGroundBox(_arg1, -18, 15, 0, 702, 60); AddGroundPolygon(_arg1, -5, 8, 0, new Array([0, 8], [-2, 8], [-2, 6], [-1, -4], [0, -4], [1, -2])); AddGroundBox(_arg1, -29, 2, 0, 60, 840); AddGroundCircle(_arg1, 3, 5, 90); AddGroundPolygon(_arg1, 3, 5, 0, new Array([2, 2], [-2, 2], [-6, 0], [-2, -2], [2, -2], [6, 0])); AddGroundBox(_arg1, 7, 5, 0, 778, 60); AddGroundPolygon(_arg1, 22, 4, 0, new Array([-2, 2], [-3, 0], [1, -2], [3, -0.5])); AddGroundPolygon(_arg1, 22, -3, 0, new Array([1, 1], [-3, -1], [1, -1])); AddGroundPolygon(_arg1, 6, -1, 0, new Array([3, 2], [2, 2], [-2, 0], [-1, -2], [3, 0])); AddGroundPolygon(_arg1, 0, -1, 0, new Array([2, 0], [-2, 2], [-3, 2], [-3, 0], [1, -2])); AddGroundBox(_arg1, 3, -2, 0, 118, 60); AddGroundBox(_arg1, 24, -1.5, 0, 60, 300); AddGroundBox(_arg1, 23, -6, 0, 60, 120); AddGroundPolygon(_arg1, 28, -11, 0, new Array([-3, 5], [-4, 5], [-4, 3], [4, -5], [6, -5], [6, -4])); AddGroundBox(_arg1, 27, -11, 0, 60, 60); AddGroundBox(_arg1, 31, -15, 0, 60, 60); AddGroundBox(_arg1, 4, -10, 0, 60, 480); AddGroundBox(_arg1, 33, -19, 0, 60, 180); AddGroundBox(_arg1, 14, -21, 0, 1200, 60); AddGroundBox(_arg1, -18, -21, 0, 482, 60); AddGroundPolygon(_arg1, -8, -20, 0, new Array([1, 2], [-1, 2], [-3, 0], [-3, -2], [3, -2], [3, 0])); AddGroundBox(_arg1, -26.6, -20.3, -0.236, 88, 32); AddGroundBox(_arg1, -28.6, -19.6, -0.454, 100, 34); AddGroundBox(_arg1, -30.2, -18.5, 0.794, 30, 80); AddGroundBox(_arg1, -31.4, -16.8, 0.497, 30, 100); AddGroundBox(_arg1, -32.2, -14.9, 0.244, 30, 100); AddGroundBox(_arg1, -33, 1, 0, 60, 1054); AddGroundPolygon(_arg1, -32, 20, 0, new Array([0, -2], [2, 0], [2, 2], [1, 2], [-2, -1], [-2, -2])); AddGroundBox(_arg1, -29, 21, 0, 60, 60); AddGroundBox(_arg1, 12, 11, 0, 60, 300); AddGroundPolygon(_arg1, 18, 15, 0, new Array([6, 1], [-5, 1], [-5, -1], [5, -1])); AddGroundPolygon(_arg1, 23, 16, Math.PI, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); AddGroundPolygon(_arg1, 6, -10, 0, new Array([-1, 3], [-1, -3], [3, -1], [3, 1])); AddGroundBox(_arg1, 0, -12, 0, 60, 240); AddGroundPolygon(_arg1, -1, -6, 0, new Array([0, 1], [-2, 1], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundBox(_arg1, -2, -3, 0, 60, 120); AddDynamicBox(_arg1, 2, -15, 0, 60, 60); lastBodyFixed.SetForceSleep(); SetCustomModel("secret_lvl3"); AddDynamicBox(_arg1, 17.5, 0.5, 0, 10, 30); SetCustomModel("MB_1"); AddDynamicBox(_arg1, 17.5, 1.5, 0, 12, 30); SetCustomModel("MB_2"); AddDynamicBox(_arg1, 17.5, 2.5, 0, 14, 30); SetCustomModel("MB_3"); AddDynamicBox(_arg1, 17.5, 3.5, 0, 16, 30); SetCustomModel("MB_4"); AddDynamicBox(_arg1, 10.5, -4.5, 0, 14, 30); SetCustomModel("MB_3"); AddDynamicBox(_arg1, 10.5, -3.5, 0, 16, 30); SetCustomModel("MB_4"); AddDynamicBox(_arg1, 10.5, -2.5, 0, 18, 30); SetCustomModel("MB_5"); AddDynamicBox(_arg1, 10.5, -1.5, 0, 20, 30); SetCustomModel("MB_6"); AddDynamicBox(_arg1, -28.5, 16.5, 0, 10, 30); SetCustomModel("MB_1"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -28.5, 17.5, 0, 10, 30); SetCustomModel("MB_1"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -28.5, 18.5, 0, 10, 30); SetCustomModel("MB_1"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -28.5, 19.5, 0, 10, 30); SetCustomModel("MB_1"); lastBodyFixed.SetForceSleep(); AddGroundBox(_arg1, 10.4, 0, 0, 96, 60); _local3 = lastBodyFixed; AddDynamicBox(_arg1, 14.5, -0.5, 0, 210, 30); AddRevoluteJoint(_arg1, _local3, lastBodyFixed, 11.5, -0.5); SetCustomModel("floor1_lvl3"); AddGroundBox(_arg1, 20.6, -5, 0, 96, 60); _local3 = lastBodyFixed; AddDynamicBox(_arg1, 15, -5.5, 0, 300, 30); AddRevoluteJoint(_arg1, _local3, lastBodyFixed, 19.5, -5.5); SetCustomModel("floor2_lvl3"); AddDynamicBox(_arg1, 4.5, 16.5, 0, 354, 30); SetCustomModel("swing_lvl3"); AddRevoluteJoint(_arg1, _local4, lastBodyFixed, 4.5, 16.5); _local14 = AddStartPosition(_arg1, -26, 14); AddWorldItem(_local14, "sj", -10, 11, 10); AddWorldItem(_local14, "cg", 31, -19, 180); AddWorldItem(_local14, "sj", 12, -3.5, -90); AddWorldItem(_local14, "ss", -23, -19.2, -90); AddWorldItem(_local14, "ss", -31, -6, 180); AddWorldItem(_local14, "sj", -3, 9, -173.5); AddWorldItem(_local14, "sj", 2, -13, 180); AddWorldItem(_local14, "coin1", 3, 0.8, 0); AddWorldItem(_local14, "coin1", -2.5, 2.8, 0); AddWorldItem(_local14, "coin1", 8.5, 2.8, 0); AddWorldItem(_local14, "coin1", -4.5, 2.8, 0); AddWorldItem(_local14, "coin1", 10.5, 2.8, 0); AddWorldItem(_local14, "coin2", 22.4, 0, 0); AddWorldItem(_local14, "coin2", 6, -5, 0); AddWorldItem(_local14, "coin1", 23, -9.2, 0); AddWorldItem(_local14, "coin1", 27, -13.2, 0); AddWorldItem(_local14, "coin1", 31, -17.2, 0); AddWorldItem(_local14, "coin1", 4, -19, 0); AddWorldItem(_local14, "coin1", -8, -14, 0); AddWorldItem(_local14, "coin3", 0, -4, 0); AddWorldItem(_local14, "coin3", 2, -4, 0); AddWorldItem(_local14, "coin1", -19, 13.1, 0); AddWorldItem(_local14, "coin1", -20, 13.1, 0); AddWorldItem(_local14, "coin1", -18, 13.1, 0); AddWorldItem(_local14, "coin2", -30, 18, 0); AddWorldItem(_local14, "coin1", -31, 14, 0); AddWorldItem(_local14, "coin1", -31, 11, 0); AddWorldItem(_local14, "coin1", 10, 17.8, 0); AddWorldItem(_local14, "coin1", -1, 17.8, 0); AddWorldItem(_local14, "coin2", 3, 9, 0); AddWorldItem(_local14, "coin1", 2, 9, 0); AddWorldItem(_local14, "coin1", 4, 9, 0); AddWorldItem(_local14, "coin1", -31, 8.1, 0); AddWorldItem(_local14, "coin1", -31, 5, 0); AddWorldItem(_local14, "coin1", -31, 2.1, 0); AddWorldItem(_local14, "coin1", -8, -17, 0); AddWorldItem(_local14, "coin1", -8, -15.6, 0); AddWorldItem(_local14, "coin1", 0, -17, 0); AddWorldItem(_local14, "coin1", -26, -19, 0); AddWorldItem(_local14, "coin1", -30, -16, 0); AddWorldItem(_local14, "coin1", -31, -12, 0); AddWorldItem(_local14, "coin1", 3, 17.8, 0); AddWorldItem(_local14, "coin1", 6, 17.8, 0); }; if (_arg2 == 4){ AddGroundBox(_arg1, -12, 1.5, 0, 60, 450); AddGroundBox(_arg1, -7, 8, 0, 300, 60); AddGroundPolygon(_arg1, -1, 10, 0, new Array([3, 3], [2, 5], [-2, -1], [-1, -3])); AddGroundPolygon(_arg1, 6, 14, 0, new Array([-5, 1], [-4, -1], [4, -1], [6, 1])); AddGroundBox(_arg1, 2, -5, 0, 840, 60); AddGroundPolygon(_arg1, 17, -7, 0, new Array([-1, 3], [-2, 1], [2, -3], [3, -3], [3, -1])); AddGroundPolygon(_arg1, 14, 5, 0, new Array([1, 7], [-1, 5], [-1, -5], [1, -5])); AddGroundPolygon(_arg1, 19, 0, 0, new Array([-1, 2], [-2, 2], [-2, 0], [0, -2], [1, -2], [1, 0])); AddGroundBox(_arg1, 16, 1, 0, 66, 60); AddGroundBox(_arg1, 27.4, -9, 0, 470, 60); AddGroundPolygon(_arg1, 37, -8, 0, new Array([2, 1], [2, 2], [0, 2], [-2, 0], [-2, -2], [-1, -2])); AddGroundPolygon(_arg1, 37, -2, 0, new Array([-1, 2], [-2, 2], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundPolygon(_arg1, 33, 0, 0, new Array([0, 1], [-2, 1], [-2, 0], [0, -2], [1, -2], [1, 0])); AddGroundBox(_arg1, 34.5, -1, 0, 36, 60); AddGroundBox(_arg1, 32, 1.5, 0, 60, 30); AddGroundBox(_arg1, 28, 1.5, 0, 60, 30); AddGroundPolygon(_arg1, 27, 0, 0, new Array([-1, 0], [-1, -2], [0, -2], [2, 0], [2, 1], [0, 1])); AddGroundBox(_arg1, 23, -1, 0, 186, 60); AddGroundBox(_arg1, 38, -5, 0, 60, 64); AddGroundBox(_arg1, 52, -11, 0, 600, 60); AddGroundPolygon(_arg1, 41, -13, 0, new Array([2, 1], [1, 3], [-3, -1], [-1, -2])); AddGroundBox(_arg1, 39, -15, 0, 60, 60); AddGroundBox(_arg1, 35, -21, 0, 58, 420); AddGroundBox(_arg1, 2, 21, 0, 60, 424); AddGroundBox(_arg1, 1.1, 28.6, 0.236, 20, 72); AddGroundBox(_arg1, 0.3, 30.7, 0.489, 20, 108); AddGroundBox(_arg1, -0.5, 32, -0.803, 90, 20); AddGroundBox(_arg1, -2.1, 33.2, -0.471, 112, 20); AddGroundBox(_arg1, -4, 34, -0.253, 94, 20); AddGroundPolygon(_arg1, -9, 35, 0, new Array([-6, 1], [-4, -1], [4, -1], [4, 1])); AddGroundPolygon(_arg1, -6, 15, 0, new Array([-1, 3], [-2, 3], [-2, 1], [0, -1], [1, -1], [1, 1])); AddGroundBox(_arg1, -4.7, 15, 0, 42, 60); AddGroundBox(_arg1, -10.2, 17, 0, 168, 60); AddGroundPolygon(_arg1, -21, -12, 0, new Array([-3, 1], [-3, 0], [6, 0], [7, 1])); AddGroundPolygon(_arg1, -28, 23, 0, new Array([1, 6], [-1, 8], [-1, -5], [0, -10], [1, -10])); AddGroundPolygon(_arg1, -28, -10, 0, new Array([1, 21], [0, 21], [-1, 16], [-1, -12], [1, -12])); AddGroundBox(_arg1, -27.5, 12, 0, 30, 72); AddGroundBox(_arg1, -20, -21, 0, 420, 60); AddGroundBox(_arg1, -34.5, -24.5, 0, 330, 30); AddGroundPolygon(_arg1, -16, -22, Math.PI, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); AddGroundPolygon(_arg1, 32, 6, 0, new Array([-5, 1], [-5, -1], [5, -1], [4, 1])); AddGroundPolygon(_arg1, 39, 9, 0, new Array([2, 3], [-3, -2], [-2, -4], [3, 1], [3, 3])); AddGroundPolygon(_arg1, 51, 11, 0, new Array([11, 1], [-9, 1], [-9, -1], [11, -1])); AddGroundBox(_arg1, 31.5, -15, 0, 150, 60); AddGroundBox(_arg1, -20, 17, 0, 420, 60); AddGroundBox(_arg1, -3.5, 15, 0, 30, 60); AddGroundPolygon(_arg1, -19, 35, 0, new Array([6, -1], [4, 1], [-4, 1], [-4, 0], [-3, -1])); AddGroundPolygon(_arg1, -30, 35, 0, new Array([-2, 1], [-1, -1], [2, -1], [5, 0], [5, 1])); AddGroundPolygon(_arg1, -33, 34, 0, new Array([1, 2], [-2, -1], [-2, -2], [0, -2], [2, 0])); AddGroundPolygon(_arg1, -34, 31, 0, new Array([1, 1], [-1, 1], [-1, -1], [1, -3])); AddGroundBox(_arg1, -32.4, -20.6, -0.785, 32, 82); AddGroundBox(_arg1, -34, -21.5, 0, 60, 30); AddGroundBox(_arg1, -31.5, -19, 0, 30, 60); AddGroundBox(_arg1, -28, -24.5, 0, 60, 30); AddGroundBox(_arg1, -42, -24.5, 0, 118, 30); AddGroundBox(_arg1, -21.5, 3.1, 0, 18, 846); AddGroundPolygon(_arg1, 65, 8, 0, new Array([-2, 4], [-3, 4], [-3, 2], [2, -3], [3, -3], [3, -1])); AddGroundPolygon(_arg1, 69, 6, 0, new Array([2, 1], [-1, 1], [-1, -1], [2, -1])); AddDynamicBox(_arg1, 6.5, 6.5, 0, 330, 30); AddLimitedJoint(_arg1, _local4, lastBodyFixed, 6.5, 6.5, 40); SetCustomModel("swing1_lvl4"); AddDynamicBox(_arg1, 48.5, 4.5, 0, 390, 30); AddLimitedJoint(_arg1, _local4, lastBodyFixed, 48.5, 4.5, 40); SetCustomModel("swing2_lvl4"); AddDynamicBox(_arg1, 62.5, 0.5, 0, 390, 30); AddLimitedJoint(_arg1, _local4, lastBodyFixed, 62.5, 0.5, 40); SetCustomModel("swing2_lvl4"); AddDynamicPolygon(_arg1, 11, 14, 0, new Array([-1, -1], [1, -1], [1, 1])); SetCustomModel("triangle1_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicPolygon(_arg1, 14, 14, (Math.PI / 2), new Array([-1, -1], [1, -1], [1, 1])); SetCustomModel("triangle4_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicPolygon(_arg1, 14, 14, (-(Math.PI) / 2), new Array([-1, -1], [1, -1], [1, 1])); SetCustomModel("triangle3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicPolygon(_arg1, 14, 11, Math.PI, new Array([-1, -1], [1, -1], [1, 1])); SetCustomModel("triangle2_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 12.5, 13.5, 0, 30, 30); SetCustomModel("square1_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 12.5, 14.5, 0, 30, 30); SetCustomModel("square3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 13.5, 12.5, 0, 30, 30); SetCustomModel("square2_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 14.5, 12.5, 0, 30, 30); SetCustomModel("square3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -24.5, 35.5, 0, 30, 30); SetCustomModel("square3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -23.5, 35.5, 0, 30, 30); SetCustomModel("square3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -30.5, 28.5, 0, 30, 30); SetCustomModel("square3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -29.5, 28.5, 0, 30, 30); SetCustomModel("square3_lvl4"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -17.5, -5.5, 0, 210, 30); _local18 = lastBodyFixed; SetCustomModel("elivBottom_lvl4"); AddDynamicBox(_arg1, -17.5, -10.5, 0, 210, 30); _local19 = lastBodyFixed; SetCustomModel("elivTopp_lvl4"); AddDynamicBox(_arg1, -24, 12.5, 0, 125, 150); _local22 = lastBodyFixed; SetCustomModel("elivWeigth_lvl4"); _local14 = AddStartPosition(_arg1, -9, 7); _collisionShape = 2; AddDynamicBox(_arg1, -20.5, -8, 0, 20, 170); _local20 = lastBodyFixed; SetCustomModel("elivSide_lvl4"); AddDynamicBox(_arg1, -14.5, -8, 0, 20, 170); _local21 = lastBodyFixed; SetCustomModel("elivSide_lvl4"); _collisionShape = 1; AddLimitedJoint(_arg1, _local19, _local21, -20.5, -10.4, 0); AddLimitedJoint(_arg1, _local19, _local20, -14.5, -10.4, 0); AddLimitedJoint(_arg1, _local18, _local21, -20.5, -5.5, 0); AddLimitedJoint(_arg1, _local18, _local20, -14.5, -5.5, 0); _local5.Initialize(_local4, _local18, new b2Vec2(-17.5, -5.5), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local10 = new b2Vec2(-24, 11.5); _local11 = new b2Vec2(-17.5, -10.5); _local12 = new b2Vec2(-24, -13); _local13 = new b2Vec2(-17.5, -13); _local6.Initialize(_local22, _local19, _local12, _local13, _local10, _local11, 1); _local6.maxLength1 = 33; _local6.maxLength2 = 33; (_arg1.CreateJoint(_local6) as b2PulleyJoint); _local5.Initialize(_local4, _local22, _local10, new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local19.SetForceSleep(); _local18.SetForceSleep(); _local21.SetForceSleep(); _local20.SetForceSleep(); _local22.SetForceSleep(); AddWorldItem(_local14, "cg", 57, -7, 180); AddWorldItem(_local14, "cg", 35, -13, 0); AddWorldItem(_local14, "cg", -2, 13, 90); AddWorldItem(_local14, "cg", -28, -23, 0); AddWorldItem(_local14, "ss", 0, 27, 180); AddWorldItem(_local14, "ss", 0, 20, 180); AddWorldItem(_local14, "sj", 37, -20, 180); AddWorldItem(_local14, "st", 35, 4, 0); AddWorldItem(_local14, "coin1", 26, -2.7, 0); AddWorldItem(_local14, "coin1", 23, -2.7, 0); AddWorldItem(_local14, "coin1", 20, -2.7, 0); AddWorldItem(_local14, "coin1", 16, -0.7, 0); AddWorldItem(_local14, "coin1", 14, -0.7, 0); AddWorldItem(_local14, "coin2", 30, 4.3, 0); AddWorldItem(_local14, "coin2", 43, 3, 0); AddWorldItem(_local14, "coin2", 68, -1, 0); AddWorldItem(_local14, "coin1", 38, -13, 0); AddWorldItem(_local14, "coin1", 39, -12, 0); AddWorldItem(_local14, "coin1", 41, -10, 0); AddWorldItem(_local14, "coin1", 40, -11, 0); AddWorldItem(_local14, "coin1", 17, -10.7, 0); AddWorldItem(_local14, "coin1", 15, -10.5, 0); AddWorldItem(_local14, "coin1", 13, -10, 0); AddWorldItem(_local14, "coin1", 19, -10.7, 0); AddWorldItem(_local14, "coin1", -17.5, -6.5, 0); AddWorldItem(_local14, "coin1", -18.4, -3.5, 0); AddWorldItem(_local14, "coin1", -19.5, -1.5, 0); AddWorldItem(_local14, "coin1", -18.5, 0.5, 0); AddWorldItem(_local14, "coin1", -17.5, 2.5, 0); AddWorldItem(_local14, "coin1", -16.5, 4.5, 0); AddWorldItem(_local14, "coin1", -15.5, 6.5, 0); AddWorldItem(_local14, "coin1", -16.5, 8.5, 0); AddWorldItem(_local14, "coin1", -17.5, 10.5, 0); AddWorldItem(_local14, "coin1", -28, 33, -90); AddWorldItem(_local14, "coin1", 35, -10.7, 0); AddWorldItem(_local14, "coin1", -12, -6.7, 0); AddWorldItem(_local14, "coin1", -11, 33, -90); AddWorldItem(_local14, "coin1", -10.5, 15.3, 0); AddWorldItem(_local14, "coin1", 2, 5.3, 0); AddWorldItem(_local14, "coin2", 37, -18, 0); AddWorldItem(_local14, "coin3", -28.7, 12, -90); AddWorldItem(_local14, "coin3", 12.1, 12.1, 0); AddWorldItem(_local14, "coin3", 69, 4.3, 0); AddWorldItem(_local14, "coin1", -34, -23, -90); AddWorldItem(_local14, "coin1", -35, -23, -90); AddWorldItem(_local14, "coin1", -36, -23, -90); }; if (_arg2 == 5){ AddGroundPolygon(_arg1, -9, 8, 0, new Array([3, 1], [-3, 1], [-3, -1], [3, -1])); AddGroundPolygon(_arg1, 29, 14, 0, new Array([2, 1], [-3, 1], [-3, -1], [2, -1])); AddGroundPolygon(_arg1, 29, 9, 0, new Array([4, -1], [3, 1], [-5, 1], [-5, 0], [-4, -1])); AddGroundPolygon(_arg1, 34, 10, 0, new Array([2, 1], [0, 2], [-2, 0], [-1, -2])); AddGroundPolygon(_arg1, 35, 14, 0, new Array([1, 3], [-1, 2], [-1, -2], [1, -3])); AddGroundPolygon(_arg1, 34, 18, 0, new Array([2, -1], [-1, 2], [-2, 0], [0, -2])); AddGroundPolygon(_arg1, 29, 19, 0, new Array([4, 1], [-4, 1], [-5, 0], [-5, -1], [3, -1])); AddGroundPolygon(_arg1, -14, 1, 0, new Array([1, 2], [-2, 1], [-2, -1], [3, -1], [3, 1])); AddGroundPolygon(_arg1, -8, 1, 0, new Array([2, 1], [-3, 1], [-3, -1], [2, -1])); AddGroundPolygon(_arg1, -15, 3, 0, new Array([1, 2], [-3, 2], [-3, 1], [-1, -1], [2, 0])); AddGroundPolygon(_arg1, -15, 7, 0, new Array([1, 1], [-1, 1], [-3, -1], [-3, -2], [1, -2])); AddGroundBox(_arg1, -15, 8.5, 0, 60, 30); AddGroundPolygon(_arg1, 28, -10, 0, new Array([4, 1], [-4, 1], [-4, 0], [-3, -1], [5, -1])); AddGroundPolygon(_arg1, 34, -9, 0, new Array([2, 1], [0, 2], [-2, 0], [-1, -2])); AddGroundPolygon(_arg1, 35, -5, 0, new Array([1, 3], [-1, 2], [-1, -2], [1, -3])); AddGroundPolygon(_arg1, 34, -1, 0, new Array([-1, 2], [-2, 0], [0, -2], [2, -1])); AddGroundPolygon(_arg1, 29, 0, 0, new Array([4, 1], [-4, 1], [-5, 0], [-5, -1], [3, -1])); AddGroundPolygon(_arg1, 28, -5, 0, new Array([3, 1], [-2, 1], [-2, -1], [3, -1])); AddGroundPolygon(_arg1, -21, 5, 0, new Array([3, 1], [-2, 1], [-3, -1], [3, -1])); AddGroundPolygon(_arg1, -33, 5, 0, new Array([4, 1], [-3, 1], [-3, -1], [5, -1])); AddGroundPolygon(_arg1, -37, 0, 0, new Array([1, 6], [-1, 6], [-1, -6], [1, -6])); AddGroundBox(_arg1, -15, 14, 0, 60, 300); AddGroundPolygon(_arg1, -17, 18, 0, new Array([1, 1], [-2, 1], [-2, -1], [1, -1])); AddGroundPolygon(_arg1, -27, 18, 0, new Array([6, 1], [-6, 1], [-6, -1], [6, -1])); AddGroundPolygon(_arg1, -40, 18, 0, new Array([3, 1], [-4, 1], [-4, -1], [3, -1])); AddGroundPolygon(_arg1, -49, 17, 0, new Array([3, 2], [2, 2], [-2, 0], [-2, -2], [-1, -2], [3, 0])); AddGroundPolygon(_arg1, -52, 16, 0, new Array([1, 1], [-2, 1], [-2, -1], [1, -1])); AddGroundPolygon(_arg1, -15, -3, 0, new Array([1, 3], [-1, 3], [-1, -3], [1, -3])); AddGroundPolygon(_arg1, -44, 10, 0, new Array([-5, 3], [-6, 3], [-6, 1], [6, -4], [7, -2])); AddGroundPolygon(_arg1, -37, 7, 0, new Array([1, 1], [0, 1], [-1, -1], [1, -1])); AddGroundPolygon(_arg1, -37, -8, 0, new Array([1, 2], [-1, 2], [-1, -2], [1, -2])); AddGroundPolygon(_arg1, -38, -8, (-(Math.PI) / 2), new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); AddDynamicBox(_arg1, -5, 8, 0, 60, 60); SetCustomModel("block2_lvl5"); _local5.Initialize(_local4, lastBodyFixed, new b2Vec2(-5, 8), new b2Vec2(1, 0.2)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); lastBodyFixed.SetHyperSleep(); AddDynamicBox(_arg1, -5, 1, 0, 60, 60); SetCustomModel("block2_lvl5"); _local5.Initialize(_local4, lastBodyFixed, new b2Vec2(-5, 1), new b2Vec2(1, -0.2)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); lastBodyFixed.SetHyperSleep(); AddDynamicBox(_arg1, -18.5, 2.3, 0, 16, 102); SetCustomModel("block3_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -18.5, 0.3, 0, 120, 18); SetCustomModel("block4_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -23.5, 2.3, 0, 16, 102); SetCustomModel("block3_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -23.5, 0.3, 0, 120, 18); SetCustomModel("block4_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -28.5, 2.3, 0, 16, 102); SetCustomModel("block3_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -28.5, 0.3, 0, 120, 18); SetCustomModel("block4_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -33.5, 2.3, 0, 16, 102); SetCustomModel("block3_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -33.5, 0.3, 0, 120, 18); SetCustomModel("block4_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -20, 18, 0, 60, 60); SetCustomModel("block1_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -34, 18, 0, 60, 60); SetCustomModel("block1_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -36, 18, 0, 60, 60); SetCustomModel("block1_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -45, 18, 0, 60, 60); SetCustomModel("block1_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -53.7, 14.5, 0, 20, 30); SetCustomModel("block5_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -53.7, 13.5, 0, 20, 30); SetCustomModel("block5_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -53.7, 12.5, 0, 20, 30); SetCustomModel("block5_lvl5"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -53.7, 11.5, 0, 20, 30); SetCustomModel("block5_lvl5"); lastBodyFixed.SetForceSleep(); _local14 = AddStartPosition(_arg1, -9, 7); AddWorldItem(_local14, "cg", 28, 17, 180); AddWorldItem(_local14, "cg", 28, -8, 0); AddWorldItem(_local14, "st", -2, 4.5, 0); AddWorldItem(_local14, "sj", -11, -3, -20); AddWorldItem(_local14, "ss", -26, 16, -90); AddWorldItem(_local14, "cg", -52, 12, 90); AddWorldItem(_local14, "death", -45, 13.7, 0); AddWorldItem(_local14, "coin1", -5, 6, 0); AddWorldItem(_local14, "coin1", 0, 7, 0); AddWorldItem(_local14, "coin1", 5, 8, 0); AddWorldItem(_local14, "coin1", 10, 9, 0); AddWorldItem(_local14, "coin1", 15, 10, 0); AddWorldItem(_local14, "coin1", 20, 11, 0); AddWorldItem(_local14, "coin2", 33, 14, 0); AddWorldItem(_local14, "coin1", 20, 15, 0); AddWorldItem(_local14, "coin1", 15, 14, 0); AddWorldItem(_local14, "coin1", 10, 13, 0); AddWorldItem(_local14, "coin1", 5, 12, 0); AddWorldItem(_local14, "coin1", 0, 11, 0); AddWorldItem(_local14, "coin1", -5, 10, 0); AddWorldItem(_local14, "coin3", -13, 12.5, 0); AddWorldItem(_local14, "coin1", 25, 12, 0); AddWorldItem(_local14, "coin1", 25, 16, 0); AddWorldItem(_local14, "coin1", -5, 3, 0); AddWorldItem(_local14, "coin1", 0, 2, 0); AddWorldItem(_local14, "coin1", 5, 1, 0); AddWorldItem(_local14, "coin1", 10, 0, 0); AddWorldItem(_local14, "coin1", 15, -1, 0); AddWorldItem(_local14, "coin1", 20, -2, 0); AddWorldItem(_local14, "coin1", 25, -3, 0); AddWorldItem(_local14, "coin2", 33, -5, 0); AddWorldItem(_local14, "coin1", 25, -7, 0); AddWorldItem(_local14, "coin1", 20, -6, 0); AddWorldItem(_local14, "coin1", 15, -5, 0); AddWorldItem(_local14, "coin1", 10, -4, 0); AddWorldItem(_local14, "coin1", 5, -3, 0); AddWorldItem(_local14, "coin1", 0, -2, 0); AddWorldItem(_local14, "coin1", -5, -1, 0); AddWorldItem(_local14, "coin3", -15, -10, 0); AddWorldItem(_local14, "coin3", -33.5, -0.5, 0); AddWorldItem(_local14, "coin3", -18.5, -0.5, 0); AddWorldItem(_local14, "coin1", -26, 3, 0); AddWorldItem(_local14, "coin1", -26, 5, 0); AddWorldItem(_local14, "coin1", -26, 7, 0); AddWorldItem(_local14, "coin2", -35, 16, 0); AddWorldItem(_local14, "coin2", -45, 16, 0); AddWorldItem(_local14, "coin2", -20, 16, 0); }; if (_arg2 == 6){ AddGroundBox(_arg1, -27, 17, 0, 60, 60); _local23 = lastBodyFixed; AddGroundBox(_arg1, 4, 17, 0, 60, 60); _local24 = lastBodyFixed; _local3 = _local23; _local25 = 0; while (_local25 < 10) { AddDynamicBox(_arg1, (-25 + (_local25 * 3)), 17, 0, 105, 20); SetCustomModel("bridge_lvl6"); AddRevoluteJoint(_arg1, _local3, lastBodyFixed, (-26.5 + (_local25 * 3)), 17); _local3 = lastBodyFixed; _local25++; }; AddRevoluteJoint(_arg1, _local24, lastBodyFixed, 3.5, 17); AddGroundBox(_arg1, -31.5, 17, 0, 210, 60); AddGroundBox(_arg1, 7.5, 17, 0, 150, 60); AddDynamicBox(_arg1, 20, 13, 0, 300, 42); SetCustomModel("rotor1_lvl6"); _local3 = lastBodyFixed; AddDynamicBox(_arg1, 20, 13, 0, 42, 300); SetCustomModel("rotor2_lvl6"); AddLimitedJoint(_arg1, _local3, lastBodyFixed, 20, 13, 0); AddRevoluteMotor(_arg1, _local4, _local3, 20, 13, 0.75, 5000); AddGroundBox(_arg1, 33.5, 9, 0, 210, 60); AddGroundBox(_arg1, 36, 4, 0, 60, 240); AddGroundPolygon(_arg1, 40, 6, 0, new Array([1, 6], [-1, 6], [-1, -8], [1, -8])); AddGroundPolygon(_arg1, 39, 14, 0, new Array([-1, 2], [-2, 2], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundBox(_arg1, 36.5, 15, 0, 30, 60); AddGroundBox(_arg1, -40, 20.5, 0, 60, 150); AddGroundBox(_arg1, -40, 4, 0, 60, 840); AddGroundBox(_arg1, -34, 4, 0, 60, 840); AddGroundBox(_arg1, -34.5, -15, 0, 390, 60); AddGroundBox(_arg1, -24, -14.5, 0, 60, 30); AddGroundBox(_arg1, -24.5, -15.5, 0, 210, 30); AddGroundBox(_arg1, -18, -15.5, 0, 60, 30); AddGroundBox(_arg1, -22, 0.5, 0, 240, 30); AddGroundBox(_arg1, -30.5, 0.5, 0, 150, 30); AddGroundBox(_arg1, -23, -0.5, 0, 120, 30); AddGroundBox(_arg1, -15, 0.5, 0, 60, 30); AddGroundPolygon(_arg1, -8, 0, 0, new Array([6, 1], [-6, 1], [-6, -1], [7, -1])); AddGroundPolygon(_arg1, -1, 1, 0, new Array([0, 1], [-1, 0], [0, -2], [1, -1])); AddGroundPolygon(_arg1, 8, -1, 0, new Array([-1, 3], [-2, 1], [1, -2], [2, -2], [2, 0])); AddGroundPolygon(_arg1, 29, -3, 0, new Array([-1, 2], [-2, 2], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundBox(_arg1, 18.5, -2, 0, 510, 60); AddGroundBox(_arg1, 35, -9, 0, 360, 60); AddGroundBox(_arg1, 30, -6.5, 0, 60, 90); AddGroundPolygon(_arg1, 35, -10, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); AddGroundPolygon(_arg1, 8, 4, 0, new Array([1, 2], [-1, 2], [-1, -2], [1, -4])); AddGroundPolygon(_arg1, 7, 9, 0, new Array([1, 1], [-1, 1], [0, -3], [2, -3])); AddGroundBox(_arg1, 7, 12, 0, 60, 120); AddDynamicBox(_arg1, 19.5, -9.5, 0, 300, 20); SetCustomModel("swing1_lvl6"); AddRevoluteJoint(_arg1, _local4, lastBodyFixed, 19.5, -9.5); AddDynamicPolygon(_arg1, 0, 2, 0, new Array([1, 1], [0, 1], [-1, 0], [0, -2], [1, -1])); SetCustomModel("poly1_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicPolygon(_arg1, 6, 2, 0, new Array([0, 1], [-1, 1], [-1, -1], [0, -2], [1, 0])); SetCustomModel("poly2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 2, 2, 0, 60, 60); SetCustomModel("block1_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 4, 2, 0, 60, 60); SetCustomModel("block1_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 31.5, -1.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 32.5, -1.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -38.5, 17.5, 0, 30, 10); SetCustomModel("block3_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -37.5, 17.5, 0, 30, 10); SetCustomModel("block3_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -36.5, 17.5, 0, 30, 10); SetCustomModel("block3_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -35.5, 17.5, 0, 30, 10); SetCustomModel("block3_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -20.5, -15.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -19.5, -15.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -16.5, -15.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -15.5, -15.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -27.5, 0.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -26.5, 0.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -17.5, 0.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -16.5, 0.5, 0, 30, 30); SetCustomModel("block2_lvl6"); lastBodyFixed.SetForceSleep(); _local14 = AddStartPosition(_arg1, -29, 16); AddWorldItem(_local14, "death", 3, -4, 0); AddWorldItem(_local14, "death", -27, -2, 0); AddWorldItem(_local14, "death", -17, -2, 0); AddWorldItem(_local14, "sa", 6, 15.1, 0); AddWorldItem(_local14, "sj", 34, 7, 0); AddWorldItem(_local14, "cg", 38, 11, 180); AddWorldItem(_local14, "sa", 34, 10.9, 180); AddWorldItem(_local14, "cg", -30, -13, 0); AddWorldItem(_local14, "coin1", 5, 13, 0); AddWorldItem(_local14, "coin1", 9, 13, 0); AddWorldItem(_local14, "coin3", 20, 6, 0); AddWorldItem(_local14, "coin3", 20, 20, 0); AddWorldItem(_local14, "coin3", 32, -4, 0); AddWorldItem(_local14, "coin3", 40, -4, 0); AddWorldItem(_local14, "coin1", 38, 3, 0); AddWorldItem(_local14, "coin1", 38, 5, 0); AddWorldItem(_local14, "coin1", 38, 7, 0); AddWorldItem(_local14, "coin1", 9, 21, 0); AddWorldItem(_local14, "coin1", 5, 21, 0); AddWorldItem(_local14, "coin2", -38, 15, 0); AddWorldItem(_local14, "coin1", -37, 5, 0); AddWorldItem(_local14, "coin2", -36, -5, 0); AddWorldItem(_local14, "coin1", -27, -0.7, 0); AddWorldItem(_local14, "coin1", -17, -0.7, 0); AddWorldItem(_local14, "coin1", -16, -14.3, 0); AddWorldItem(_local14, "coin1", -20, -14.3, 0); AddWorldItem(_local14, "coin1", 3, -2, 0); AddWorldItem(_local14, "coin2", 3, 0, 0); AddWorldItem(_local14, "coin3", 3, -1, 0); AddWorldItem(_local14, "coin3", 17, -18, 0); }; if (_arg2 == 7){ AddGroundPolygon(_arg1, -27, 9, 0, new Array([5, 1], [-5, 1], [-5, -1], [5, -1])); AddGroundPolygon(_arg1, -11, 9, 0, new Array([2, 1], [-3, 1], [-3, -1], [2, -1])); AddGroundBox(_arg1, -23, 21, 0, 60, 60); AddGroundBox(_arg1, -13, 21, 0, 60, 60); AddGroundBox(_arg1, -18, 22.5, 0, 144, 30); AddDynamicBox(_arg1, -18, 9, 0, 240, 60); SetCustomModel("box1_lvl7"); _local5.Initialize(_local4, lastBodyFixed, new b2Vec2(-18, 9), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); lastBodyFixed.SetForceSleep(); AddGroundBox(_arg1, -13, 17, 0, 60, 60); AddGroundBox(_arg1, -13, 13, 0, 60, 60); AddGroundBox(_arg1, -23, 17, 0, 60, 60); AddGroundBox(_arg1, -23, 13, 0, 60, 60); AddGroundPolygon(_arg1, -3, 20, 0, new Array([-5, 1], [-4, -1], [4, -1], [4, 1])); AddGroundBox(_arg1, 0, 9, 0, 60, 600); AddGroundBox(_arg1, -8, 7, 0, 60, 480); AddGroundPolygon(_arg1, -2, 16, 0, new Array([1, 1], [-1, 1], [0, -1], [1, -1])); AddGroundPolygon(_arg1, -2, 8, 0, new Array([1, 1], [0, 1], [-1, 0], [0, -1], [1, -1])); AddGroundPolygon(_arg1, -6, 8, 0, new Array([0, 1], [-1, 1], [-1, -1], [0, -1], [1, 0])); AddGroundPolygon(_arg1, -2, 0, 0, new Array([1, 1], [-1, 0], [-1, -1], [1, -1])); AddGroundPolygon(_arg1, -6, 0, 0, new Array([1, 0], [-1, 1], [-1, -1], [1, -1])); AddGroundPolygon(_arg1, -7, 16, 0, new Array([-2, 1], [-2, -1], [1, -1], [2, 1])); _local3 = lastBodyFixed; AddDynamicPolygon(_arg1, -9, 17, 0, new Array([0, 0], [0, -1], [3, -1], [4, 0])); SetCustomModel("poly1_lvl7"); AddRevoluteJoint(_arg1, _local3, lastBodyFixed, -8.5, 16.5); AddDynamicBox(_arg1, -5.2, 17.5, 0, 10, 30); SetCustomModel("box5_lvl7"); AddDynamicBox(_arg1, -5.2, 18.5, 0, 10, 30); SetCustomModel("box5_lvl7"); AddGroundPolygon(_arg1, 2, 12, 0, new Array([2, 1], [-1, 1], [-1, -2])); AddGroundPolygon(_arg1, 10, 12, 0, new Array([6, 1], [-6, 1], [-8, -1], [6, -1])); AddGroundPolygon(_arg1, 18, 12, 0, new Array([1, 1], [-2, 1], [-2, -1], [-1, -2], [1, -2])); AddGroundPolygon(_arg1, 17, -1, 0, new Array([0, 1], [-1, 0], [-1, -2], [0, -2], [2, 0], [2, 1])); AddGroundPolygon(_arg1, 9, -1, 0, new Array([0, 1], [-2, 1], [-2, 0], [0, -2], [1, -2], [1, 0])); AddGroundPolygon(_arg1, 8, 1, 0, new Array([-1, 2], [-1, -1], [1, -1], [1, 0])); AddGroundBox(_arg1, 13, -2, 0, 180, 60); AddGroundBox(_arg1, 18, 5, 0, 60, 300); AddGroundPolygon(_arg1, 13, 7, 0, new Array([0, 2], [-1, 2], [-1, 0], [0, -1], [2, -1], [2, 0])); AddGroundPolygon(_arg1, 14, 5, 0, new Array([1, 0], [1, 1], [-1, 1], [-1, -2])); AddGroundPolygon(_arg1, 5, 7, 0, new Array([0, 2], [-2, 0], [-2, -1], [0, -1], [1, 0], [1, 2])); AddGroundBox(_arg1, 9, 8, 0, 180, 60); AddGroundBox(_arg1, 4, -1.5, 0, 60, 450); AddGroundPolygon(_arg1, 4, -10, 0, new Array([1, 1], [-1, 1], [-1, -1], [3, -1])); AddGroundBox(_arg1, 13, -12, 0, 600, 60); AddGroundBox(_arg1, 15.6, -11.1, 0.253, 92, 20); AddGroundBox(_arg1, 17.7, -10.3, 0.497, 88, 20); AddGroundBox(_arg1, 20.3, -7.7, -0.48, 20, 84); AddGroundBox(_arg1, 21.1, -5.6, -0.227, 20, 76); AddGroundBox(_arg1, 22, 2, 0, 60.8, 780); AddGroundPolygon(_arg1, 20, -10, 0, new Array([1, 3], [-3, -1], [1, -1])); AddGroundPolygon(_arg1, 21, 17, 0, new Array([-1, 2], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundPolygon(_arg1, 18, 18, 0, new Array([2, 1], [-1, 1], [-1, -1], [1, -1])); _local3 = lastBodyFixed; AddDynamicBox(_arg1, 14, 18, 0, 268, 22); SetCustomModel("box2_lvl7"); AddRevoluteJoint(_arg1, _local3, lastBodyFixed, 18, 18); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, 10, 15.4, 0, 10, 142); SetCustomModel("box3_lvl7"); lastBodyFixed.SetForceSleep(); AddGroundPolygon(_arg1, 27, 17, 0, new Array([2, 2], [1, 2], [-2, -1], [-2, -2], [0, -2], [2, 0])); AddGroundBox(_arg1, 30, 18, 0, 60, 60); AddGroundBox(_arg1, 26, -1, 0, 60, 959.9); AddGroundPolygon(_arg1, 25, -19, 0, new Array([0, 2], [-2, 0], [-2, -2], [-1, -2], [2, 1], [2, 2])); AddGroundBox(_arg1, 22.5, -20, 0, 30, 60); AddDynamicBox(_arg1, 24, 15, 0, 59, 59); SetCustomModel("box4_lvl7"); lastBodyFixed.SetForceSleep(); AddGroundBox(_arg1, -14.5, -12, 0, 1050, 60); AddGroundPolygon_special1(_arg1, 21, -13, 0, new Array([-2, 0], [-1, -1], [1, -1], [2, 0])); AddGroundPolygon_special1(_arg1, 11, -13, 0, new Array([-2, 0], [-1, -1], [1, -1], [2, 0])); AddGroundPolygon_special1(_arg1, 1, -13, 0, new Array([-2, 0], [-1, -1], [1, -1], [2, 0])); AddGroundPolygon_special1(_arg1, -9, -13, 0, new Array([-2, 0], [-1, -1], [1, -1], [2, 0])); AddGroundPolygon_special1(_arg1, -19, -13, 0, new Array([-2, 0], [-1, -1], [1, -1], [2, 0])); AddGroundPolygon_special1(_arg1, -29, -13, 0, new Array([-2, 0], [-1, -1], [1, -1], [2, 0])); AddGroundPolygon(_arg1, -29, -14, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); _local14 = AddStartPosition(_arg1, -25, 8); AddWorldItem(_local14, "sj", -13, 19, 68); AddWorldItem(_local14, "at", -4, 16, 0); AddWorldItem(_local14, "death", -4, 12, 0); AddWorldItem(_local14, "death", -4, 4, 0); AddWorldItem(_local14, "cg", 9, 10, 180); AddWorldItem(_local14, "ss", 14, -10, 90); AddWorldItem(_local14, "ss", 10, -10, 90); AddWorldItem(_local14, "cg", 24, -12, 0); AddWorldItem(_local14, "coin1", -18, 7, 0); AddWorldItem(_local14, "coin1", -18, 11, 0); AddWorldItem(_local14, "coin1", -18, 15, 0); AddWorldItem(_local14, "coin1", -18, 19, 0); AddWorldItem(_local14, "coin3", -2, 18, 0); AddWorldItem(_local14, "coin1", -6, 12, 0); AddWorldItem(_local14, "coin1", -2, 12, 0); AddWorldItem(_local14, "coin1", -4, 14, 0); AddWorldItem(_local14, "coin1", -4, 10, 0); AddWorldItem(_local14, "coin1", -4, 8, 0); AddWorldItem(_local14, "coin1", -4, 6, 0); AddWorldItem(_local14, "coin1", -6, 4, 0); AddWorldItem(_local14, "coin1", -2, 4, 0); AddWorldItem(_local14, "coin1", -4, 2.1, 0); AddWorldItem(_local14, "coin1", -4, 0, 0); AddWorldItem(_local14, "coin1", -4, -4, 0); AddWorldItem(_local14, "coin2", -4, -7, 0); AddWorldItem(_local14, "coin3", -4, -10, 0); AddWorldItem(_local14, "coin1", 2, 0, 0); AddWorldItem(_local14, "coin1", 6, 0.1, 0); AddWorldItem(_local14, "coin1", 11, 0, 0); AddWorldItem(_local14, "coin1", 15, 0, 0); AddWorldItem(_local14, "coin1", 13, 0, 0); AddWorldItem(_local14, "coin1", 20, 0, 0); AddWorldItem(_local14, "coin1", 24, 0, 0); AddWorldItem(_local14, "coin3", 24, 20, 0); AddWorldItem(_local14, "coin3", 30, 20, 0); AddWorldItem(_local14, "coin3", 18, 20, 0); AddWorldItem(_local14, "coin3", 11, -24, 0); AddWorldItem(_local14, "coin3", 1, -24, 0); AddWorldItem(_local14, "coin3", -9, -24, 0); AddWorldItem(_local14, "coin3", -19, -24, 0); AddWorldItem(_local14, "coin2", 11, -19, 0); AddWorldItem(_local14, "coin2", 1, -19, 0); AddWorldItem(_local14, "coin2", -9, -19, 0); AddWorldItem(_local14, "coin2", -19, -19, 0); }; if (_arg2 == 8){ AddGroundBox(_arg1, 1, 1, 0, 240, 60); AddDynamicCircle(_arg1, 10, -10, 90); SetCustomModel("circle1_lvl8"); AddRevoluteMotor(_arg1, _local4, lastBodyFixed, 10, -10, 1, 5000); _local3 = lastBodyFixed; AddDynamicBox(_arg1, 16, 1, -0.314, 480, 60); SetCustomModel("box1_lvl8"); _local10 = new b2Vec2(10, -8); _local11 = new b2Vec2(10, 3); _local12 = new b2Vec2(10, -6); _local13 = new b2Vec2(10, -6); _local6.Initialize(_local3, lastBodyFixed, _local12, _local13, _local10, _local11, 1); _local6.maxLength1 = 11; _local6.maxLength2 = 11; (_arg1.CreateJoint(_local6) as b2PulleyJoint); _local3 = lastBodyFixed; AddDynamicCircle(_arg1, 22, -10, 90); SetCustomModel("circle2_lvl8"); AddRevoluteMotor(_arg1, _local4, lastBodyFixed, 22, -10, -1, 5000); _local10 = new b2Vec2(22, -12); _local11 = new b2Vec2(22, -1); _local12 = new b2Vec2(22, -6); _local13 = new b2Vec2(22, -6); _local6.Initialize(lastBodyFixed, _local3, _local12, _local13, _local10, _local11, 1); _local6.maxLength1 = 11; _local6.maxLength2 = 11; (_arg1.CreateJoint(_local6) as b2PulleyJoint); AddGroundBox(_arg1, 34, -2, 0, 420, 60); AddGroundBox(_arg1, 34, -12, 0, 420, 60); AddGroundPolygon(_arg1, 44, -10, 0, new Array([1, 9], [-1, 9], [-1, -7], [0, -8], [1, -8])); AddDynamicCircle(_arg1, 42, -19, 60); SetCustomModel("circle3_lvl8"); AddRevoluteMotor(_arg1, _local4, lastBodyFixed, 42, -19, 1, 5000); _local3 = lastBodyFixed; AddDynamicBox(_arg1, 42, -2, 0, 58, 60); SetCustomModel("box2_lvl8"); _local10 = new b2Vec2(42, -18); _local11 = new b2Vec2(42, -2); _local12 = new b2Vec2(42, -16); _local13 = new b2Vec2(42, -16); _local6.Initialize(_local3, lastBodyFixed, _local12, _local13, _local10, _local11, 0.2); _local6.maxLength1 = 16; _local6.maxLength2 = 16; (_arg1.CreateJoint(_local6) as b2PulleyJoint); _local5.Initialize(_local4, lastBodyFixed, _local11, new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); lastBodyFixed.SetForceSleep(); _local3.SetForceSleep(); AddGroundBox(_arg1, 16, -12, 0, 60, 60); AddGroundBox(_arg1, 0, -12, 0, 300, 60); AddGroundBox(_arg1, 1, -20, 0, 240, 60); AddGroundBox(_arg1, 11, -22, 0, 120, 60); AddGroundBox(_arg1, 19, -24, 0, 120, 60); AddGroundBox(_arg1, 7, -26, 0, 120, 60); AddGroundBox(_arg1, -5, -28, 0, 120, 60); AddGroundBox(_arg1, -12, -16, 0, 60, 720); AddGroundBox(_arg1, -16, -22, 0, 60, 840); AddGroundBox(_arg1, -16, -0.5, 0, 60, 450); AddGroundBox(_arg1, -12, 2.5, 0, 60, 390); AddGroundPolygon(_arg1, -13, 11, 0, new Array([-1, 2], [-2, 2], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundBox(_arg1, -18, 12, 0, 180, 60); AddGroundBox(_arg1, -23, 12, 0, 120, 60); AddGroundBox(_arg1, -24, 10, 0, 60, 60); AddGroundBox(_arg1, -24, -2, 0, 60, 660); AddGroundBox(_arg1, -25, -14, 0, 120, 60); AddGroundBox(_arg1, -14, -37, 0, 180, 60); AddGroundPolygon(_arg1, -25, -15, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); AddDynamicBox(_arg1, -12, -28.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -29.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -30.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -31.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -32.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -33.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -34.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); AddDynamicBox(_arg1, -12, -35.5, 0, 10, 30); SetCustomModel("box3_lvl8"); lastBodyFixed.SetForceSleep(); _local14 = AddStartPosition(_arg1, 0, 0); AddWorldItem(_local14, "st", 28, -14, 0); AddWorldItem(_local14, "sj", -4.5, -15, 0); AddWorldItem(_local14, "sa", 1, -22, 0); AddWorldItem(_local14, "sa", 19, -26, 0); AddWorldItem(_local14, "at", -20, 8, 0); AddWorldItem(_local14, "death", -22, 3, 0); AddWorldItem(_local14, "death", -20, 1, 0); AddWorldItem(_local14, "death", -18, -1, 0); AddWorldItem(_local14, "death", -22, -8, 0); AddWorldItem(_local14, "death", -20, -11, 0); AddWorldItem(_local14, "death", -18, -14, 0); AddWorldItem(_local14, "death", -22, -14, 0); AddWorldItem(_local14, "death", -21, -3, 0); AddWorldItem(_local14, "death", -19, -6, 0); AddWorldItem(_local14, "coin2", -21, 2, 0); AddWorldItem(_local14, "coin3", -19, 0, 0); AddWorldItem(_local14, "coin1", -20, -14, 0); AddWorldItem(_local14, "coin3", -21, -9.5, 0); AddWorldItem(_local14, "coin2", -19, -12.5, 0); AddWorldItem(_local14, "coin2", -22, -6, 0); AddWorldItem(_local14, "coin2", -18, -3, 0); AddWorldItem(_local14, "coin1", -20, -4.5, 0); AddWorldItem(_local14, "coin3", -20, -22, 0); AddWorldItem(_local14, "coin3", 23, 1, 0); AddWorldItem(_local14, "coin3", 9, 1, 0); AddWorldItem(_local14, "coin1", 23, -3, 0); AddWorldItem(_local14, "coin1", 9, -3, 0); AddWorldItem(_local14, "coin1", 42, -4, 0); AddWorldItem(_local14, "coin1", 42, -6, 0); AddWorldItem(_local14, "coin1", 42, -8, 0); AddWorldItem(_local14, "coin1", 42, -10, 0); AddWorldItem(_local14, "coin1", 42, -12, 0); AddWorldItem(_local14, "coin1", 42, -13.9, 0); AddWorldItem(_local14, "coin3", 22, -16, 0); AddWorldItem(_local14, "coin3", 10, -16, 0); AddWorldItem(_local14, "coin1", 16, -14, 0); AddWorldItem(_local14, "coin1", 4, -14, 0); AddWorldItem(_local14, "coin1", 7, -24, 0); AddWorldItem(_local14, "coin1", 15, -26, 0); AddWorldItem(_local14, "coin1", 1, -30, 0); AddWorldItem(_local14, "coin1", -10, -31, 0); AddWorldItem(_local14, "coin1", 11, -24, 0); AddWorldItem(_local14, "coin1", 7, -28, 0); AddWorldItem(_local14, "coin1", -5, -30, 0); }; if (_arg2 == 9){ AddGroundBox(_arg1, -28, 17, 0, 180, 60); AddGroundBox(_arg1, -6.5, 8, 0, 210, 60); AddGroundPolygon(_arg1, -4, 7, 0, new Array([1, 0], [-1, 0], [1, -1])); AddGroundBox(_arg1, -4.9, 7.1, -0.244, 92, 20); AddDynamicBox(_arg1, -17.5, 17.5, 0, 390, 30); SetCustomModel("box2_lvl9"); AddLimitedJoint(_arg1, _local4, lastBodyFixed, -17.5, 17.5, 55); AddGroundPolygon(_arg1, 13, 6, 0, new Array([2, 4], [0, 4], [-4, 0], [-4, -2], [2, -2])); AddGroundBox(_arg1, 14, 15, 0, 60, 300); AddGroundPolygon(_arg1, 15, 22, 0, new Array([1, 2], [-2, -1], [-2, -2], [0, -2], [2, 0], [2, 2])); AddGroundBox(_arg1, 22, 23, 0, 300, 60); AddGroundBox(_arg1, 18, 8, 0, 60, 600); AddGroundBox(_arg1, 25, -3, 0, 480, 60); AddGroundBox(_arg1, 4.5, -3, 0, 750, 60); AddGroundBox(_arg1, -9, -5, 0, 60, 180); _local26 = -2; while (_local26 <= 3) { AddDynamicBox(_arg1, 9.5, (_local26 + 0.5), 0, 14, 30); SetCustomModel("box1_lvl9"); lastBodyFixed.PutToSleep(); _local26++; }; AddGroundPolygon_special1(_arg1, 30, -1, 0, new Array([1, 1], [-1, 1], [-1, -1], [1, -1])); AddGroundPolygon_special1(_arg1, 24, 21, 0, new Array([1, 1], [-1, 1], [-1, -1], [1, -1])); AddGroundPolygon(_arg1, 8, 22, 0, new Array([0, 2], [-2, 2], [-2, 1], [1, -2], [3, -2], [3, -1])); AddGroundBox(_arg1, -28.5, -1.5, 0, 210, 210); AddGroundBox(_arg1, -19.5, -1, 0, 330, 60); AddGroundBox(_arg1, -18, -14, 0, 60, 600); _local27 = -2; while (_local27 <= 21) { AddDynamicBox(_arg1, 26.7, (_local27 + 0.5), 0, 14, 30); SetCustomModel("box1_lvl9"); lastBodyFixed.SetForceSleep(); _local27++; }; AddGroundPolygon(_arg1, 30, -4, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); _local14 = AddStartPosition(_arg1, -28, 16); AddWorldItem(_local14, "cg", 25.5, 1.2, 180); AddWorldItem(_local14, "sj", 24, 1, 90); AddWorldItem(_local14, "ss", -7, 6, 90); AddWorldItem(_local14, "st", 12, 24, 0); AddWorldItem(_local14, "cg", -33, 1, 90); AddWorldItem(_local14, "cg", -31, -6, 0); AddWorldItem(_local14, "sj", -14, -5, 18); AddWorldItem(_local14, "death", -33, 3, 180); AddWorldItem(_local14, "death", -33, -6, -90); AddWorldItem(_local14, "cg", -22, -23, 0); AddWorldItem(_local14, "coin1", -9, 6, 0); AddWorldItem(_local14, "coin1", -5, 6, 0); AddWorldItem(_local14, "coin1", 16, 3, 0); AddWorldItem(_local14, "coin1", 16, 7, 0); AddWorldItem(_local14, "coin1", 16, 11, 0); AddWorldItem(_local14, "coin1", 16, 15, 0); AddWorldItem(_local14, "coin1", 16, 19, 0); AddWorldItem(_local14, "coin1", 18, 21, 0); AddWorldItem(_local14, "coin1", 22, 21, 0); AddWorldItem(_local14, "coin1", 24, 19, 0); AddWorldItem(_local14, "coin1", 24, 15, 0); AddWorldItem(_local14, "coin1", 24, 11, 0); AddWorldItem(_local14, "coin1", 24, 7, 0); AddWorldItem(_local14, "coin1", 24, 3, 0); AddWorldItem(_local14, "coin1", 30, 1, 0); AddWorldItem(_local14, "coin1", 30, 5.1, 0); AddWorldItem(_local14, "coin1", 30, 9, 0); AddWorldItem(_local14, "coin1", 30, 13, 0); AddWorldItem(_local14, "coin1", 30, 17, 0); AddWorldItem(_local14, "coin1", 30, 21, 0); AddWorldItem(_local14, "coin1", 26, 25, 0); AddWorldItem(_local14, "coin1", 17, 25, 0); AddWorldItem(_local14, "coin3", 17, 27, 0); AddWorldItem(_local14, "coin3", 7, 27, 0); AddWorldItem(_local14, "coin1", 7, 25, 0); AddWorldItem(_local14, "coin2", 12, 10.3, 0); AddWorldItem(_local14, "coin3", 16, -1, 0); AddWorldItem(_local14, "coin1", 1, -1, 0); AddWorldItem(_local14, "coin1", -2, -1, 0); AddWorldItem(_local14, "coin1", -0.5, -1, 0); AddWorldItem(_local14, "coin1", -27, 3, 0); AddWorldItem(_local14, "coin1", -30, 3, 0); AddWorldItem(_local14, "coin1", -28.5, 3, 0); AddWorldItem(_local14, "coin3", -20, -23, -91); AddWorldItem(_local14, "coin3", -7, -5, 0); AddWorldItem(_local14, "coin2", -9, -13, 0); AddWorldItem(_local14, "coin1", -18, -3, 0); AddWorldItem(_local14, "coin1", -16.5, -3, 0); AddWorldItem(_local14, "coin1", -19.5, -3, 0); }; if (_arg2 == 10){ AddGroundBox(_arg1, -5, 10, 0, 300, 60); AddGroundBox(_arg1, 5, 10, 0, 60, 60); AddGroundBox(_arg1, 13.5, 10, 0, 210, 60); _collisionShape = 4; AddDynamicCircle(_arg1, 18, 16, 30); SetCustomModel("invisible"); _local28 = lastBodyFixed; _local8 = AddRevoluteGearJoint(_arg1, _local4, _local28, 18, 16); AddDynamicCircle(_arg1, 20, 16, 30); SetCustomModel("invisible"); _local29 = lastBodyFixed; _local9 = AddRevoluteGearMotor(_arg1, _local4, _local29, 20, 16, 1.5, 2000); _local7.body1 = _local28; _local7.body2 = _local29; _local7.joint1 = _local8; _local7.joint2 = _local9; _local7.ratio = 1; (_arg1.CreateJoint(_local7) as b2GearJoint); _collisionShape = 1; AddDynamicBox(_arg1, 18, 10, 0, 56, 60); SetCustomModel("box3_lvlA"); _local30 = lastBodyFixed; AddDynamicBox(_arg1, 18, 6, 0, 56, 60); SetCustomModel("box3_lvlA"); _local31 = lastBodyFixed; AddDynamicBox(_arg1, 18, 0, 0, 56, 180); SetCustomModel("box4_lvlA"); _local32 = lastBodyFixed; _local5.Initialize(_local4, _local30, new b2Vec2(18, 10), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local5.Initialize(_local4, _local31, new b2Vec2(18, 6), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local5.Initialize(_local4, _local32, new b2Vec2(18, 0), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _collisionShape = 8; AddDynamicBox(_arg1, 18, 13.5, 0, 14, 230); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local30, 18, 10); AddRevoluteJoint(_arg1, lastBodyFixed, _local28, 18, 17); AddDynamicBox(_arg1, 18, 8, 0, 14, 142); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local30, 18, 10); AddRevoluteJoint(_arg1, lastBodyFixed, _local31, 18, 6); AddDynamicBox(_arg1, 18, 4, 0, 14, 144); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local31, 18, 6); AddRevoluteJoint(_arg1, lastBodyFixed, _local32, 18, 2); _collisionShape = 1; AddDynamicBox(_arg1, 20, 10, 0, 56, 60); SetCustomModel("box3_lvlA"); _local33 = lastBodyFixed; AddDynamicBox(_arg1, 20, 6, 0, 56, 60); SetCustomModel("box3_lvlA"); _local34 = lastBodyFixed; AddDynamicBox(_arg1, 20, 2, 0, 56, 60); SetCustomModel("box3_lvlA"); _local35 = lastBodyFixed; AddDynamicBox(_arg1, 20, -2, 0, 56, 60); SetCustomModel("box3_lvlA"); _local36 = lastBodyFixed; _local5.Initialize(_local4, _local33, new b2Vec2(20, 10), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local5.Initialize(_local4, _local34, new b2Vec2(20, 6), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local5.Initialize(_local4, _local35, new b2Vec2(20, 2), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local5.Initialize(_local4, _local36, new b2Vec2(20, -2), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _collisionShape = 8; AddDynamicBox(_arg1, 20, 12.5, 0, 14, 174); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local33, 20, 10); AddRevoluteJoint(_arg1, lastBodyFixed, _local29, 20, 15); AddDynamicBox(_arg1, 20, 8, 0, 14, 142); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local33, 20, 10); AddRevoluteJoint(_arg1, lastBodyFixed, _local34, 20, 6); AddDynamicBox(_arg1, 20, 4, 0, 14, 142); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local34, 20, 6); AddRevoluteJoint(_arg1, lastBodyFixed, _local35, 20, 2); AddDynamicBox(_arg1, 20, 0, 0, 14, 142); SetCustomModel("invisible"); AddRevoluteJoint(_arg1, lastBodyFixed, _local35, 20, 2); AddRevoluteJoint(_arg1, lastBodyFixed, _local36, 20, -2); _collisionShape = 1; AddGroundBox(_arg1, 23, 6, 0, 120, 300); AddGroundBox(_arg1, 24, -1, 0, 60, 120); AddGroundBox(_arg1, 16, 2, 0, 60, 300); AddGroundPolygon(_arg1, 23, -5, 0, new Array([2, 2], [-2, 2], [-2, 0], [-1, -2], [2, 1])); AddGroundPolygon(_arg1, 20, -7, 0, new Array([1, 2], [-1, 2], [-1, -2], [0, -2], [2, 0])); AddGroundBox(_arg1, 15.5, -8, 0, 210, 60); AddDynamicBox(_arg1, 14.5, -4, 0, 150, 60); SetCustomModel("box1_lvlA"); _local5.Initialize(_local4, lastBodyFixed, new b2Vec2(14.5, -4), new b2Vec2(0, 1)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); AddDynamicCircle(_arg1, 2, -9, 60); SetCustomModel("circle1_lvlA"); _local3 = lastBodyFixed; AddRevoluteMotor(_arg1, _local4, _local3, 2, -9, 0.5, 5000); AddDynamicBox(_arg1, 9, -4, 0, 60, 60); SetCustomModel("box2_lvlA"); _local5.Initialize(_local4, lastBodyFixed, new b2Vec2(9, -4), new b2Vec2(1, 0)); (_arg1.CreateJoint(_local5) as b2PrismaticJoint); _local10 = new b2Vec2(9, -4); _local11 = new b2Vec2(1, -9); _local12 = new b2Vec2(-7, -4); _local13 = new b2Vec2(-7, -9); _local6.Initialize(lastBodyFixed, _local3, _local12, _local13, _local10, _local11, 7); _local6.maxLength1 = 29; _local6.maxLength2 = 29; (_arg1.CreateJoint(_local6) as b2PulleyJoint); _local10 = new b2Vec2(9, -4); _local11 = new b2Vec2(1, -9); _local12 = new b2Vec2(11, -4); _local13 = new b2Vec2(11, -9); _local6.Initialize(lastBodyFixed, _local3, _local12, _local13, _local10, _local11, 7); _local6.maxLength1 = 17; _local6.maxLength2 = 17; (_arg1.CreateJoint(_local6) as b2PulleyJoint); _local3.PutToSleep(); lastBodyFixed.PutToSleep(); AddGroundBox(_arg1, 11, -4, 0, 60, 60); AddGroundBox(_arg1, 11, -9, 0, 60, 120); AddGroundBox(_arg1, -7, -9, 0, 60, 120); AddGroundBox(_arg1, -7, -4, 0, 60, 60); AddGroundBox(_arg1, -9, -8, 0, 60, 60); AddGroundBox(_arg1, -10, -4, 0, 120, 60); AddGroundBox(_arg1, -17.5, -6, 0, 150, 60); AddGroundBox(_arg1, -19, -12, 0, 60, 300); AddGroundPolygon(_arg1, -14, -5, 0, new Array([1, 2], [-1, 0], [-1, -2], [0, -2], [2, 0], [2, 2])); AddGroundPolygon(_arg1, 30, 16, 0, new Array([4, 5], [-6, -5], [-6, -7], [-5, -7], [6, 4], [6, 5])); AddGroundBox(_arg1, 35, 23.5, 0, 60, 150); AddGroundPolygon(_arg1, 29, 2, 0, new Array([2, 4], [0, 4], [-2, -2], [-2, -3], [0, -3], [2, 3])); AddGroundPolygon(_arg1, 29, -4, 0, new Array([0, 1], [-2, 1], [-2, 0], [0, -2], [2, -2], [2, -1])); AddGroundPolygon(_arg1, 29, -14, 0, new Array([0, 1], [-1, 0], [-1, -2], [0, -2], [2, 0], [2, 1])); AddGroundBox(_arg1, 30, -9.5, 0, 60, 210); AddGroundBox(_arg1, 28, -2, 0, 60, 60); AddGroundBox(_arg1, 26.5, -15, 0, 90, 60); AddGroundPolygon(_arg1, 34, -14, 0, new Array([1, 1], [-1, 3], [-1, -1], [1, -2])); AddGroundPolygon(_arg1, 31, -19, 0, new Array([2, 4], [-4, -2], [-4, -4], [-3, -4], [4, 3])); AddGroundBox(_arg1, 21, -22, 0, 360, 60); AddGroundPolygon(_arg1, 14, -21, 0, new Array([1, 0], [0, 1], [-2, 1], [1, -2])); AddGroundBox(_arg1, 15, -20.9, -0.471, 96, 20); AddGroundBox(_arg1, 15.9, -21.1, -0.262, 86, 20); AddGroundBox(_arg1, -19.5, -22, 0, 450, 60); AddGroundBox(_arg1, -26, -19, 0, 60, 120); AddGroundPolygon(_arg1, -13, 1, 0, new Array([1, 0], [-1, 2], [-2, 2], [-2, 0], [0, -2], [1, -2])); AddGroundBox(_arg1, -9, 0, 0, 180, 60); AddGroundBox(_arg1, -17.5, 2, 0, 150, 60); AddGroundPolygon(_arg1, -7, 11, Math.PI, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); _local14 = AddStartPosition(_arg1, -7, 9); AddWorldItem(_local14, "sa", -17, -8, 0); AddWorldItem(_local14, "at", 26, -2, 0); AddWorldItem(_local14, "cg", 30, -2, 180); AddWorldItem(_local14, "ss", 19, -20, -90); AddWorldItem(_local14, "sj", -22, -18, 180); AddWorldItem(_local14, "sj", -24, -11, 180); AddWorldItem(_local14, "st", 23, -20, 180); AddWorldItem(_local14, "st", -15, -16, 180); AddWorldItem(_local14, "death", 2, -2, 180); AddWorldItem(_local14, "death", 30, 9, 0); AddWorldItem(_local14, "coin3", 5, 6, 0); AddWorldItem(_local14, "coin1", 18, 8, 0); AddWorldItem(_local14, "coin1", 20, 8, 0); AddWorldItem(_local14, "coin1", 20, 6, 0); AddWorldItem(_local14, "coin1", 18, 6, 0); AddWorldItem(_local14, "coin1", 18, 4, 0); AddWorldItem(_local14, "coin1", 20, 4, 0); AddWorldItem(_local14, "coin1", 20, 2, 0); AddWorldItem(_local14, "coin1", 18, 2, 0); AddWorldItem(_local14, "coin1", 20, 0, 0); AddWorldItem(_local14, "coin1", 20, -2, 0); AddWorldItem(_local14, "coin1", 20, -4, 0); AddWorldItem(_local14, "coin1", 18, -4, 0); AddWorldItem(_local14, "coin1", 18, -6, 0); AddWorldItem(_local14, "coin1", 16, -6, 0); AddWorldItem(_local14, "coin1", 22, 0, 0); AddWorldItem(_local14, "coin1", 22, -2, 0); AddWorldItem(_local14, "coin1", 18, 10, 0); AddWorldItem(_local14, "coin1", 20, 10, 0); AddWorldItem(_local14, "coin1", 20, 12, 0); AddWorldItem(_local14, "coin1", 18, 12, 0); AddWorldItem(_local14, "coin3", 5, 14, 0); AddWorldItem(_local14, "coin3", 7, -7.9, 0); AddWorldItem(_local14, "coin3", -3, -8, 0); AddWorldItem(_local14, "coin3", 2, -15, 0); AddWorldItem(_local14, "coin2", 25, -6, 0); AddWorldItem(_local14, "coin2", 27, -6, 0); AddWorldItem(_local14, "coin2", 30, 7, 0); AddWorldItem(_local14, "coin1", -13, -20, 0); AddWorldItem(_local14, "coin1", -15, -20, 0); AddWorldItem(_local14, "coin1", -17, -20, 0); AddWorldItem(_local14, "coin1", -19, -20, 0); AddWorldItem(_local14, "coin1", -21, -20, 0); AddWorldItem(_local14, "coin1", -23, -20, 0); AddWorldItem(_local14, "coin1", -7, -2, 0); AddWorldItem(_local14, "coin1", -9, -2, 0); AddWorldItem(_local14, "coin1", -11, -2, 0); AddWorldItem(_local14, "coin1", -13, -2, 0); AddWorldItem(_local14, "coin3", 11, -2, 0); AddWorldItem(_local14, "coin3", -24, -2, 0); AddWorldItem(_local14, "coin1", 33, 22, 0); }; return (_local14); } private function AddStartPosition(_arg1:b2World, _arg2:Number, _arg3:Number):b2Body{ var _local4:b2Body; var _local5:*; AddGroundPolygon(_arg1, _arg2, _arg3, 0, new Array([-1.2, 0.2], [-0.7, -0.3], [0.7, -0.3], [1.2, 0.2])); AddDynamicCircle(_arg1, _arg2, (_arg3 - 2), 20); AddCustomSkin(new ballMC()); _local4 = lastBodyFixed; _local4.SetAsPlayer(); _local4.SetBullet(true); _local4.PutToSleep(); _local5 = _local4.GetUserData(); _local5.secretAchievementEarned = false; _local5.newCoinCollected = false; _local5.coinsCollected = 0; _local5.changeGravity = false; _local5.changeGravityTo = 0; _local5.worldOrientation = 0; _local5.slowTime = false; _local5.slowTimeTimer = 0; _local5.slowmotionInitialized = false; _local5.deadStopTouched = false; _local5.superAcceleration = false; _local5.superAccelerationTimer = 0; _local5.superAccelerationTrace = 0; _local5.airTime = false; _local5.airTimeTimer = 0; _local5.airTimeTrace = 0; _local4.SetUserData(_local5); return (_local4); } public function AddDynamicPolygon(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Array):void{ var _local6:b2Body; var _local7:b2BodyDef; var _local8:*; var _local9:*; _local8 = new b2PolygonDef(); _local8.vertexCount = _arg5.length; _local9 = 0; while (_local9 < _arg5.length) { _local8.vertices[_local9] = new b2Vec2(_arg5[_local9][0], _arg5[_local9][1]); _local9++; }; _local8.friction = 0.3; _local8.density = 1; _local8.restitution = 0.3; _local8.filter.categoryBits = _collisionShape; _local8.filter.maskBits = _collisionShape; _local7 = new b2BodyDef(); _local7.position.Set(_arg2, _arg3); _local7.angle = _arg4; _local7.userData = new grayModel_b(); _local7.userData.width = 15; _local7.userData.height = 15; objectsMC.addChild(_local7.userData); _local7.userData.hitTestMC = new grayModel_b(); _local7.userData.hitTestMC.width = 15; _local7.userData.hitTestMC.height = 15; objectsSMC.addChild(_local7.userData.hitTestMC); _local6 = _arg1.CreateBody(_local7); _local6.CreateShape(_local8); _local6.SetMassFromShapes(); _local6.SetUserData(_local7.userData); _local6.WakeUp(); lastBodyFixed = _local6; } public function AddDynamicCircle(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number):void{ var _local5:b2Body; var _local6:b2BodyDef; var _local7:b2CircleDef; _local7 = new b2CircleDef(); _local7.radius = (_arg4 / 30); _local7.restitution = 0.2; _local7.friction = 1; _local7.density = 1; _local7.filter.categoryBits = _collisionShape; _local7.filter.maskBits = _collisionShape; _local6 = new b2BodyDef(); _local6.position.Set(_arg2, _arg3); _local6.userData = new grayModel_c(); _local6.userData.width = (_arg4 * 2); _local6.userData.height = (_arg4 * 2); objectsMC.addChild(_local6.userData); _local6.userData.touching = false; _local6.userData.touchBody = b2Body; _local6.userData.hitTestMC = new grayModel_c(); _local6.userData.hitTestMC.width = (_arg4 * 2); _local6.userData.hitTestMC.height = (_arg4 * 2); _local6.userData.hitTestMC.x = (_arg2 * 30); _local6.userData.hitTestMC.y = (_arg3 * 30); objectsSMC.addChild(_local6.userData.hitTestMC); _local5 = _arg1.CreateBody(_local6); _local5.CreateShape(_local7); _local5.SetMassFromShapes(); _local5.SetUserData(_local6.userData); _local5.WakeUp(); lastBodyFixed = _local5; } private function AddCustomSkin(_arg1):void{ var _local2:*; _local2 = lastBodyFixed.GetUserData(); _arg1.width = _local2.width; _arg1.height = _local2.height; _arg1.x = _local2.x; _arg1.y = _local2.y; _local2.customSkin = _arg1; lastBodyFixed.SetUserData(_local2); objectsMC.addChild(lastBodyFixed.GetUserData().customSkin); } public function get GetCoinsOnMap():Number{ return (_coins); } } }//package code
Section 82
//medalTimes (code.medalTimes) package code { public class medalTimes { private var _times:Array; public function medalTimes(){ _times = new Array([48, 85, 116], [235, 273, 315], [283, 325, 368], [377, 414, 455], [289, 316, 340], [322, 355, 389], [304, 335, 363], [260, 294, 328], [432, 469, 525], [1025, 1099, 1200]); } public function get GetTimes():Array{ return (_times); } } }//package code
Section 83
//menuInterface (code.menuInterface) package code { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.geom.*; public class menuInterface extends MovieClip { public var continue3_btn:SimpleButton; private var _lastLevelMarked:Number;// = 0 public var menu_extra_stuff:MovieClip; public var extra_mc:MovieClip; private var _medalTimes:Array; private var _startLevelFunc:Function; public var new_game_btn:SimpleButton; private var _DataHandler:saveInformation; public var menu_levels:MovieClip; public var continue2_btn:SimpleButton; private var _animateTimer:Number; public var continue_btn:SimpleButton; private var _oldFrame:Number; public var back_btn:SimpleButton; private var _ballLayerBorders:Array; private var _addSoundFunction:Function; private var _SALHandler:saveAndLoad; private var _frameCounted:Number; public var extra_btn:SimpleButton; public var exit_btn:SimpleButton; private var _ballLayers:Array; public var delete_btn:SimpleButton; private var _scrollZone:Number;// = 1 private var _scrollUpdate:Number; private var _addAchievement:Function; public function menuInterface(_arg1:Function, _arg2:saveAndLoad, _arg3:saveInformation, _arg4:Array, _arg5:Boolean, _arg6:Function, _arg7:Function){ _scrollZone = 1; _lastLevelMarked = 0; super(); _startLevelFunc = _arg1; _SALHandler = _arg2; _DataHandler = _arg3; _medalTimes = _arg4; _addSoundFunction = _arg6; _addAchievement = _arg7; if (_SALHandler.OldGameExist() == true){ this.gotoAndStop(1); } else { this.gotoAndStop(2); }; back_btn.addEventListener(MouseEvent.MOUSE_UP, GoBack); new_game_btn.addEventListener(MouseEvent.MOUSE_UP, NewGame); continue_btn.addEventListener(MouseEvent.MOUSE_UP, Continue1); continue2_btn.addEventListener(MouseEvent.MOUSE_UP, Continue2); continue3_btn.addEventListener(MouseEvent.MOUSE_UP, Continue3); delete_btn.addEventListener(MouseEvent.MOUSE_UP, DelOldGame); exit_btn.addEventListener(MouseEvent.MOUSE_UP, ExitToMainMenu); extra_btn.addEventListener(MouseEvent.MOUSE_UP, ToggleExtraMenu); ShowButtons(); if (_arg5){ StartGame(); }; } private function ChangeBallSkin(_arg1:Number):void{ _ballLayers[0] = (_ballLayers[0] + _arg1); if (_ballLayers[0] > _ballLayerBorders[0]){ _ballLayers[0] = 1; } else { if (_ballLayers[0] < 1){ _ballLayers[0] = _ballLayerBorders[0]; }; }; _addSoundFunction(new snd_markLevel()); UpdateBallMC(); } private function GoBack(_arg1:MouseEvent):void{ this.gotoAndStop(_oldFrame); ShowButtons(); } private function HandleMouseWheel(_arg1:MouseEvent):void{ if (_arg1.delta > 0){ ScrollUp(_arg1); } else { ScrollDown(_arg1); }; } private function UpdateLeves():void{ UpdateLevelBar(menu_levels.level_bar_1, 0); UpdateLevelBar(menu_levels.level_bar_2, 1); UpdateLevelBar(menu_levels.level_bar_3, 2); UpdateLevelBar(menu_levels.level_bar_4, 3); UpdateLevelBar(menu_levels.level_bar_5, 4); } private function UpdateBallMC():void{ this.menu_extra_stuff.ball_mc.gotoAndStop(_ballLayers[1]); this.menu_extra_stuff.ball_mc.mc.gotoAndStop(_ballLayers[0]); this.menu_extra_stuff.ballSkin_txt.text = ((("SKIN " + _ballLayers[0]) + " OF ") + _ballLayerBorders[0]); this.menu_extra_stuff.ballColour_txt.text = ((("COLOUR " + _ballLayers[1]) + " OF ") + _ballLayerBorders[1]); } private function GetDigitAt(_arg1:Number, _arg2:Number):String{ var _local3:String; var _local4:String; _local3 = String(_arg2); _local4 = ""; _local4 = _local3.charAt(((_local3.length - 1) - _arg1)); if (_local4 == ""){ _local4 = "0"; }; return (_local4); } private function ExitToMainMenu(_arg1:MouseEvent):void{ this.gotoAndStop(1); ShowButtons(); } private function Continue3(_arg1:MouseEvent):void{ _SALHandler.Load(); StartGame(); } private function Continue2(_arg1:MouseEvent):void{ StartGame(); } private function Continue1(_arg1:MouseEvent):void{ _SALHandler.Load(); StartGame(); } private function DelOldGame(_arg1:MouseEvent):void{ _SALHandler.Delete(); this.gotoAndStop(2); ShowButtons(); } private function StartLevel(_arg1:MovieClip, _arg2:Number):void{ if (_arg1.alpha == 1){ _startLevelFunc(((_scrollZone + _arg2) - 1), true); }; } private function HideExtraMenu():void{ if (this.menu_extra_stuff.x > -180){ this.menu_extra_stuff.x = (this.menu_extra_stuff.x - (1.8 * 2)); this.menu_levels.x = (this.menu_levels.x - (0.8 * 2)); } else { clearInterval(_animateTimer); }; } private function ScrollUp(_arg1:MouseEvent):void{ if (_scrollZone > 1){ _scrollZone = (_scrollZone - 1); }; this.menu_levels.level_scroll.level_scrollbar.y = ((83 / 5) * (_scrollZone - 1)); UpdateLeves(); } private function ToggleExtraMenu(_arg1:Event):void{ clearInterval(_animateTimer); if (this.extra_mc.currentFrame == 1){ extra_mc.gotoAndStop(2); _animateTimer = setInterval(ShowExtraMenu, 10); } else { extra_mc.gotoAndStop(1); _animateTimer = setInterval(HideExtraMenu, 10); }; } private function ChangeBallColour(_arg1:Number):void{ _ballLayers[1] = (_ballLayers[1] + _arg1); if (_ballLayers[1] > _ballLayerBorders[1]){ _ballLayers[1] = 1; } else { if (_ballLayers[1] < 1){ _ballLayers[1] = _ballLayerBorders[1]; }; }; _addSoundFunction(new snd_markLevel()); UpdateBallMC(); } private function Credits(_arg1:MouseEvent):void{ _oldFrame = this.currentFrame; this.gotoAndStop(5); ShowButtons(); } private function UpdateExtras():void{ var _local1:Number; var _local2:*; var _local3:Number; var _local4:*; var _local5:Number; var _local6:*; var _local7:Number; var _local8:*; var _local9:Number; var _local10:*; var _local11:Number; _ballLayers = _DataHandler.BallLayers; _local1 = 0; _local2 = 1; while (_local2 <= 10) { if (_DataHandler.LevelTimes[(_local2 - 1)] > 0){ _local1 = (_local1 + 1); }; _local2++; }; _local3 = 0; _local4 = 1; while (_local4 <= _local1) { if (_DataHandler.LevelTimes[(_local4 - 1)] <= _medalTimes[(_local4 - 1)][2]){ _local3 = (_local3 + 1); }; _local4++; }; _local5 = 0; _local6 = 1; while (_local6 <= _local1) { if (_DataHandler.LevelTimes[(_local6 - 1)] <= _medalTimes[(_local6 - 1)][1]){ _local5 = (_local5 + 1); }; _local6++; }; _local7 = 0; _local8 = 1; while (_local8 <= _local1) { if (_DataHandler.LevelTimes[(_local8 - 1)] <= _medalTimes[(_local8 - 1)][0]){ _local7 = (_local7 + 1); }; _local8++; }; _local9 = 0; _local10 = 1; while (_local10 <= _local1) { if (_DataHandler.LevelCoins[(_local10 - 1)]){ _local9 = (_local9 + 1); }; _local10++; }; if (_local3 >= 10){ _addAchievement(0); }; if (_local5 >= 10){ _addAchievement(1); }; if (_local7 >= 10){ _addAchievement(2); }; if (_local9 >= 10){ _addAchievement(3); }; _local11 = Math.round(((((((_local1 + _local3) + _local5) + _local7) + _local9) / 50) * 100)); menu_extra_stuff.progress_txt.text = (_local11 + " %"); menu_extra_stuff.medal_bronze_txt.text = (_local3 + " / 10"); menu_extra_stuff.medal_silver_txt.text = (_local5 + " / 10"); menu_extra_stuff.medal_gold_txt.text = (_local7 + " / 10"); menu_extra_stuff.medal_coins_txt.text = (_local9 + " / 10"); menu_extra_stuff.skins_txt.text = ((_local7 + 1) + " / 11"); menu_extra_stuff.colours_txt.text = ((_local9 + 1) + " / 11"); _ballLayerBorders = new Array((_local7 + 1), (_local9 + 1)); UpdateBallMC(); if ((((_local1 < 10)) && ((_local1 > 4)))){ _scrollZone = (_local1 - 3); this.menu_levels.level_scroll.level_scrollbar.y = ((83 / 5) * (_scrollZone - 1)); UpdateLeves(); }; } private function AddScrollHandler():void{ this.menu_levels.level_scroll.level_scrollbar.addEventListener(MouseEvent.MOUSE_DOWN, StartDragScroll); this.menu_levels.level_scroll.level_scrollbar.addEventListener(MouseEvent.MOUSE_UP, StopDragScroll); this.menu_levels.level_scroll.level_scrollbar.addEventListener(MouseEvent.MOUSE_OUT, StopDragScroll); this.menu_levels.level_scroll.scrollUp_btn.addEventListener(MouseEvent.MOUSE_DOWN, ScrollUp); this.menu_levels.level_scroll.scrollDown_btn.addEventListener(MouseEvent.MOUSE_DOWN, ScrollDown); } private function OnEnterFrame(_arg1:Event):void{ _frameCounted = (_frameCounted + 1); if (_frameCounted > 1){ _SALHandler.Save(); this.extra_mc.gotoAndStop(1); removeEventListener(Event.ENTER_FRAME, OnEnterFrame); ClearLevelData(); UpdateLeves(); AddScrollHandler(); AddLevelsHandler(); UpdateExtras(); menu_levels.alpha = 1; }; } private function StopDragScroll(_arg1:MouseEvent):void{ clearInterval(_scrollUpdate); this.menu_levels.level_scroll.level_scrollbar.stopDrag(); this.menu_levels.level_scroll.level_scrollbar.y = ((83 / 5) * (_scrollZone - 1)); } private function ShowExtraMenu():void{ if (this.menu_extra_stuff.x < 0){ this.menu_extra_stuff.x = (this.menu_extra_stuff.x + (1.8 * 2)); this.menu_levels.x = (this.menu_levels.x + (0.8 * 2)); } else { clearInterval(_animateTimer); }; } private function StartDragScroll(_arg1:MouseEvent):void{ _scrollUpdate = setInterval(MoveDragScroll, 33); this.menu_levels.level_scroll.level_scrollbar.startDrag(false, new Rectangle(0, 0, 0, 83)); } private function UnmarkLevelBar(_arg1:MovieClip):void{ _arg1.gotoAndStop(1); ClearLevelData(); } private function ScrollDown(_arg1:MouseEvent):void{ if (_scrollZone < 6){ _scrollZone = (_scrollZone + 1); }; this.menu_levels.level_scroll.level_scrollbar.y = ((83 / 5) * (_scrollZone - 1)); UpdateLeves(); } private function StartGame():void{ _frameCounted = 0; this.gotoAndStop(6); ShowButtons(); addEventListener(Event.ENTER_FRAME, OnEnterFrame, false, 0, true); } private function NewGame(_arg1:MouseEvent):void{ if (this.currentFrame == 1){ this.gotoAndStop(4); } else { this.gotoAndStop(3); }; ShowButtons(); } private function ClearLevelData():void{ this.menu_levels.level_picture.gotoAndStop(11); this.menu_levels.time_gold_txt.text = "??:??:?"; this.menu_levels.time_silver_txt.text = "??:??:?"; this.menu_levels.time_bronze_txt.text = "??:??:?"; this.menu_levels.time_record_txt.text = "??:??:?"; } private function ShowButtons():void{ var _local1:Number; back_btn.visible = false; new_game_btn.visible = false; continue_btn.visible = false; continue2_btn.visible = false; continue3_btn.visible = false; delete_btn.visible = false; exit_btn.visible = false; extra_btn.visible = false; _local1 = this.currentFrame; if (_local1 == 1){ continue_btn.visible = true; new_game_btn.visible = true; } else { if (_local1 == 2){ new_game_btn.visible = true; } else { if (_local1 == 3){ continue2_btn.visible = true; } else { if (_local1 == 4){ continue3_btn.visible = true; delete_btn.visible = true; } else { if (_local1 == 5){ back_btn.visible = true; } else { if (_local1 == 6){ exit_btn.visible = true; extra_btn.visible = true; }; }; }; }; }; }; } private function ShowLevelInfo(_arg1:Number):void{ var _local2:Number; this.menu_levels.level_picture.gotoAndStop(_arg1); _local2 = _medalTimes[(_arg1 - 1)][0]; this.menu_levels.time_gold_txt.text = ((((((((GetDigitAt(4, _local2) + "") + GetDigitAt(3, _local2)) + ":") + GetDigitAt(2, _local2)) + "") + GetDigitAt(1, _local2)) + ":") + GetDigitAt(0, _local2)); _local2 = _medalTimes[(_arg1 - 1)][1]; this.menu_levels.time_silver_txt.text = ((((((((GetDigitAt(4, _local2) + "") + GetDigitAt(3, _local2)) + ":") + GetDigitAt(2, _local2)) + "") + GetDigitAt(1, _local2)) + ":") + GetDigitAt(0, _local2)); _local2 = _medalTimes[(_arg1 - 1)][2]; this.menu_levels.time_bronze_txt.text = ((((((((GetDigitAt(4, _local2) + "") + GetDigitAt(3, _local2)) + ":") + GetDigitAt(2, _local2)) + "") + GetDigitAt(1, _local2)) + ":") + GetDigitAt(0, _local2)); _local2 = _DataHandler.LevelTimes[(_arg1 - 1)]; if (_local2 <= 0){ this.menu_levels.time_record_txt.text = "??:??:?"; } else { this.menu_levels.time_record_txt.text = ((((((((GetDigitAt(4, _local2) + "") + GetDigitAt(3, _local2)) + ":") + GetDigitAt(2, _local2)) + "") + GetDigitAt(1, _local2)) + ":") + GetDigitAt(0, _local2)); }; } public function Close():void{ back_btn.removeEventListener(MouseEvent.MOUSE_UP, GoBack); new_game_btn.removeEventListener(MouseEvent.MOUSE_UP, NewGame); continue_btn.removeEventListener(MouseEvent.MOUSE_UP, Continue1); continue2_btn.removeEventListener(MouseEvent.MOUSE_UP, Continue2); continue3_btn.removeEventListener(MouseEvent.MOUSE_UP, Continue3); delete_btn.removeEventListener(MouseEvent.MOUSE_UP, DelOldGame); exit_btn.removeEventListener(MouseEvent.MOUSE_UP, ExitToMainMenu); extra_btn.removeEventListener(MouseEvent.MOUSE_UP, ToggleExtraMenu); this.menu_levels.level_scroll.level_scrollbar.removeEventListener(MouseEvent.MOUSE_DOWN, StartDragScroll); this.menu_levels.level_scroll.level_scrollbar.removeEventListener(MouseEvent.MOUSE_UP, StopDragScroll); this.menu_levels.level_scroll.level_scrollbar.removeEventListener(MouseEvent.MOUSE_OUT, StopDragScroll); this.menu_levels.level_scroll.scrollUp_btn.removeEventListener(MouseEvent.MOUSE_DOWN, ScrollUp); this.menu_levels.level_scroll.scrollDown_btn.removeEventListener(MouseEvent.MOUSE_DOWN, ScrollDown); this.menu_levels.removeEventListener(MouseEvent.MOUSE_WHEEL, HandleMouseWheel); this.menu_levels.level_bar_1.removeEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_1), 1); }); this.menu_levels.level_bar_1.removeEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_1)); }); this.menu_levels.level_bar_2.removeEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_2), 2); }); this.menu_levels.level_bar_2.removeEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_2)); }); this.menu_levels.level_bar_3.removeEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_3), 3); }); this.menu_levels.level_bar_3.removeEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_3)); }); this.menu_levels.level_bar_4.removeEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_4), 4); }); this.menu_levels.level_bar_4.removeEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_4)); }); this.menu_levels.level_bar_5.removeEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_5), 5); }); this.menu_levels.level_bar_5.removeEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_5)); }); this.menu_levels.level_bar_1.removeEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_1), 1); }); this.menu_levels.level_bar_2.removeEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_2), 2); }); this.menu_levels.level_bar_3.removeEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_3), 3); }); this.menu_levels.level_bar_4.removeEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_4), 4); }); this.menu_levels.level_bar_5.removeEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_5), 5); }); this.menu_extra_stuff.ballSkinNext_btn.removeEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallSkin(1); }); this.menu_extra_stuff.ballSkinPrev_btn.removeEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallSkin(-1); }); this.menu_extra_stuff.ballColourNext_btn.removeEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallColour(1); }); this.menu_extra_stuff.ballColourPrev_btn.removeEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallColour(-1); }); } private function AddLevelsHandler():void{ this.menu_levels.addEventListener(MouseEvent.MOUSE_WHEEL, HandleMouseWheel); this.menu_levels.level_bar_1.addEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_1), 1); }); this.menu_levels.level_bar_1.addEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_1)); }); this.menu_levels.level_bar_2.addEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_2), 2); }); this.menu_levels.level_bar_2.addEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_2)); }); this.menu_levels.level_bar_3.addEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_3), 3); }); this.menu_levels.level_bar_3.addEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_3)); }); this.menu_levels.level_bar_4.addEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_4), 4); }); this.menu_levels.level_bar_4.addEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_4)); }); this.menu_levels.level_bar_5.addEventListener(MouseEvent.MOUSE_OVER, function (){ MarkLevelBar(MovieClip(menu_levels.level_bar_5), 5); }); this.menu_levels.level_bar_5.addEventListener(MouseEvent.MOUSE_OUT, function (){ UnmarkLevelBar(MovieClip(menu_levels.level_bar_5)); }); this.menu_levels.level_bar_1.addEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_1), 1); }); this.menu_levels.level_bar_2.addEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_2), 2); }); this.menu_levels.level_bar_3.addEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_3), 3); }); this.menu_levels.level_bar_4.addEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_4), 4); }); this.menu_levels.level_bar_5.addEventListener(MouseEvent.MOUSE_UP, function (){ StartLevel(MovieClip(menu_levels.level_bar_5), 5); }); this.menu_extra_stuff.ballSkinNext_btn.addEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallSkin(1); }); this.menu_extra_stuff.ballSkinPrev_btn.addEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallSkin(-1); }); this.menu_extra_stuff.ballColourNext_btn.addEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallColour(1); }); this.menu_extra_stuff.ballColourPrev_btn.addEventListener(MouseEvent.MOUSE_UP, function (){ ChangeBallColour(-1); }); } private function MoveDragScroll():void{ var _local1:Number; var _local2:Number; var _local3:*; _local1 = (83 / 6); _local2 = this.menu_levels.level_scroll.level_scrollbar.y; _local3 = 1; while (_local3 <= 6) { if (_local2 < (_local1 * (_local3 - 0.5))){ _scrollZone = _local3; _local3 = 7; }; _local3++; }; UpdateLeves(); } public function GetBallLayers():Array{ return (new Array(_ballLayers[0], _ballLayers[1])); } private function UpdateLevelBar(_arg1:MovieClip, _arg2:Number):void{ var _local3:Number; var _local4:Number; _local3 = ((_scrollZone + _arg2) - 1); _arg1.lvl_txt.text = String((_scrollZone + _arg2)); _local4 = _DataHandler.LevelTimes[_local3]; _arg1.gotoAndStop(1); _arg1.alpha = 1; if (_local4 <= 0){ _arg1.time_txt.text = "??:??:?"; if (_DataHandler.LevelTimes[(_local3 - 1)] <= 0){ _arg1.alpha = 0.5; }; } else { _arg1.time_txt.text = ((((((((GetDigitAt(4, _local4) + "") + GetDigitAt(3, _local4)) + ":") + GetDigitAt(2, _local4)) + "") + GetDigitAt(1, _local4)) + ":") + GetDigitAt(0, _local4)); }; if (_local4 <= 0){ _local4 = 3000; }; if (_local4 <= _medalTimes[_local3][2]){ _arg1.medal_bronze.visible = true; } else { _arg1.medal_bronze.visible = false; }; if (_local4 <= _medalTimes[_local3][1]){ _arg1.medal_silver.visible = true; } else { _arg1.medal_silver.visible = false; }; if (_local4 <= _medalTimes[_local3][0]){ _arg1.medal_gold.visible = true; } else { _arg1.medal_gold.visible = false; }; if (_DataHandler.LevelCoins[_local3]){ _arg1.medal_coins.visible = true; } else { _arg1.medal_coins.visible = false; }; } private function MarkLevelBar(_arg1:MovieClip, _arg2:Number):void{ if (_arg1.alpha == 1){ _arg1.gotoAndStop(2); ShowLevelInfo(((_scrollZone + _arg2) - 1)); if (_lastLevelMarked != ((_scrollZone + _arg2) - 1)){ _lastLevelMarked = ((_scrollZone + _arg2) - 1); _addSoundFunction(new snd_markLevel()); }; }; } } }//package code
Section 84
//saveAndLoad (code.saveAndLoad) package code { import flash.net.*; public class saveAndLoad { private var _Data:saveInformation; private var _SO:SharedObject; public function saveAndLoad(_arg1:saveInformation){ _SO = SharedObject.getLocal("BallRoller100"); super(); _Data = _arg1; } public function Load():void{ _Data.LevelTimes = _SO.data.levelTimes; _Data.LevelCoins = _SO.data.levelCoins; _Data.BallLayers = _SO.data.ballLayers; _Data.LevelTutorials = _SO.data.levelTutor; _Data.NGMedalGet = _SO.data.ngMedalGet; } public function Delete():void{ _SO.clear(); _Data.ClearInformation(); } public function Save():void{ _SO.data.oldGameExist = true; _SO.data.levelTimes = _Data.LevelTimes; _SO.data.levelCoins = _Data.LevelCoins; _SO.data.ballLayers = _Data.BallLayers; _SO.data.levelTutor = _Data.LevelTutorials; _SO.data.ngMedalGet = _Data.NGMedalGet; _SO.flush(); _SO.close(); } public function OldGameExist():Boolean{ if (_SO.data.oldGameExist == true){ return (true); }; return (false); } } }//package code
Section 85
//saveInformation (code.saveInformation) package code { public class saveInformation { private var _ballLayers:Array; private var _levelTimes:Array; private var _ngMedalGet:Array; private var _levelTutor:Array; private var _levelCoins:Array; public function saveInformation(){ _ballLayers = new Array(1, 1); _levelTimes = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0); _levelCoins = new Array(false, false, false, false, false, false, false, false, false, false); _levelTutor = new Array(false, false, false, false, true, true, true, true, true, true); _ngMedalGet = new Array(false, false, false, false, false); } public function set LevelTimes(_arg1:Array):void{ _levelTimes = _arg1; } public function get LevelTimes():Array{ return (_levelTimes); } public function get BallLayers():Array{ return (_ballLayers); } public function set BallLayers(_arg1:Array):void{ _ballLayers = _arg1; } public function get LevelTutorials():Array{ return (_levelTutor); } public function set LevelTutorials(_arg1:Array):void{ _levelTutor = _arg1; } public function set NGMedalGet(_arg1:Array):void{ _ngMedalGet = _arg1; } public function get NGMedalGet():Array{ return (_ngMedalGet); } public function set LevelCoins(_arg1:Array):void{ _levelCoins = _arg1; } public function get LevelCoins():Array{ return (_levelCoins); } public function ClearInformation():void{ _ballLayers = new Array(1, 1); _levelTimes = new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0); _levelCoins = new Array(false, false, false, false, false, false, false, false, false, false); _levelTutor = new Array(false, false, false, false, true, true, true, true, true, true); _ngMedalGet = new Array(false, false, false, false, false); } } }//package code
Section 86
//slowmotionEffects (code.slowmotionEffects) package code { import flash.display.*; import flash.utils.*; public class slowmotionEffects extends Sprite { private var _effectTimer:Number; private var _BallHandler:actor_PC; private var _effectMC:Sprite; private var _ballLayers:Array; public function slowmotionEffects(_arg1:Sprite, _arg2:actor_PC, _arg3:Array){ _BallHandler = _arg2; _effectMC = _arg1; _ballLayers = _arg3; } public function AddTrace():void{ var _local1:slowmotionMC; _local1 = new slowmotionMC(_ballLayers); _local1.x = _BallHandler.GetXPos; _local1.y = _BallHandler.GetYPos; _local1.rotation = _BallHandler.GetRotation; _effectMC.addChild(_local1); } public function StopEffect():void{ clearInterval(_effectTimer); } public function StartEffect():void{ AddTrace(); _effectTimer = setInterval(AddTrace, 200); } } }//package code
Section 87
//slowmotionMC (code.slowmotionMC) package code { import flash.display.*; import flash.utils.*; public class slowmotionMC extends MovieClip { private var _timer:Number; public var mc:ballMC; public function slowmotionMC(_arg1:Array){ this.mc.mc.gotoAndStop(_arg1[0]); this.mc.gotoAndStop(_arg1[1]); _timer = setInterval(EventHandler, 100); } private function EventHandler():void{ this.alpha = (this.alpha - 0.1); if (this.alpha <= 0){ clearInterval(_timer); parent.removeChild(this); }; } public function Deconstructor():void{ clearInterval(_timer); } } }//package code
Section 88
//soundController (code.soundController) package code { import flash.media.*; public class soundController { private var mySoundChannel:SoundChannel; private var _musicMuted:Boolean;// = false private var myMusicChannel:SoundChannel; private var stopOldMusic:Boolean; private var myMusic:Sound; private var musicPausePosition:int; public function soundController(){ _musicMuted = false; super(); stopOldMusic = false; } public function UnmuteAllSound():void{ _musicMuted = false; myMusicChannel.soundTransform = new SoundTransform(1, 0); mySoundChannel.soundTransform = new SoundTransform(1, 0); } public function StopMusic():void{ stopOldMusic = false; myMusicChannel.stop(); } public function MuteAllSound():void{ _musicMuted = true; myMusicChannel.soundTransform = new SoundTransform(0, 0); mySoundChannel.soundTransform = new SoundTransform(0, 0); } public function StartMusic(_arg1:String):void{ if (stopOldMusic){ myMusicChannel.stop(); }; stopOldMusic = true; if (_arg1 == "MENU_MUSIC"){ myMusic = new menuMusic(); myMusicChannel = myMusic.play(); }; if (_arg1 == "GAME_MUSIC"){ myMusic = new gameMusic(); myMusicChannel = myMusic.play(); }; if (_musicMuted){ myMusicChannel.soundTransform = new SoundTransform(0, 0); }; } public function AddSound(_arg1:Sound):void{ if (!_musicMuted){ mySoundChannel = _arg1.play(); }; } public function PauseMusic():void{ musicPausePosition = myMusicChannel.position; myMusicChannel.stop(); AddSound(new snd_pauseGame()); } public function ResumeMusic():void{ myMusicChannel = myMusic.play(musicPausePosition); } } }//package code
Section 89
//worldItem (code.worldItem) package code { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.events.*; import flash.display.*; import flash.utils.*; public class worldItem extends MovieClip { private var _rot:Number; private var _type:String; private var _justWaken:Boolean; public var mc:MovieClip; private var _sleepTimer:Number; private var _ballBody:b2Body; private var _addSoundFunc:Function; private var _sleepMode:Boolean; public function worldItem(_arg1:b2Body, _arg2:String, _arg3:Number, _arg4:Function){ _ballBody = _arg1; _type = _arg2; _rot = _arg3; _addSoundFunc = _arg4; addEventListener(Event.ENTER_FRAME, CheckWithBall, false, 0, true); _sleepMode = false; _justWaken = false; if (_arg2 == "cg"){ this.rotation = -(_arg3); } else { this.rotation = _arg3; }; ShowRightMC(_arg2); } private function Superjump():void{ var _local1:b2Vec2; var _local2:Number; var _local3:b2Vec2; var _local4:b2Vec2; _addSoundFunc(new snd_powerUpChange()); _local1 = _ballBody.GetLinearVelocity(); _local1.y = 0; _local1.x = 0; _ballBody.SetLinearVelocity(_local1); _local2 = (_rot * (Math.PI / 180)); _local3 = new b2Vec2(); _local3.Set((Math.sin(_local2) * 20), (-(Math.cos(_local2)) * 20)); _ballBody.WakeUp(); _local4 = new b2Vec2(); _local4 = _ballBody.GetPosition(); _ballBody.ApplyImpulse(_local3, _local4); } private function AirTime():void{ _addSoundFunc(new snd_powerUpEffect()); _ballBody.GetUserData().airTime = true; _ballBody.GetUserData().airTimeTimer = 210; _ballBody.GetUserData().airTimeTrace = 0; _ballBody.SetAngularVelocity(0); } private function SuperAcc():void{ _addSoundFunc(new snd_powerUpEffect()); _ballBody.GetUserData().superAcceleration = true; _ballBody.GetUserData().superAccelerationTimer = 150; } private function GoIntoSleep():void{ this.gotoAndStop(10); _sleepMode = true; _sleepTimer = setInterval(WakeUp, 3000); } private function SecretAchievement():void{ _ballBody.GetUserData().secretAchievementEarned = true; Deconstructor(); } private function ChangeGravity():void{ if (_ballBody.GetUserData().changeGravityTo != _rot){ _addSoundFunc(new snd_powerUpChange()); _ballBody.GetUserData().changeGravity = true; _ballBody.GetUserData().changeGravityTo = _rot; _ballBody.GetUserData().worldOrientation = _rot; }; } private function WakeUp():void{ clearInterval(_sleepTimer); _sleepMode = false; _justWaken = true; } private function SlowTime():void{ _addSoundFunc(new snd_slowmotionStart()); _ballBody.GetUserData().slowTime = true; _ballBody.GetUserData().slowTimeTimer = 250; _ballBody.GetUserData().superAccelerationTrace = 0; _ballBody.GetUserData().slowmotionInitialized = false; } private function DeadStop():void{ var _local1:b2Vec2; _ballBody.GetUserData().airTime = false; _ballBody.GetUserData().superAcceleration = false; _ballBody.GetUserData().slowTime = false; _local1 = _ballBody.GetLinearVelocity(); _local1.y = 0; _local1.x = 0; _ballBody.SetLinearVelocity(_local1); _ballBody.SetAngularVelocity(0); _ballBody.GetUserData().deadStopTouched = true; } public function Deconstructor(){ clearInterval(_sleepTimer); this.gotoAndStop(10); removeEventListener(Event.ENTER_FRAME, CheckWithBall); } private function Superspeed():void{ var _local1:Number; var _local2:b2Vec2; var _local3:b2Vec2; _addSoundFunc(new snd_powerUpChange()); _local1 = (_rot * (Math.PI / 180)); _local2 = new b2Vec2(); _local2.Set((Math.sin(_local1) * 20), (-(Math.cos(_local1)) * 20)); _ballBody.WakeUp(); _local3 = new b2Vec2(); _local3 = _ballBody.GetPosition(); _ballBody.ApplyImpulse(_local2, _local3); } private function ShowRightMC(_arg1:String):void{ switch (_arg1){ case "coin1": this.gotoAndStop(1); break; case "coin2": this.gotoAndStop(2); break; case "coin3": this.gotoAndStop(11); break; case "sj": this.gotoAndStop(3); break; case "sa": this.gotoAndStop(4); break; case "st": this.gotoAndStop(5); break; case "cg": this.gotoAndStop(6); break; case "at": this.gotoAndStop(7); break; case "death": this.gotoAndStop(8); break; case "ss": this.gotoAndStop(9); break; case "random": this.gotoAndStop(12); break; default: Deconstructor(); break; }; } private function CheckWithBall(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Number; if (_sleepMode == false){ _local2 = (_ballBody.GetUserData().customSkin.x - this.x); _local3 = (_ballBody.GetUserData().customSkin.y - this.y); _local4 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); if ((((_local4 <= 20)) && ((_justWaken == false)))){ if ((((((_type == "coin1")) || ((_type == "coin2")))) || ((_type == "coin3")))){ _addSoundFunc(new snd_coinPickup()); _ballBody.GetUserData().newCoinCollected = true; if (_type == "coin1"){ _ballBody.GetUserData().coinsCollected = (_ballBody.GetUserData().coinsCollected + 1); } else { if (_type == "coin2"){ _ballBody.GetUserData().coinsCollected = (_ballBody.GetUserData().coinsCollected + 5); } else { _ballBody.GetUserData().coinsCollected = (_ballBody.GetUserData().coinsCollected + 10); }; }; Deconstructor(); } else { switch (_type){ case "sj": Superjump(); break; case "ss": Superspeed(); break; case "cg": ChangeGravity(); break; case "st": SlowTime(); break; case "death": DeadStop(); break; case "sa": SuperAcc(); break; case "at": AirTime(); break; case "random": SecretAchievement(); break; }; GoIntoSleep(); }; } else { if ((((_justWaken == true)) && ((_local4 >= 25)))){ _justWaken = false; ShowRightMC(_type); }; }; }; } } }//package code
Section 90
//containerMC_2 (RollerBoaster_fla.containerMC_2) package RollerBoaster_fla { import flash.display.*; public dynamic class containerMC_2 extends MovieClip { public function containerMC_2(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package RollerBoaster_fla
Section 91
//current_goal_plate_5 (RollerBoaster_fla.current_goal_plate_5) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class current_goal_plate_5 extends MovieClip { public var goal_symb:MovieClip; public var gnr2_txt:TextField; public var gnr6_txt:TextField; public var gnr4_txt:TextField; public var goal_text:MovieClip; public var gnr5_txt:TextField; public var gnr3_txt:TextField; } }//package RollerBoaster_fla
Section 92
//finishPosition_50 (RollerBoaster_fla.finishPosition_50) package RollerBoaster_fla { import flash.display.*; public dynamic class finishPosition_50 extends MovieClip { public function finishPosition_50(){ addFrameScript(15, frame16, 19, frame20); } function frame16(){ gotoAndPlay(1); } function frame20(){ stop(); } } }//package RollerBoaster_fla
Section 93
//level_bar_26 (RollerBoaster_fla.level_bar_26) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class level_bar_26 extends MovieClip { public var time_txt:TextField; public var medal_silver:MovieClip; public var medal_gold:MovieClip; public var medal_coins:MovieClip; public var lvl_txt:TextField; public var medal_bronze:MovieClip; } }//package RollerBoaster_fla
Section 94
//level_scroll_27 (RollerBoaster_fla.level_scroll_27) package RollerBoaster_fla { import flash.display.*; public dynamic class level_scroll_27 extends MovieClip { public var level_scrollbar:MovieClip; public var scrollDown_btn:SimpleButton; public var scrollUp_btn:SimpleButton; } }//package RollerBoaster_fla
Section 95
//medal_spinning_6 (RollerBoaster_fla.medal_spinning_6) package RollerBoaster_fla { import flash.display.*; public dynamic class medal_spinning_6 extends MovieClip { public function medal_spinning_6(){ addFrameScript(10, frame11, 22, frame23, 34, frame35, 46, frame47, 48, frame49); } function frame23(){ gotoAndPlay("coin"); } function frame11(){ gotoAndPlay("bronze"); } function frame35(){ gotoAndPlay("silver"); } function frame47(){ gotoAndPlay("gold"); } function frame49(){ stop(); } } }//package RollerBoaster_fla
Section 96
//menu_extra_stuff_31 (RollerBoaster_fla.menu_extra_stuff_31) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class menu_extra_stuff_31 extends MovieClip { public var ballColour_txt:TextField; public var ballColourPrev_btn:SimpleButton; public var ballSkinNext_btn:SimpleButton; public var skins_txt:TextField; public var medal_coins_txt:TextField; public var progress_txt:TextField; public var colours_txt:TextField; public var medal_gold_txt:TextField; public var medal_silver_txt:TextField; public var medal_bronze_txt:TextField; public var ballSkinPrev_btn:SimpleButton; public var ballSkin_txt:TextField; public var ballColourNext_btn:SimpleButton; public var ball_mc:ballMC; } }//package RollerBoaster_fla
Section 97
//menu_levels_25 (RollerBoaster_fla.menu_levels_25) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class menu_levels_25 extends MovieClip { public var time_record_txt:TextField; public var time_gold_txt:TextField; public var level_picture:MovieClip; public var level_bar_1:MovieClip; public var level_bar_2:MovieClip; public var level_bar_5:MovieClip; public var level_bar_4:MovieClip; public var level_bar_3:MovieClip; public var level_scroll:MovieClip; public var time_bronze_txt:TextField; public var time_silver_txt:TextField; } }//package RollerBoaster_fla
Section 98
//pause_info_22 (RollerBoaster_fla.pause_info_22) package RollerBoaster_fla { import flash.display.*; public dynamic class pause_info_22 extends MovieClip { public var exit_btn:SimpleButton; public var continue_btn:SimpleButton; } }//package RollerBoaster_fla
Section 99
//sign_coins_8 (RollerBoaster_fla.sign_coins_8) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class sign_coins_8 extends MovieClip { public var coinsTot_txt:TextField; public var coins_txt:TextField; } }//package RollerBoaster_fla
Section 100
//sign_hurryTimer_4 (RollerBoaster_fla.sign_hurryTimer_4) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class sign_hurryTimer_4 extends MovieClip { public var nr5_txt:TextField; public var nr3_txt:TextField; public var nr2_txt:TextField; public var nr4_txt:TextField; public var nr6_txt:TextField; } }//package RollerBoaster_fla
Section 101
//stage_cleared_plate_10 (RollerBoaster_fla.stage_cleared_plate_10) package RollerBoaster_fla { import flash.display.*; import flash.text.*; public dynamic class stage_cleared_plate_10 extends MovieClip { public var time_txt:TextField; public var medal_3:MovieClip; public var medal_4:MovieClip; public var medal_txt:TextField; public var record_txt:TextField; public var medal_1:MovieClip; public var medal_2:MovieClip; } }//package RollerBoaster_fla
Section 102
//startPositionGoText_49 (RollerBoaster_fla.startPositionGoText_49) package RollerBoaster_fla { import flash.display.*; public dynamic class startPositionGoText_49 extends MovieClip { public function startPositionGoText_49(){ addFrameScript(18, frame19); } function frame19(){ stop(); } } }//package RollerBoaster_fla
Section 103
//startPositionReadyText_48 (RollerBoaster_fla.startPositionReadyText_48) package RollerBoaster_fla { import flash.display.*; public dynamic class startPositionReadyText_48 extends MovieClip { public function startPositionReadyText_48(){ addFrameScript(17, frame18); } function frame18(){ stop(); } } }//package RollerBoaster_fla
Section 104
//backgroundLayer (backgroundLayer) package { import flash.display.*; public dynamic class backgroundLayer extends MovieClip { } }//package
Section 105
//ballMC (ballMC) package { import flash.display.*; public dynamic class ballMC extends MovieClip { public var mc:MovieClip; } }//package
Section 106
//gameMusic (gameMusic) package { import flash.media.*; public dynamic class gameMusic extends Sound { } }//package
Section 107
//grayModel_b (grayModel_b) package { import flash.display.*; public dynamic class grayModel_b extends MovieClip { public function grayModel_b(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 108
//grayModel_c (grayModel_c) package { import flash.display.*; public dynamic class grayModel_c extends MovieClip { public function grayModel_c(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 109
//levelDesign (levelDesign) package { import flash.display.*; public dynamic class levelDesign extends MovieClip { public var finishPosition:MovieClip; public var startPosition:MovieClip; } }//package
Section 110
//Main (Main) package { import code.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.events.*; import flash.display.*; import flash.net.*; import flash.text.*; import flash.ui.*; import flash.filters.*; public class Main extends MovieClip { public var KeyHandler:key_registration; public var effectsMC:Sprite; public var DataHandler:saveInformation; public var BallHandler:actor_PC; public var m_iterations:int;// = 10 private var _NGMedalsAvailable:Boolean;// = false public var text_txt:TextField; public var MedalTimeHandler:medalTimes; public var dbgDraw:b2DebugDraw; public var SlowmotionEffectHandler:slowmotionEffects; private var _loadDelay:Number;// = 3 private var _lastLevelPlayed:Number; public var m_timeStep:Number;// = 0.0333333333333333 public var play_btn:SimpleButton; private var _startGameMusicDone:Boolean; public var ng_btn:SimpleButton; public var MenuHandler:menuInterface; public var loadContainerMC:MovieClip; private var _containerMCMask:maskMC; public var backgroundMC:MovieClip; public var m_world:b2World; public var itemsMC:MovieClip; public var SoundHandler:soundController; private var _muteUnmute:ContextMenuItem; public var WorldHandler:m_worldShapeAdder; public var objectsSMC:Sprite; public var load_txt:TextField; public var TimeHandler:levelTimes; public var objectsMC:Sprite; public var SALHandler:saveAndLoad; public var dbgSprite:Sprite; public var containerMC:Sprite; public var FinishHander:finishLine; public var InterfaceHandler:gameInterface; public var CountdownHandler:countdownStart; public function Main(){ containerMC = new Sprite(); objectsMC = new Sprite(); objectsSMC = new Sprite(); effectsMC = new Sprite(); backgroundMC = new backgroundLayer(); itemsMC = new MovieClip(); dbgDraw = new b2DebugDraw(); dbgSprite = new Sprite(); m_iterations = 10; m_timeStep = (1 / 30); MedalTimeHandler = new medalTimes(); DataHandler = new saveInformation(); SALHandler = new saveAndLoad(DataHandler); SoundHandler = new soundController(); _NGMedalsAvailable = false; _loadDelay = 3; super(); addFrameScript(1, frame2); FixContextMenu(); stage.frameRate = 30; stop(); play_btn.visible = false; play_btn.addEventListener(MouseEvent.MOUSE_UP, LoadedPlayBtn, false, 0, true); ng_btn.addEventListener(MouseEvent.MOUSE_UP, NGEvent, false, 0, true); addEventListener(Event.ENTER_FRAME, LoadingInProgress, false, 0, true); } private function GameOver():void{ m_timeStep = (1 / 30); SlowmotionEffectHandler.StopEffect(); KeyHandler.CanPause(false); InterfaceHandler.GameOver(RestartLevel); removeEventListener(Event.ENTER_FRAME, UpdateFrameEvent); SoundHandler.StopMusic(); SoundHandler.AddSound(new snd_gameOver()); } private function ClearEffects():void{ var _local1:MovieClip; var _local2:int; _local2 = effectsMC.numChildren; while (_local2--) { _local1 = MovieClip(effectsMC.getChildAt(_local2)); _local1.Deconstructor(); }; } private function RemoveMenu():void{ MenuHandler.Close(); removeChild(MenuHandler); } private function CreatorLink(_arg1:ContextMenuEvent):void{ var _local2:URLRequest; _local2 = new URLRequest("http://gurt.newgrounds.com/"); navigateToURL(_local2, "_blank"); } private function Countdown(_arg1:Event):void{ if (InterfaceHandler.TutorialDone()){ if (!_startGameMusicDone){ SoundHandler.StartMusic("GAME_MUSIC"); SoundHandler.AddSound(new snd_countDown()); _startGameMusicDone = true; }; if (CountdownHandler.CountdownDone()){ BallHandler.WakeUp(); removeEventListener(Event.ENTER_FRAME, Countdown); addEventListener(Event.ENTER_FRAME, UpdateFrameEvent, false, 0, true); KeyHandler.CanPause(true); }; }; } private function NGEvent(_arg1:Event):void{ var _local2:URLRequest; _local2 = new URLRequest("http://www.newgrounds.com/"); navigateToURL(_local2, "_blank"); } private function StartLevel(_arg1:Number, _arg2:Boolean):void{ var _local3:Boolean; var _local4:b2AABB; var _local5:b2Vec2; var _local6:Boolean; var _local7:*; var _local8:MovieClip; var _local9:MovieClip; var _local10:maskMC; _startGameMusicDone = false; _lastLevelPlayed = _arg1; containerMC = new Sprite(); objectsMC = new Sprite(); objectsSMC = new Sprite(); effectsMC = new Sprite(); backgroundMC = new backgroundLayer(); itemsMC = new MovieClip(); DataHandler.BallLayers = MenuHandler.GetBallLayers(); if (_arg2){ RemoveMenu(); }; WorldHandler = new m_worldShapeAdder(objectsMC, objectsSMC, itemsMC, SoundHandler.AddSound); KeyHandler = new key_registration(stage, RestartLevel, PauseGame); InterfaceHandler = new gameInterface(_arg1, DataHandler, _arg2, DataHandler.LevelCoins[(_arg1 - 1)], GameOver, SoundHandler.AddSound); _local3 = true; addEventListener(Event.ENTER_FRAME, Countdown, false, 0, true); _local4 = new b2AABB(); _local4.lowerBound.Set(-100, -50); _local4.upperBound.Set(100, 50); _local5 = new b2Vec2(0, 10); _local6 = true; m_world = new b2World(_local4, _local5, _local6); _local7 = new b2ContactListener(); m_world.SetContactListener(_local7); backgroundMC.gotoAndStop(_arg1); addChild(backgroundMC); dbgSprite = new Sprite(); dbgSprite.visible = _local3; dbgDraw.m_sprite = dbgSprite; dbgDraw.m_drawScale = 30; dbgDraw.m_fillAlpha = 0; dbgDraw.m_lineThickness = 1; dbgDraw.m_drawFlags = 4294967295; m_world.SetDebugDraw(dbgDraw); _local8 = new levelDesign(); _local9 = new MovieClip(); _local8.gotoAndStop(_arg1); _local9.addChild(_local8); containerMC.addChild(_local9); containerMC.addChild(itemsMC); containerMC.addChild(effectsMC); containerMC.addChild(objectsMC); containerMC.addChild(dbgSprite); CountdownHandler = new countdownStart(_local8.startPosition); FinishHander = new finishLine(_local8.finishPosition, _local8.startPosition); addChild(containerMC); addChild(InterfaceHandler); _containerMCMask = new maskMC(); _local10 = new maskMC(); containerMC.mask = _containerMCMask; backgroundMC.mask = _local10; addChild(_containerMCMask); addChild(_local10); BallHandler = new actor_PC(WorldHandler.CreateLevel(m_world, _arg1)); TimeHandler = new levelTimes(MedalTimeHandler.GetTimes[(_arg1 - 1)][0], MedalTimeHandler.GetTimes[(_arg1 - 1)][1], MedalTimeHandler.GetTimes[(_arg1 - 1)][2], WorldHandler.GetCoinsOnMap); TimeHandler.SetTimeRecord = 25; InterfaceHandler.SetTimes(TimeHandler); InterfaceHandler.SetCoinsTot(WorldHandler.GetCoinsOnMap); BallHandler.SetBackgroundTo(backgroundMC); BallHandler.SetTimeStep(m_timeStep); BallHandler.SetCameraTo(containerMC); BallHandler.SetBallLayers(DataHandler.BallLayers); containerMC.x = 320; containerMC.y = 0; containerMC.scaleX = 1; containerMC.scaleY = 1; SlowmotionEffectHandler = new slowmotionEffects(effectsMC, BallHandler, DataHandler.BallLayers); UpdatePhysic(); } private function UnpauseGame(_arg1:Event):void{ KeyHandler.CanPauseAgain(); InterfaceHandler.pause_info.continue_btn.removeEventListener(MouseEvent.MOUSE_UP, UnpauseGame); InterfaceHandler.pause_info.exit_btn.removeEventListener(MouseEvent.MOUSE_UP, ExitLevel); addEventListener(Event.ENTER_FRAME, UpdateFrameEvent, false, 0, true); InterfaceHandler.HidePauseMenu(); SoundHandler.ResumeMusic(); } private function CheckItemsCollected():void{ var _local1:Number; var _local2:b2Vec2; var _local3:b2Body; if (BallHandler.ChangeGravity){ BallHandler.SetCameraRotation(); _local1 = ((BallHandler.GetOrientation * (Math.PI / 180)) + (Math.PI / 2)); _local2 = new b2Vec2(Math.round((-10 * Math.cos(_local1))), Math.round((10 * Math.sin(_local1)))); m_world.SetGravity(_local2); _local3 = m_world.m_bodyList; while (_local3) { if (_local3.IsDynamic()){ if (_local3.IsForcedToSleep() == false){ _local3.WakeUp(); }; }; _local3 = _local3.m_next; }; }; if (BallHandler.NewCoinsCollected){ InterfaceHandler.NewCoinsGained(BallHandler.GetCoinsCollected); }; if (BallHandler.DeadStopTouched){ SlowmotionEffectHandler.AddTrace(); BallHandler.SetRotationSpeed(); }; if (BallHandler.SecretAchievementCollected){ AddAchievement(4); }; } function frame2(){ stop(); } private function FixContextMenu():void{ var _local1:ContextMenu; var _local2:ContextMenuItem; _local1 = new ContextMenu(); _local1.hideBuiltInItems(); _local1.builtInItems.quality = true; _local2 = new ContextMenuItem("Alexander \"Gurt\" Siigur"); _local2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CreatorLink); _muteUnmute = new ContextMenuItem("Mute sound"); _muteUnmute.separatorBefore = true; _muteUnmute.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, MuteGame); _muteUnmute.enabled = false; _local1.customItems.push(_local2, _muteUnmute); contextMenu = _local1; } private function LoadedPlayBtn(_arg1:Event):void{ play_btn.removeEventListener(MouseEvent.MOUSE_UP, LoadedPlayBtn); gotoAndStop(2); addEventListener(Event.ENTER_FRAME, LoadingDone, false, 0, true); } private function LoadingInProgress(_arg1:Event):void{ var _local2:Number; var _local3:Number; _local2 = loaderInfo.bytesTotal; _local3 = loaderInfo.bytesLoaded; if (_local3 >= _local2){ play_btn.visible = true; removeEventListener(Event.ENTER_FRAME, LoadingInProgress); load_txt.text = ""; text_txt.text = "PLAY"; } else { load_txt.text = (Math.round(((_local3 / _local2) * 100)) + " %"); }; } private function LoadingDone(_arg1:Event):void{ _loadDelay = (_loadDelay - 1); if (_loadDelay <= 0){ removeEventListener(Event.ENTER_FRAME, LoadingDone); removeChild(loadContainerMC); AddMenu(false); SoundHandler.AddSound(new snd_noSound()); _muteUnmute.enabled = true; }; } private function RestartLevel():void{ m_timeStep = (1 / 30); SlowmotionEffectHandler.StopEffect(); RemoveLayers(); StartLevel(_lastLevelPlayed, false); } private function ExitLevel(_arg1:Event):void{ m_timeStep = (1 / 30); SlowmotionEffectHandler.StopEffect(); InterfaceHandler.pause_info.continue_btn.removeEventListener(MouseEvent.MOUSE_UP, UnpauseGame); InterfaceHandler.pause_info.exit_btn.removeEventListener(MouseEvent.MOUSE_UP, ExitLevel); ClearLevel(); } private function PauseGame():void{ InterfaceHandler.ShowPauseMenu(); removeEventListener(Event.ENTER_FRAME, UpdateFrameEvent); InterfaceHandler.pause_info.continue_btn.addEventListener(MouseEvent.MOUSE_UP, UnpauseGame); InterfaceHandler.pause_info.exit_btn.addEventListener(MouseEvent.MOUSE_UP, ExitLevel); SoundHandler.PauseMusic(); } private function UpdateFrameEvent(_arg1:Event):void{ if (BallHandler.IsCameraInRotation() == false){ if (!BallHandler.SlowmotionTime){ InterfaceHandler.UpdateTime(); if (BallHandler.SlowmotionTurnedOff == false){ SoundHandler.AddSound(new snd_slowmotionEnd()); containerMC.filters = null; containerMC.mask = _containerMCMask; SlowmotionEffectHandler.StopEffect(); m_timeStep = (1 / 30); }; } else { if (BallHandler.SlowmotionInitialized == false){ containerMC.filters = null; containerMC.mask = _containerMCMask; SlowmotionEffectHandler.StopEffect(); containerMC.filters = [new BlurFilter(2, 2, 1)]; SlowmotionEffectHandler.StartEffect(); m_timeStep = (1 / 60); }; BallHandler.DoSlowmotion(); }; CheckItemsCollected(); UpdatePhysic(); CheckKeys(); CheckFinish(); } else { BallHandler.UpdateMC(); }; } private function RemoveLayers():void{ removeEventListener(Event.ENTER_FRAME, UpdateFinishEvent); KeyHandler.RemoveHandlers(stage); removeEventListener(Event.ENTER_FRAME, UpdateFrameEvent); InterfaceHandler.Deconstructor(); ClearChildsIn(objectsSMC); ClearChildsIn(objectsMC); ClearItems(); ClearChildsIn(itemsMC); ClearEffects(); ClearChildsIn(effectsMC); ClearChildsIn(containerMC); removeChild(InterfaceHandler); removeChild(containerMC); removeChild(backgroundMC); } private function CheckKeys():void{ var _local1:Number; var _local2:Number; _local1 = (BallHandler.GetOrientation * (Math.PI / 180)); _local2 = 1; if (BallHandler.SlowmotionTime){ _local2 = 0.5; }; if (BallHandler.SuperAcceleration){ _local2 = (_local2 + 2); if (BallHandler.SuperAccelerationTrace){ SlowmotionEffectHandler.AddTrace(); }; }; if (BallHandler.AirTime){ BallHandler.ApplyImpulse((-0.45 * Math.sin(_local1)), (-0.45 * Math.cos(_local1))); if (KeyHandler.UpPressedAir){ BallHandler.ApplyImpulse((-0.2 * Math.sin(_local1)), (-0.2 * Math.cos(_local1))); } else { BallHandler.ApplyImpulse((0.2 * Math.sin(_local1)), (0.2 * Math.cos(_local1))); }; if (KeyHandler.RightPressed){ BallHandler.ApplyImpulse(((_local2 * 0.2) * Math.cos(_local1)), ((_local2 * -0.2) * Math.sin(_local1))); } else { if (KeyHandler.LeftPressed){ BallHandler.ApplyImpulse(((_local2 * -0.2) * Math.cos(_local1)), ((_local2 * 0.2) * Math.sin(_local1))); }; }; if (BallHandler.AirTimeTrace){ SlowmotionEffectHandler.AddTrace(); }; BallHandler.SetRotationSpeed(); } else { if (BallHandler.TouchingGround){ if (KeyHandler.RightPressed){ BallHandler.ApplyImpulse(((_local2 * 0.5) * Math.cos(_local1)), ((_local2 * -0.5) * Math.sin(_local1))); } else { if (KeyHandler.LeftPressed){ BallHandler.ApplyImpulse(((_local2 * -0.5) * Math.cos(_local1)), ((_local2 * 0.5) * Math.sin(_local1))); }; }; BallHandler.SetRotationSpeed(); if (KeyHandler.UpPressed){ if (KeyHandler.RightPressed){ BallHandler.ApplyImpulse((1 * Math.cos(_local1)), (-1 * Math.sin(_local1))); } else { if (KeyHandler.LeftPressed){ BallHandler.ApplyImpulse((-1 * Math.cos(_local1)), (1 * Math.sin(_local1))); }; }; BallHandler.ApplyImpulse((-10 * Math.sin(_local1)), (-10 * Math.cos(_local1))); }; } else { if (KeyHandler.RightPressed){ BallHandler.ApplyImpulse(((_local2 * 0.2) * Math.cos(_local1)), ((_local2 * -0.2) * Math.sin(_local1))); }; if (KeyHandler.LeftPressed){ BallHandler.ApplyImpulse(((_local2 * -0.2) * Math.cos(_local1)), ((_local2 * 0.2) * Math.sin(_local1))); }; }; }; } private function UpdateFinishEvent(_arg1:Event):void{ UpdatePhysic(); if (BallHandler.TouchingGround){ BallHandler.SetRotationSpeed(); }; } private function ClearLevel():void{ RemoveLayers(); AddMenu(true); } private function UnmuteGame(_arg1:ContextMenuEvent):void{ SoundHandler.UnmuteAllSound(); _muteUnmute.caption = "Mute sound"; _muteUnmute.removeEventListener(ContextMenuEvent.MENU_ITEM_SELECT, UnmuteGame); _muteUnmute.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, MuteGame); } private function AddMenu(_arg1:Boolean):void{ MenuHandler = new menuInterface(StartLevel, SALHandler, DataHandler, MedalTimeHandler.GetTimes, _arg1, SoundHandler.AddSound, AddAchievement); addChild(MenuHandler); SoundHandler.StartMusic("MENU_MUSIC"); } private function ClearItems():void{ var _local1:MovieClip; var _local2:int; _local2 = itemsMC.numChildren; while (_local2--) { _local1 = MovieClip(itemsMC.getChildAt(_local2)); _local1.Deconstructor(); }; } private function CheckFinish():void{ if (FinishHander.FinishReached(BallHandler.GetXPos, BallHandler.GetYPos, m_world.GetGravity())){ KeyHandler.CanPause(false); removeEventListener(Event.ENTER_FRAME, UpdateFrameEvent); addEventListener(Event.ENTER_FRAME, UpdateFinishEvent, false, 0, true); InterfaceHandler.ShowStageCleared(ClearLevel); }; } private function ClearChildsIn(_arg1):void{ var _local2:int; _local2 = _arg1.numChildren; while (_local2--) { _arg1.removeChildAt(_local2); }; } private function MuteGame(_arg1:ContextMenuEvent):void{ SoundHandler.MuteAllSound(); _muteUnmute.caption = "Unmute sound"; _muteUnmute.removeEventListener(ContextMenuEvent.MENU_ITEM_SELECT, MuteGame); _muteUnmute.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, UnmuteGame); } private function AddAchievement(_arg1:Number):void{ if (_NGMedalsAvailable){ if (_arg1 == 0){ if (!DataHandler.NGMedalGet[_arg1]){ DataHandler.NGMedalGet[_arg1] = true; SALHandler.Save(); trace("Achievement: All Bronze - Collect all bronze medals"); }; }; if (_arg1 == 1){ if (!DataHandler.NGMedalGet[_arg1]){ DataHandler.NGMedalGet[_arg1] = true; SALHandler.Save(); trace("Achievement: All Silver - Collect all silver medals"); }; }; if (_arg1 == 2){ if (!DataHandler.NGMedalGet[_arg1]){ DataHandler.NGMedalGet[_arg1] = true; SALHandler.Save(); trace("Achievement: All Gold - Collect all gold medals"); }; }; if (_arg1 == 3){ if (!DataHandler.NGMedalGet[_arg1]){ DataHandler.NGMedalGet[_arg1] = true; SALHandler.Save(); trace("Achievement: Treasure Seeker - Collect all coins"); }; }; if (_arg1 == 4){ if (!DataHandler.NGMedalGet[_arg1]){ DataHandler.NGMedalGet[_arg1] = true; SALHandler.Save(); trace("Achievement: Secret Achievement - Find the only secret place"); }; }; } else { trace("You must login to earn achievements"); }; } private function UpdatePhysic():void{ var _local1:b2Body; m_world.Step(m_timeStep, m_iterations); _local1 = m_world.m_bodyList; while (_local1) { if (_local1.IsDynamic()){ _local1.m_userData.x = (_local1.GetPosition().x * 30); _local1.m_userData.y = (_local1.GetPosition().y * 30); _local1.m_userData.rotation = (_local1.GetAngle() * (180 / Math.PI)); _local1.m_userData.hitTestMC.x = _local1.m_userData.x; _local1.m_userData.hitTestMC.y = _local1.m_userData.y; _local1.m_userData.hitTestMC.rotation = _local1.m_userData.rotation; if (_local1.IsFrozen()){ if (_local1.IsPlayer()){ if (FinishHander.LevelFinished() == false){ GameOver(); }; }; objectsSMC.removeChild(_local1.GetUserData().hitTestMC); objectsMC.removeChild(_local1.GetUserData()); m_world.DestroyBody(_local1); }; }; _local1 = _local1.m_next; }; BallHandler.UpdateMC(); } } }//package
Section 111
//maskMC (maskMC) package { import flash.display.*; public dynamic class maskMC extends MovieClip { } }//package
Section 112
//menuMusic (menuMusic) package { import flash.media.*; public dynamic class menuMusic extends Sound { } }//package
Section 113
//snd_coinPickup (snd_coinPickup) package { import flash.media.*; public dynamic class snd_coinPickup extends Sound { } }//package
Section 114
//snd_countDown (snd_countDown) package { import flash.media.*; public dynamic class snd_countDown extends Sound { } }//package
Section 115
//snd_gameOver (snd_gameOver) package { import flash.media.*; public dynamic class snd_gameOver extends Sound { } }//package
Section 116
//snd_markLevel (snd_markLevel) package { import flash.media.*; public dynamic class snd_markLevel extends Sound { } }//package
Section 117
//snd_noSound (snd_noSound) package { import flash.media.*; public dynamic class snd_noSound extends Sound { } }//package
Section 118
//snd_pauseGame (snd_pauseGame) package { import flash.media.*; public dynamic class snd_pauseGame extends Sound { } }//package
Section 119
//snd_powerUpChange (snd_powerUpChange) package { import flash.media.*; public dynamic class snd_powerUpChange extends Sound { } }//package
Section 120
//snd_powerUpEffect (snd_powerUpEffect) package { import flash.media.*; public dynamic class snd_powerUpEffect extends Sound { } }//package
Section 121
//snd_slowmotionEnd (snd_slowmotionEnd) package { import flash.media.*; public dynamic class snd_slowmotionEnd extends Sound { } }//package
Section 122
//snd_slowmotionStart (snd_slowmotionStart) package { import flash.media.*; public dynamic class snd_slowmotionStart extends Sound { } }//package
Section 123
//snd_timeTick (snd_timeTick) package { import flash.media.*; public dynamic class snd_timeTick extends Sound { } }//package
Section 124
//voice_perfect (voice_perfect) package { import flash.media.*; public dynamic class voice_perfect extends Sound { } }//package

Library Items

Symbol 1 GraphicUsed by:Timeline
Symbol 2 FontUsed by:3 4 52 53 54 55 56 57 58 61 62 63 64 65 66 79 80 81 82 84 85 86 87 88 89 92 93 94 95 98 103 104 105 106 107 110 111 116 117 130 131 132 139 140 141 142 143 144 145 147 153 154 155 156 159 160 162 163 166 167 168 175 176 177 178 179 180 181 182 183 184 185 189 190 191 192 193 194 195 196 197 198 202 204 222 241 244 245 246 247 251 252 253 254 255 256 257 283 284 285 286 287 288 289 290 291 292 294 295 296
Symbol 3 EditableTextUses:2Used by:Timeline
Symbol 4 EditableTextUses:2Used by:Timeline
Symbol 5 GraphicUsed by:Timeline
Symbol 6 FontUsed by:7 9 10 11 12 13 14 15 16 17 18 19 20 22 24 25 26 27 28 29 30 32 34 35 37 45 46 47 473
Symbol 7 TextUses:6Used by:Timeline
Symbol 8 GraphicUsed by:Timeline
Symbol 9 TextUses:6Used by:Timeline
Symbol 10 TextUses:6Used by:Timeline
Symbol 11 TextUses:6Used by:Timeline
Symbol 12 TextUses:6Used by:Timeline
Symbol 13 TextUses:6Used by:Timeline
Symbol 14 TextUses:6Used by:Timeline
Symbol 15 TextUses:6Used by:Timeline
Symbol 16 TextUses:6Used by:Timeline
Symbol 17 TextUses:6Used by:Timeline
Symbol 18 TextUses:6Used by:Timeline
Symbol 19 TextUses:6Used by:Timeline
Symbol 20 TextUses:6Used by:Timeline
Symbol 21 GraphicUsed by:Timeline
Symbol 22 TextUses:6Used by:Timeline
Symbol 23 GraphicUsed by:Timeline
Symbol 24 TextUses:6Used by:Timeline
Symbol 25 TextUses:6Used by:Timeline
Symbol 26 TextUses:6Used by:Timeline
Symbol 27 TextUses:6Used by:Timeline
Symbol 28 TextUses:6Used by:Timeline
Symbol 29 TextUses:6Used by:Timeline
Symbol 30 TextUses:6Used by:Timeline
Symbol 31 GraphicUsed by:Timeline
Symbol 32 TextUses:6Used by:Timeline
Symbol 33 GraphicUsed by:Timeline
Symbol 34 TextUses:6Used by:Timeline
Symbol 35 TextUses:6Used by:Timeline
Symbol 36 GraphicUsed by:Timeline
Symbol 37 TextUses:6Used by:Timeline
Symbol 38 GraphicUsed by:Timeline
Symbol 39 GraphicUsed by:Timeline
Symbol 40 GraphicUsed by:44
Symbol 41 GraphicUsed by:44
Symbol 42 GraphicUsed by:44
Symbol 43 GraphicUsed by:44
Symbol 44 ButtonUses:40 41 42 43Used by:169 298  Timeline
Symbol 45 TextUses:6Used by:Timeline
Symbol 46 TextUses:6Used by:Timeline
Symbol 47 TextUses:6Used by:Timeline
Symbol 48 GraphicUsed by:474
Symbol 49 GraphicUsed by:172
Symbol 50 BitmapUsed by:51 60 67 78 91 97 102 109 165 199 209 211 212 214 217
Symbol 51 GraphicUses:50Used by:59
Symbol 52 TextUses:2Used by:59
Symbol 53 EditableTextUses:2Used by:59
Symbol 54 EditableTextUses:2Used by:59
Symbol 55 EditableTextUses:2Used by:59
Symbol 56 EditableTextUses:2Used by:59
Symbol 57 EditableTextUses:2Used by:59
Symbol 58 TextUses:2Used by:59 172
Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4}Uses:51 52 53 54 55 56 57 58Used by:172
Symbol 60 GraphicUses:50Used by:172
Symbol 61 TextUses:2Used by:172
Symbol 62 EditableTextUses:2Used by:172
Symbol 63 EditableTextUses:2Used by:172
Symbol 64 EditableTextUses:2Used by:172
Symbol 65 EditableTextUses:2Used by:172
Symbol 66 EditableTextUses:2Used by:172
Symbol 67 GraphicUses:50Used by:90
Symbol 68 BitmapUsed by:69
Symbol 69 GraphicUses:68Used by:77 112
Symbol 70 BitmapUsed by:71 352 356 358 359 444
Symbol 71 GraphicUses:70Used by:77 115
Symbol 72 BitmapUsed by:73
Symbol 73 GraphicUses:72Used by:77 113
Symbol 74 BitmapUsed by:75
Symbol 75 GraphicUses:74Used by:77 114
Symbol 76 GraphicUsed by:77
Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6}Uses:69 71 73 75 76Used by:90 108
Symbol 78 GraphicUses:50Used by:83
Symbol 79 TextUses:2Used by:83
Symbol 80 TextUses:2Used by:83
Symbol 81 TextUses:2Used by:83
Symbol 82 TextUses:2Used by:83
Symbol 83 MovieClipUses:78 79 80 81 82Used by:90
Symbol 84 TextUses:2Used by:90
Symbol 85 EditableTextUses:2Used by:90
Symbol 86 EditableTextUses:2Used by:90
Symbol 87 EditableTextUses:2Used by:90
Symbol 88 EditableTextUses:2Used by:90
Symbol 89 EditableTextUses:2Used by:90
Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5}Uses:67 77 83 84 85 86 87 88 89Used by:172
Symbol 91 GraphicUses:50Used by:96
Symbol 92 TextUses:2Used by:96
Symbol 93 EditableTextUses:2Used by:96
Symbol 94 EditableTextUses:2Used by:96
Symbol 95 TextUses:2Used by:96
Symbol 96 MovieClip {RollerBoaster_fla.sign_coins_8}Uses:91 92 93 94 95Used by:172
Symbol 97 GraphicUses:50Used by:101
Symbol 98 TextUses:2Used by:101
Symbol 99 GraphicUsed by:101
Symbol 100 GraphicUsed by:101
Symbol 101 MovieClipUses:97 98 99 100Used by:172
Symbol 102 GraphicUses:50Used by:108
Symbol 103 TextUses:2Used by:108
Symbol 104 EditableTextUses:2Used by:108
Symbol 105 EditableTextUses:2Used by:108
Symbol 106 EditableTextUses:2Used by:108
Symbol 107 TextUses:2Used by:108 164
Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10}Uses:102 77 103 104 105 106 107Used by:172
Symbol 109 GraphicUses:50Used by:164
Symbol 110 TextUses:2Used by:164
Symbol 111 TextUses:2Used by:164
Symbol 112 MovieClipUses:69Used by:164 207
Symbol 113 MovieClipUses:73Used by:164 207
Symbol 114 MovieClipUses:75Used by:164 207
Symbol 115 MovieClipUses:71Used by:164 207
Symbol 116 TextUses:2Used by:164
Symbol 117 TextUses:2Used by:164
Symbol 118 ShapeTweeningUsed by:123
Symbol 119 ShapeTweeningUsed by:123
Symbol 120 ShapeTweeningUsed by:123
Symbol 121 ShapeTweeningUsed by:123
Symbol 122 GraphicUsed by:123
Symbol 123 MovieClipUses:118 119 120 121 122Used by:164 325
Symbol 124 ShapeTweeningUsed by:129
Symbol 125 ShapeTweeningUsed by:129
Symbol 126 ShapeTweeningUsed by:129
Symbol 127 ShapeTweeningUsed by:129
Symbol 128 GraphicUsed by:129
Symbol 129 MovieClipUses:124 125 126 127 128Used by:164 325
Symbol 130 TextUses:2Used by:164
Symbol 131 TextUses:2Used by:164
Symbol 132 TextUses:2Used by:164
Symbol 133 ShapeTweeningUsed by:138
Symbol 134 ShapeTweeningUsed by:138
Symbol 135 ShapeTweeningUsed by:138
Symbol 136 ShapeTweeningUsed by:138
Symbol 137 GraphicUsed by:138
Symbol 138 MovieClipUses:133 134 135 136 137Used by:164 325
Symbol 139 TextUses:2Used by:164
Symbol 140 TextUses:2Used by:164
Symbol 141 TextUses:2Used by:164
Symbol 142 TextUses:2Used by:164
Symbol 143 TextUses:2Used by:164
Symbol 144 TextUses:2Used by:164
Symbol 145 TextUses:2Used by:164
Symbol 146 GraphicUsed by:148
Symbol 147 TextUses:2Used by:148
Symbol 148 MovieClipUses:146 147Used by:164 325
Symbol 149 GraphicUsed by:164
Symbol 150 GraphicUsed by:152 158
Symbol 151 GraphicUsed by:152
Symbol 152 MovieClipUses:150 151Used by:164
Symbol 153 TextUses:2Used by:164
Symbol 154 TextUses:2Used by:164
Symbol 155 TextUses:2Used by:164
Symbol 156 TextUses:2Used by:164
Symbol 157 GraphicUsed by:164
Symbol 158 MovieClipUses:150Used by:164
Symbol 159 TextUses:2Used by:164
Symbol 160 TextUses:2Used by:164
Symbol 161 GraphicUsed by:164
Symbol 162 TextUses:2Used by:164
Symbol 163 TextUses:2Used by:164
Symbol 164 MovieClipUses:109 107 110 111 112 113 114 115 116 117 123 129 130 131 132 138 139 140 141 142 143 144 145 148 149 152 153 154 155 156 157 158 159 160 161 162 163Used by:172
Symbol 165 GraphicUses:50Used by:169
Symbol 166 TextUses:2Used by:169
Symbol 167 TextUses:2Used by:169
Symbol 168 TextUses:2Used by:169
Symbol 169 MovieClip {RollerBoaster_fla.pause_info_22}Uses:165 166 167 168 44Used by:172
Symbol 170 GraphicUsed by:171
Symbol 171 MovieClipUses:170Used by:172 310
Symbol 172 MovieClip {code.gameInterface}Uses:49 59 60 61 62 63 64 65 66 58 90 96 101 108 164 169 171Used by:474
Symbol 173 BitmapUsed by:174 186 299 300 301
Symbol 174 GraphicUses:173Used by:298
Symbol 175 TextUses:2Used by:298
Symbol 176 TextUses:2Used by:298
Symbol 177 TextUses:2Used by:298
Symbol 178 TextUses:2Used by:298
Symbol 179 TextUses:2Used by:298
Symbol 180 TextUses:2Used by:298
Symbol 181 TextUses:2Used by:298
Symbol 182 TextUses:2Used by:298
Symbol 183 TextUses:2Used by:298
Symbol 184 TextUses:2Used by:298
Symbol 185 TextUses:2Used by:298
Symbol 186 GraphicUses:173Used by:298
Symbol 187 BitmapUsed by:188 250 258 345 348 360 361 362 363 367 384 385 386 387 388 389 396 416 418 434 442 443
Symbol 188 GraphicUses:187Used by:248
Symbol 189 TextUses:2Used by:248
Symbol 190 TextUses:2Used by:248
Symbol 191 TextUses:2Used by:248
Symbol 192 TextUses:2Used by:248
Symbol 193 TextUses:2Used by:248
Symbol 194 TextUses:2Used by:248
Symbol 195 TextUses:2Used by:248
Symbol 196 TextUses:2Used by:248
Symbol 197 TextUses:2Used by:248
Symbol 198 TextUses:2Used by:248
Symbol 199 GraphicUses:50Used by:207
Symbol 200 GraphicUsed by:207
Symbol 201 GraphicUsed by:207
Symbol 202 EditableTextUses:2Used by:207
Symbol 203 GraphicUsed by:207
Symbol 204 EditableTextUses:2Used by:207
Symbol 205 GraphicUsed by:207
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26}Uses:199 200 201 202 203 204 112 113 114 205 115 206Used by:248
Symbol 208 GraphicUsed by:216
Symbol 209 GraphicUses:50Used by:213
Symbol 210 GraphicUsed by:213
Symbol 211 GraphicUses:50Used by:213
Symbol 212 GraphicUses:50Used by:213
Symbol 213 ButtonUses:209 210 211 212Used by:216 293
Symbol 214 GraphicUses:50Used by:215
Symbol 215 MovieClipUses:214Used by:216
Symbol 216 MovieClip {RollerBoaster_fla.level_scroll_27}Uses:208 213 215Used by:248
Symbol 217 GraphicUses:50Used by:242
Symbol 218 GraphicUsed by:242
Symbol 219 BitmapUsed by:220
Symbol 220 GraphicUses:219Used by:242
Symbol 221 GraphicUsed by:242
Symbol 222 TextUses:2Used by:242
Symbol 223 BitmapUsed by:224
Symbol 224 GraphicUses:223Used by:242
Symbol 225 BitmapUsed by:226
Symbol 226 GraphicUses:225Used by:242
Symbol 227 BitmapUsed by:228
Symbol 228 GraphicUses:227Used by:242
Symbol 229 BitmapUsed by:230
Symbol 230 GraphicUses:229Used by:242
Symbol 231 BitmapUsed by:232
Symbol 232 GraphicUses:231Used by:242
Symbol 233 BitmapUsed by:234
Symbol 234 GraphicUses:233Used by:242
Symbol 235 BitmapUsed by:236
Symbol 236 GraphicUses:235Used by:242
Symbol 237 BitmapUsed by:238
Symbol 238 GraphicUses:237Used by:242
Symbol 239 BitmapUsed by:240
Symbol 240 GraphicUses:239Used by:242
Symbol 241 TextUses:2Used by:242
Symbol 242 MovieClipUses:217 218 220 221 222 224 226 228 230 232 234 236 238 240 241Used by:248
Symbol 243 GraphicUsed by:248
Symbol 244 EditableTextUses:2Used by:248
Symbol 245 EditableTextUses:2Used by:248
Symbol 246 EditableTextUses:2Used by:248
Symbol 247 EditableTextUses:2Used by:248
Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25}Uses:188 189 190 191 192 193 194 195 196 197 198 207 216 242 243 244 245 246 247Used by:298
Symbol 249 GraphicUsed by:298
Symbol 250 GraphicUses:187Used by:293
Symbol 251 TextUses:2Used by:293
Symbol 252 TextUses:2Used by:293
Symbol 253 TextUses:2Used by:293
Symbol 254 TextUses:2Used by:293
Symbol 255 TextUses:2Used by:293
Symbol 256 TextUses:2Used by:293
Symbol 257 TextUses:2Used by:293
Symbol 258 GraphicUses:187Used by:293
Symbol 259 GraphicUsed by:282
Symbol 260 GraphicUsed by:271
Symbol 261 GraphicUsed by:271
Symbol 262 GraphicUsed by:271
Symbol 263 GraphicUsed by:271
Symbol 264 GraphicUsed by:271
Symbol 265 GraphicUsed by:271
Symbol 266 GraphicUsed by:271
Symbol 267 GraphicUsed by:271
Symbol 268 GraphicUsed by:271
Symbol 269 GraphicUsed by:271
Symbol 270 GraphicUsed by:271
Symbol 271 MovieClipUses:260 261 262 263 264 265 266 267 268 269 270Used by:282
Symbol 272 GraphicUsed by:282
Symbol 273 GraphicUsed by:282
Symbol 274 GraphicUsed by:282
Symbol 275 GraphicUsed by:282
Symbol 276 GraphicUsed by:282
Symbol 277 GraphicUsed by:282
Symbol 278 GraphicUsed by:282
Symbol 279 GraphicUsed by:282
Symbol 280 GraphicUsed by:282
Symbol 281 GraphicUsed by:282
Symbol 282 MovieClip {ballMC}Uses:259 271 272 273 274 275 276 277 278 279 280 281Used by:293 458 474
Symbol 283 TextUses:2Used by:293
Symbol 284 EditableTextUses:2Used by:293
Symbol 285 EditableTextUses:2Used by:293
Symbol 286 EditableTextUses:2Used by:293
Symbol 287 EditableTextUses:2Used by:293
Symbol 288 EditableTextUses:2Used by:293
Symbol 289 EditableTextUses:2Used by:293
Symbol 290 EditableTextUses:2Used by:293
Symbol 291 EditableTextUses:2Used by:293
Symbol 292 EditableTextUses:2Used by:293
Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31}Uses:250 251 252 253 254 255 256 257 258 282 283 284 285 286 287 288 289 290 291 292 213Used by:298
Symbol 294 TextUses:2Used by:298
Symbol 295 TextUses:2Used by:297
Symbol 296 TextUses:2Used by:297
Symbol 297 MovieClipUses:295 296Used by:298
Symbol 298 MovieClip {code.menuInterface}Uses:174 175 176 44 177 178 179 180 181 182 183 184 185 186 248 249 293 294 297Used by:474
Symbol 299 GraphicUses:173Used by:310
Symbol 300 GraphicUses:173Used by:310
Symbol 301 GraphicUses:173Used by:310
Symbol 302 BitmapUsed by:303 304 305 306 307
Symbol 303 GraphicUses:302Used by:310
Symbol 304 GraphicUses:302Used by:310
Symbol 305 GraphicUses:302Used by:310
Symbol 306 GraphicUses:302Used by:310
Symbol 307 GraphicUses:302Used by:310
Symbol 308 GraphicUsed by:310
Symbol 309 GraphicUsed by:310
Symbol 310 MovieClip {backgroundLayer}Uses:299 300 301 171 303 304 305 306 307 308 309Used by:474
Symbol 311 GraphicUsed by:312
Symbol 312 MovieClipUses:311Used by:325
Symbol 313 GraphicUsed by:314
Symbol 314 MovieClipUses:313Used by:325
Symbol 315 GraphicUsed by:316
Symbol 316 MovieClipUses:315Used by:325
Symbol 317 GraphicUsed by:318
Symbol 318 MovieClipUses:317Used by:325
Symbol 319 GraphicUsed by:320
Symbol 320 MovieClipUses:319Used by:325
Symbol 321 GraphicUsed by:322
Symbol 322 MovieClipUses:321Used by:325
Symbol 323 GraphicUsed by:324
Symbol 324 MovieClipUses:323Used by:325
Symbol 325 MovieClip {code.worldItem}Uses:129 123 312 314 316 318 320 322 324 138 148Used by:474
Symbol 326 GraphicUsed by:408
Symbol 327 BitmapUsed by:328 329 330 331 332 333 336 339 340 443
Symbol 328 GraphicUses:327Used by:408
Symbol 329 GraphicUses:327Used by:408
Symbol 330 GraphicUses:327Used by:408
Symbol 331 GraphicUses:327Used by:408
Symbol 332 GraphicUses:327Used by:408
Symbol 333 GraphicUses:327Used by:408
Symbol 334 BitmapUsed by:336 339 340 341 443
Symbol 335 BitmapUsed by:336 341 443
Symbol 336 GraphicUses:335 334 327Used by:408
Symbol 337 BitmapUsed by:339 340 345 347 348 362 384 386 416 441 442 444 445
Symbol 338 BitmapUsed by:339 340 347 360 361 368 369 370 441 442
Symbol 339 GraphicUses:337 334 327 338Used by:408
Symbol 340 GraphicUses:337 334 338 327Used by:408
Symbol 341 GraphicUses:334 335Used by:408
Symbol 342 BitmapUsed by:343 344 347 395 441 442
Symbol 343 GraphicUses:342Used by:408
Symbol 344 GraphicUses:342Used by:408
Symbol 345 GraphicUses:337 187Used by:408
Symbol 346 BitmapUsed by:347 441 442
Symbol 347 GraphicUses:337 346 342 338Used by:408
Symbol 348 GraphicUses:337 187Used by:408
Symbol 349 BitmapUsed by:351 353 355 358 359 444
Symbol 350 BitmapUsed by:351 352 353 354 355 356 357 358 359 444 446
Symbol 351 GraphicUses:349 350Used by:408
Symbol 352 GraphicUses:70 350Used by:408
Symbol 353 GraphicUses:350 349Used by:408
Symbol 354 GraphicUses:350Used by:408
Symbol 355 GraphicUses:349 350Used by:408
Symbol 356 GraphicUses:350 70Used by:408
Symbol 357 GraphicUses:350Used by:408
Symbol 358 GraphicUses:70 349 350Used by:408
Symbol 359 GraphicUses:70 349 350Used by:408
Symbol 360 GraphicUses:338 187Used by:408
Symbol 361 GraphicUses:338 187Used by:408
Symbol 362 GraphicUses:187 337Used by:408
Symbol 363 GraphicUses:187Used by:408
Symbol 364 BitmapUsed by:366 367 446
Symbol 365 BitmapUsed by:366 446
Symbol 366 GraphicUses:364 365Used by:408
Symbol 367 GraphicUses:364 187Used by:408
Symbol 368 GraphicUses:338Used by:408
Symbol 369 GraphicUses:338Used by:408
Symbol 370 GraphicUses:338Used by:408
Symbol 371 BitmapUsed by:373 374 375 377 379 380 381 382 447
Symbol 372 BitmapUsed by:373 374 375 376 379 380 381 382 447
Symbol 373 GraphicUses:372 371Used by:408
Symbol 374 GraphicUses:371 372Used by:408
Symbol 375 GraphicUses:372 371Used by:408
Symbol 376 GraphicUses:372Used by:408
Symbol 377 GraphicUses:371Used by:408
Symbol 378 BitmapUsed by:379 447
Symbol 379 GraphicUses:372 371 378Used by:408
Symbol 380 GraphicUses:371 372Used by:408
Symbol 381 GraphicUses:372 371Used by:408
Symbol 382 GraphicUses:372 371Used by:408
Symbol 383 BitmapUsed by:384 385 386 388 451
Symbol 384 GraphicUses:337 383 187Used by:408
Symbol 385 GraphicUses:383 187Used by:408
Symbol 386 GraphicUses:337 383 187Used by:408
Symbol 387 GraphicUses:187Used by:408
Symbol 388 GraphicUses:383 187Used by:408
Symbol 389 GraphicUses:187Used by:408
Symbol 390 BitmapUsed by:393 394 410 411 412 452
Symbol 391 BitmapUsed by:393 452
Symbol 392 BitmapUsed by:393 394 410 411 412 452
Symbol 393 GraphicUses:392 390 391Used by:408
Symbol 394 GraphicUses:390 392Used by:408
Symbol 395 GraphicUses:342Used by:408
Symbol 396 GraphicUses:187Used by:408
Symbol 397 BitmapUsed by:400 453
Symbol 398 BitmapUsed by:400 453
Symbol 399 BitmapUsed by:400 453
Symbol 400 GraphicUses:397 398 399Used by:408
Symbol 401 BitmapUsed by:404 405 406 407 413 454
Symbol 402 BitmapUsed by:404 454
Symbol 403 BitmapUsed by:404 405 406 407 413 454
Symbol 404 GraphicUses:402 403 401Used by:408
Symbol 405 GraphicUses:401 403Used by:408
Symbol 406 GraphicUses:403 401Used by:408
Symbol 407 GraphicUses:403 401Used by:408
Symbol 408 MovieClip {grayModel_b}Uses:326 328 329 330 331 332 333 336 339 340 341 343 344 345 347 348 351 352 353 354 355 356 357 358 359 360 361 362 363 366 367 368 369 370 373 374 375 376 377 379 380 381 382 384 385 386 387 388 389 393 394 395 396 400 404 405 406 407Used by:474
Symbol 409 GraphicUsed by:414
Symbol 410 GraphicUses:392 390Used by:414
Symbol 411 GraphicUses:390 392Used by:414
Symbol 412 GraphicUses:392 390Used by:414
Symbol 413 GraphicUses:401 403Used by:414
Symbol 414 MovieClip {grayModel_c}Uses:409 410 411 412 413Used by:474
Symbol 415 BitmapUsed by:416
Symbol 416 GraphicUses:415 187 337Used by:455
Symbol 417 ShapeTweeningUsed by:432
Symbol 418 GraphicUses:187Used by:432
Symbol 419 GraphicUsed by:422
Symbol 420 ShapeTweeningUsed by:422
Symbol 421 GraphicUsed by:422
Symbol 422 MovieClip {RollerBoaster_fla.startPositionReadyText_48}Uses:419 420 421Used by:432
Symbol 423 ShapeTweeningUsed by:432
Symbol 424 ShapeTweeningUsed by:432
Symbol 425 ShapeTweeningUsed by:432
Symbol 426 ShapeTweeningUsed by:432
Symbol 427 GraphicUsed by:432
Symbol 428 GraphicUsed by:431
Symbol 429 ShapeTweeningUsed by:431
Symbol 430 GraphicUsed by:431
Symbol 431 MovieClip {RollerBoaster_fla.startPositionGoText_49}Uses:428 429 430Used by:432
Symbol 432 MovieClipUses:417 418 422 423 424 425 426 427 431Used by:455
Symbol 433 ShapeTweeningUsed by:440
Symbol 434 GraphicUses:187Used by:440
Symbol 435 ShapeTweeningUsed by:440
Symbol 436 ShapeTweeningUsed by:440
Symbol 437 ShapeTweeningUsed by:440
Symbol 438 ShapeTweeningUsed by:440
Symbol 439 GraphicUsed by:440
Symbol 440 MovieClip {RollerBoaster_fla.finishPosition_50}Uses:433 434 435 436 437 438 439Used by:455
Symbol 441 GraphicUses:337 346 338 342Used by:455
Symbol 442 GraphicUses:338 346 342 187 337Used by:455
Symbol 443 GraphicUses:335 334 327 187Used by:455
Symbol 444 GraphicUses:337 350 349 70Used by:455
Symbol 445 GraphicUses:337Used by:455
Symbol 446 GraphicUses:365 364 350Used by:455
Symbol 447 GraphicUses:372 371 378Used by:455
Symbol 448 BitmapUsed by:451
Symbol 449 BitmapUsed by:451
Symbol 450 BitmapUsed by:451 453
Symbol 451 GraphicUses:383 449 448 450Used by:455
Symbol 452 GraphicUses:391 390 392Used by:455
Symbol 453 GraphicUses:450 397 398 399Used by:455
Symbol 454 GraphicUses:403 401 402Used by:455
Symbol 455 MovieClip {levelDesign}Uses:416 432 440 441 442 443 444 445 446 447 451 452 453 454Used by:474
Symbol 456 GraphicUsed by:457
Symbol 457 MovieClip {maskMC}Uses:456Used by:474
Symbol 458 MovieClip {code.slowmotionMC}Uses:282Used by:474
Symbol 459 Sound {gameMusic}Used by:474
Symbol 460 Sound {menuMusic}Used by:474
Symbol 461 Sound {snd_coinPickup}Used by:474
Symbol 462 Sound {snd_gameOver}Used by:474
Symbol 463 Sound {snd_timeTick}Used by:474
Symbol 464 Sound {snd_markLevel}Used by:474
Symbol 465 Sound {snd_noSound}Used by:474
Symbol 466 Sound {snd_pauseGame}Used by:474
Symbol 467 Sound {snd_powerUpChange}Used by:474
Symbol 468 Sound {snd_powerUpEffect}Used by:474
Symbol 469 Sound {snd_slowmotionEnd}Used by:474
Symbol 470 Sound {snd_slowmotionStart}Used by:474
Symbol 471 Sound {voice_perfect}Used by:474
Symbol 472 Sound {snd_countDown}Used by:474
Symbol 473 TextUses:6Used by:474
Symbol 474 MovieClip {RollerBoaster_fla.containerMC_2}Uses:48 172 298 310 282 325 408 414 455 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473Used by:Timeline

Instance Names

"load_txt"Frame 1Symbol 3 EditableText
"text_txt"Frame 1Symbol 4 EditableText
"ng_btn"Frame 1Symbol 44 Button
"play_btn"Frame 1Symbol 44 Button
"loadContainerMC"Frame 2Symbol 474 MovieClip {RollerBoaster_fla.containerMC_2}
"nr2_txt"Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4} Frame 1Symbol 53 EditableText
"nr3_txt"Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4} Frame 1Symbol 54 EditableText
"nr4_txt"Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4} Frame 1Symbol 55 EditableText
"nr5_txt"Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4} Frame 1Symbol 56 EditableText
"nr6_txt"Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4} Frame 1Symbol 57 EditableText
"goal_symb"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6}
"goal_text"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 83 MovieClip
"gnr2_txt"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 85 EditableText
"gnr3_txt"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 86 EditableText
"gnr4_txt"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 87 EditableText
"gnr5_txt"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 88 EditableText
"gnr6_txt"Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5} Frame 1Symbol 89 EditableText
"coins_txt"Symbol 96 MovieClip {RollerBoaster_fla.sign_coins_8} Frame 1Symbol 93 EditableText
"coinsTot_txt"Symbol 96 MovieClip {RollerBoaster_fla.sign_coins_8} Frame 1Symbol 94 EditableText
"medal_1"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6}
"medal_2"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6}
"medal_3"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6}
"medal_4"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6}
"medal_txt"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 104 EditableText
"time_txt"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 105 EditableText
"record_txt"Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10} Frame 1Symbol 106 EditableText
"continue_btn"Symbol 169 MovieClip {RollerBoaster_fla.pause_info_22} Frame 1Symbol 44 Button
"exit_btn"Symbol 169 MovieClip {RollerBoaster_fla.pause_info_22} Frame 1Symbol 44 Button
"hurryTimer"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 59 MovieClip {RollerBoaster_fla.sign_hurryTimer_4}
"nr2_txt"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 62 EditableText
"nr3_txt"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 63 EditableText
"nr4_txt"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 64 EditableText
"nr5_txt"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 65 EditableText
"nr6_txt"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 66 EditableText
"current_goal_plate"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 90 MovieClip {RollerBoaster_fla.current_goal_plate_5}
"coins"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 96 MovieClip {RollerBoaster_fla.sign_coins_8}
"game_over_animation"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 101 MovieClip
"stage_cleared_plate"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 108 MovieClip {RollerBoaster_fla.stage_cleared_plate_10}
"tutorial_info"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 164 MovieClip
"pause_info"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 169 MovieClip {RollerBoaster_fla.pause_info_22}
"cover_game_over"Symbol 172 MovieClip {code.gameInterface} Frame 1Symbol 171 MovieClip
"lvl_txt"Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26} Frame 1Symbol 202 EditableText
"time_txt"Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26} Frame 1Symbol 204 EditableText
"medal_bronze"Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26} Frame 1Symbol 112 MovieClip
"medal_silver"Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26} Frame 1Symbol 113 MovieClip
"medal_gold"Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26} Frame 1Symbol 114 MovieClip
"medal_coins"Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26} Frame 1Symbol 115 MovieClip
"scrollDown_btn"Symbol 216 MovieClip {RollerBoaster_fla.level_scroll_27} Frame 1Symbol 213 Button
"scrollUp_btn"Symbol 216 MovieClip {RollerBoaster_fla.level_scroll_27} Frame 1Symbol 213 Button
"level_scrollbar"Symbol 216 MovieClip {RollerBoaster_fla.level_scroll_27} Frame 1Symbol 215 MovieClip
"level_bar_1"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26}
"level_bar_2"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26}
"level_bar_3"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26}
"level_bar_4"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26}
"level_scroll"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 216 MovieClip {RollerBoaster_fla.level_scroll_27}
"level_picture"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 242 MovieClip
"time_gold_txt"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 244 EditableText
"time_silver_txt"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 245 EditableText
"time_bronze_txt"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 246 EditableText
"time_record_txt"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 247 EditableText
"level_bar_5"Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25} Frame 1Symbol 207 MovieClip {RollerBoaster_fla.level_bar_26}
"mc"Symbol 282 MovieClip {ballMC} Frame 1Symbol 271 MovieClip
"ball_mc"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 282 MovieClip {ballMC}
"medal_bronze_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 284 EditableText
"medal_silver_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 285 EditableText
"medal_gold_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 286 EditableText
"medal_coins_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 287 EditableText
"skins_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 288 EditableText
"colours_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 289 EditableText
"ballSkin_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 290 EditableText
"ballColour_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 291 EditableText
"progress_txt"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 292 EditableText
"ballSkinNext_btn"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 213 Button
"ballColourNext_btn"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 213 Button
"ballColourPrev_btn"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 213 Button
"ballSkinPrev_btn"Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31} Frame 1Symbol 213 Button
"continue3_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"continue2_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"continue_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"new_game_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"delete_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"back_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"exit_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"extra_btn"Symbol 298 MovieClip {code.menuInterface} Frame 1Symbol 44 Button
"menu_levels"Symbol 298 MovieClip {code.menuInterface} Frame 6Symbol 248 MovieClip {RollerBoaster_fla.menu_levels_25}
"menu_extra_stuff"Symbol 298 MovieClip {code.menuInterface} Frame 6Symbol 293 MovieClip {RollerBoaster_fla.menu_extra_stuff_31}
"extra_mc"Symbol 298 MovieClip {code.menuInterface} Frame 6Symbol 297 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 1Symbol 129 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 2Symbol 123 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 3Symbol 312 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 4Symbol 314 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 5Symbol 316 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 6Symbol 318 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 7Symbol 320 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 8Symbol 322 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 9Symbol 324 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 11Symbol 138 MovieClip
"mc"Symbol 325 MovieClip {code.worldItem} Frame 12Symbol 148 MovieClip
"startPosition"Symbol 455 MovieClip {levelDesign} Frame 1Symbol 432 MovieClip
"finishPosition"Symbol 455 MovieClip {levelDesign} Frame 1Symbol 440 MovieClip {RollerBoaster_fla.finishPosition_50}
"mc"Symbol 458 MovieClip {code.slowmotionMC} Frame 1Symbol 282 MovieClip {ballMC}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 256, ScriptTimeout: 5 seconds

Labels

"bronze"Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6} Frame 1
"coin"Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6} Frame 13
"silver"Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6} Frame 25
"gold"Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6} Frame 37
"record"Symbol 77 MovieClip {RollerBoaster_fla.medal_spinning_6} Frame 48
"gold"Symbol 83 MovieClip Frame 1
"silver"Symbol 83 MovieClip Frame 2
"bronze"Symbol 83 MovieClip Frame 3
"record"Symbol 83 MovieClip Frame 4
"bounds"Symbol 101 MovieClip Frame 2
"time"Symbol 101 MovieClip Frame 11
"MB_1"Symbol 408 MovieClip {grayModel_b} Frame 2
"MB_2"Symbol 408 MovieClip {grayModel_b} Frame 3
"MB_3"Symbol 408 MovieClip {grayModel_b} Frame 4
"MB_4"Symbol 408 MovieClip {grayModel_b} Frame 5
"MB_5"Symbol 408 MovieClip {grayModel_b} Frame 6
"MB_6"Symbol 408 MovieClip {grayModel_b} Frame 7
"swing_lvl3"Symbol 408 MovieClip {grayModel_b} Frame 8
"floor1_lvl3"Symbol 408 MovieClip {grayModel_b} Frame 9
"floor2_lvl3"Symbol 408 MovieClip {grayModel_b} Frame 10
"secret_lvl3"Symbol 408 MovieClip {grayModel_b} Frame 11
"shack1_lvl2"Symbol 408 MovieClip {grayModel_b} Frame 12
"shack2_lvl2"Symbol 408 MovieClip {grayModel_b} Frame 13
"transmition_lvl2"Symbol 408 MovieClip {grayModel_b} Frame 14
"arm_lvl2"Symbol 408 MovieClip {grayModel_b} Frame 15
"motor_lvl2"Symbol 408 MovieClip {grayModel_b} Frame 16
"triangle1_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 17
"triangle2_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 18
"triangle3_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 19
"triangle4_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 20
"square1_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 21
"square2_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 22
"square3_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 23
"swing1_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 24
"swing2_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 25
"elivBottom_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 26
"elivTopp_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 27
"elivWeigth_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 28
"elivSide_lvl4"Symbol 408 MovieClip {grayModel_b} Frame 29
"block1_lvl5"Symbol 408 MovieClip {grayModel_b} Frame 30
"block2_lvl5"Symbol 408 MovieClip {grayModel_b} Frame 31
"block3_lvl5"Symbol 408 MovieClip {grayModel_b} Frame 32
"block4_lvl5"Symbol 408 MovieClip {grayModel_b} Frame 33
"block5_lvl5"Symbol 408 MovieClip {grayModel_b} Frame 34
"poly1_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 35
"poly2_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 36
"block1_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 37
"block2_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 38
"block3_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 39
"swing1_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 40
"bridge_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 41
"rotor1_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 42
"rotor2_lvl6"Symbol 408 MovieClip {grayModel_b} Frame 43
"poly1_lvl7"Symbol 408 MovieClip {grayModel_b} Frame 44
"box1_lvl7"Symbol 408 MovieClip {grayModel_b} Frame 45
"box2_lvl7"Symbol 408 MovieClip {grayModel_b} Frame 46
"box3_lvl7"Symbol 408 MovieClip {grayModel_b} Frame 47
"box4_lvl7"Symbol 408 MovieClip {grayModel_b} Frame 48
"box5_lvl7"Symbol 408 MovieClip {grayModel_b} Frame 49
"box1_lvl8"Symbol 408 MovieClip {grayModel_b} Frame 50
"box2_lvl8"Symbol 408 MovieClip {grayModel_b} Frame 51
"box3_lvl8"Symbol 408 MovieClip {grayModel_b} Frame 52
"invisible"Symbol 408 MovieClip {grayModel_b} Frame 53
"box1_lvl9"Symbol 408 MovieClip {grayModel_b} Frame 54
"box2_lvl9"Symbol 408 MovieClip {grayModel_b} Frame 55
"box1_lvlA"Symbol 408 MovieClip {grayModel_b} Frame 56
"box2_lvlA"Symbol 408 MovieClip {grayModel_b} Frame 57
"box3_lvlA"Symbol 408 MovieClip {grayModel_b} Frame 58
"box4_lvlA"Symbol 408 MovieClip {grayModel_b} Frame 59
"invisible"Symbol 414 MovieClip {grayModel_c} Frame 2
"circle1_lvl8"Symbol 414 MovieClip {grayModel_c} Frame 3
"circle2_lvl8"Symbol 414 MovieClip {grayModel_c} Frame 4
"circle3_lvl8"Symbol 414 MovieClip {grayModel_c} Frame 5
"circle1_lvlA"Symbol 414 MovieClip {grayModel_c} Frame 6
"finish"Symbol 440 MovieClip {RollerBoaster_fla.finishPosition_50} Frame 17




http://swfchan.com/18/89392/info.shtml
Created: 29/3 -2019 00:29:50 Last modified: 29/3 -2019 00:29:50 Server time: 05/05 -2024 13:07:56