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

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

Pumpkin Remover 3 - fun and addicting Halloween physics puzzle game.swf

This is the info page for
Flash #129642

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


Text
A game by Gaz Thomas
creator of

Loading

the game

homepage

.com

the game

homepage

.com

Loaded

Play Game

Play Game

Remove the rotten pumpkins
by clicking on them.

Note: Half white shapes are fixed and don't fall

Don't let any fresh pumpkins
fall off the screen.

Look at the pumpkins face to
see which way it will fall.

Remove black pumpkins
using gravity...

Black Pumpkins
are also flammable

Can you set me on fire?

They only burn
for 8 seconds!

Don't let the fresh pumpkin
fall off the screen!

RED REMOVER

Play

Play

Submit

Submit

Exit

Exit

Exit

Clear

Clear

Clear

Shape

X

C

C

Tools:

Gravity

Color

888

888

+

+

+

-

-

-

Width

Height

888

Angle

x:

y:

40.5

40.5

BG

888

Step:

Edit LVL

Main Menu

Fail!

Try Again

Reset LVL

Submit LVL

Success!

C

C

X

Submit Level:

and it may be featured in the next game, you'll be famous!

Post it here:

Player Levels

Player Levels

Super Stacker 2 Levels

Level Name:

Your Name:

Submit

Submit

Submit

Cancel

Cancel

Submitting

Please wait a moment...

Done

Done

Success!

Here is the link to your level:

Get XML

Get XML

Add to your site

Add to your site

TheGameHomepage.com

TheGameHomepage.com

1.3

3

Pumpkin Remover

More

Play

About

Reset

-contact-

-contact-

-site-

-site-

with music by Tomfoolio

with music by Tomfoolio

with music by Incompetech

Edit

Menu

A game by Gaz Thomas

created using BOX2DAS3

SFX by Johnc, Walter_Odington & Gaz Thomas

and levels by Gaz Thomas & Colin Payette

Message

ok

ok

<p align="right"><font face="Segoe UI" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">1/40</font></p>

<p align="left"><font face="Segoe UI" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">Level Name</font></p>

<p align="left"><font face="Segoe UI" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">par</font></p>

Checking

Checking.

Checking..

Checking...

Resume

Paused

Right Click for sound options

More Games

More Games

LVL Select

Video Walkthrough

Continue

Pause/Reset

Guide

Walkthrough

Message

Yes

No

By Gaz Thomas

By Gaz Thomas

By Gaz

Pumpkin Remover 3

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

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

Retrieving Level Data
Please wait a moment...

Main Menu

Main Menu

Main Menu

Make Level

Make Level

Make Level

20

More Levels

More Levels

More Levels

Locked

Bonus Mode

OFF

ON

Faces

--. .- --..

Russian

Video Walkthrough

Video Walkthrough

Pumpkin Remover 2

Pumpkin Remover 2

Red Remover

Happy Halloween from The Game Homepage!

Happy Halloween from The Game Homepage!

Happy Halloween from The Game Homepage!

Want more
levels?
Check out the
iPhone version!

Want more
levels?
Check out the
iPhone version!

Solution

Solution

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_localPosition:b2Vec2; public var m_radius:Number; public function b2CircleShape(_arg1:b2ShapeDef){ m_localPosition = new b2Vec2(); super(_arg1); var _local2:b2CircleDef = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local10:Number; var _local6:b2Mat22 = _arg1.R; var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; var _local12:Number = (_arg4.p2.x - _arg4.p1.x); var _local13:Number = (_arg4.p2.y - _arg4.p1.y); var _local14:Number = ((_local9 * _local12) + (_local10 * _local13)); var _local15:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local16:Number = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; var _local17:Number = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; _local4 = _arg2.R; var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } override 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)))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number = (m_localPosition.x - _arg1.x); var _local3:Number = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var categoryBits:uint;// = 1 public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 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(){ center = new b2Vec2(0, 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 vertices:Array; public var vertexCount:int; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; var _local1:int; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function 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); } 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++; }; }; } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_obb:b2OBB; public var m_vertices:Array; public var m_normals:Array; public var m_coreVertices:Array; 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 _local3:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; var _local2:b2PolygonDef = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; var _local4:int = _local3; var _local5:int = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local20:Number; var _local21:Number; var _local6:Number = 0; var _local7:Number = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); var _local18 = -1; var _local19:int; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_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); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } override public function ComputeMass(_arg1:b2MassData):void{ var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function GetOBB():b2OBB{ return (m_obb); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetVertexCount():int{ return (m_vertexCount); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetNormals():Array{ return (m_normals); } 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)); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local4:Number; var _local5:Number; m_sweepRadius = 0; var _local3:int; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; var _local6:Number = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 7
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; public class b2Shape { public var m_type:int; public var m_next:b2Shape; public var m_body:b2Body; public var m_sweepRadius:Number; public var m_density:Number; public var m_friction:Number; public var m_restitution:Number; public var m_proxyId:uint; public var m_filter:b2FilterData; public var m_isSensor:Boolean; public var m_userData; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_polygonShape:int = 1; public static const e_shapeTypeCount:int = 2; private static var s_proxyAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_resetAABB: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 GetType():int{ return (m_type); } public function IsSensor():Boolean{ return (m_isSensor); } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function GetBody():b2Body{ return (m_body); } public function GetNext():b2Shape{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function ComputeMass(_arg1:b2MassData):void{ } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetFriction():Number{ return (m_friction); } public function GetRestitution():Number{ return (m_restitution); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB = s_proxyAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; var _local4:b2AABB = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); var _local3:b2AABB = s_resetAABB; ComputeAABB(_local3, _arg2); var _local4:Boolean = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):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); }; } public static function Destroy(_arg1:b2Shape, _arg2):void{ } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var type:int;// = -1 public var userData;// = null public var friction:Number;// = 0.2 public var restitution:Number;// = 0 public var density:Number;// = 0 public var isSensor:Boolean;// = false public var filter:b2FilterData; public function b2ShapeDef(){ 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 lowerBound:b2Vec2; public var upperBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (upperBound.x - lowerBound.x); var _local2:Number = (upperBound.y - lowerBound.y); var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 10
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var value:uint; public var proxyId:uint; public var stabbingCount:uint; public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } public function Swap(_arg1:b2Bound):void{ var _local2:uint = value; var _local3:uint = proxyId; var _local4:uint = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } } }//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_pairManager:b2PairManager; public var m_proxyPool:Array; public var m_freeProxy:uint; public var m_bounds:Array; public var m_queryResults:Array; public var m_queryResultCount:int; public var m_worldAABB:b2AABB; public var m_quantizationFactor:b2Vec2; public var m_proxyCount:int; public var m_timeStamp:uint; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; 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++; }; var _local4:Number = (_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 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 GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; 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; var _local5:uint = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; var _local6:uint = (2 * m_proxyCount); var _local7:Array = new Array(); var _local8:Array = new Array(); ComputeBounds(_local7, _local8, _arg1); var _local9:int; 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++; var _local10:int; 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 _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; var _local4:b2Proxy = m_proxyPool[_arg1]; var _local5:int = (2 * m_proxyCount); var _local6:int; 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++; }; var _local7:int; 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 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 _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; }; var _local12:uint = (2 * m_proxyCount); var _local13:b2Proxy = m_proxyPool[_arg1]; var _local14:b2BoundValues = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); var _local15:b2BoundValues = 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 function Commit():void{ m_pairManager.Commit(); } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local6:uint; var _local7:uint; var _local12:b2Proxy; var _local4:Array = new Array(); var _local5:Array = new Array(); ComputeBounds(_local4, _local5, _arg1); var _local8:Array = [_local6]; var _local9:Array = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); var _local10:int; var _local11:int; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number = _arg3.lowerBound.x; var _local5:Number = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local10:b2Bound; var _local12:int; var _local13:int; var _local14:b2Proxy; var _local8:uint = BinarySearch(_arg5, _arg6, _arg3); var _local9:uint = BinarySearch(_arg5, _arg6, _arg4); var _local11:uint = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.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 IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy = 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++; }; } 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++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local6:int; var _local7:b2Bound; var _local4:int; var _local5:int = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 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 ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); var _local35:int; var _local36:int; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (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 b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; var _local19:b2ManifoldPoint = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 0; }; }; _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; } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var features:Features; public var _key:uint; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function 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 shape1:b2Shape; public var shape2:b2Shape; public var position:b2Vec2; public var velocity:b2Vec2; public var normal:b2Vec2; public var separation:Number; public var friction:Number; public var restitution:Number; public var id:b2ContactID; 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_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p2s: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 ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local4:Number = (100 * Number.MIN_VALUE); var _local5:int; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = 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 _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; var _local8:Array = s_p1s; var _local9:Array = s_p2s; var _local10:Array = s_points; var _local11:int; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); var _local12:Number = 0; var _local13 = 20; var _local14:int; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (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 _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _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(((_local13 * _local13) + (_local14 * _local14))); _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 DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } } }//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 normal:b2Vec2; public var pointCount:int;// = 0 public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var localPoint1:b2Vec2; public var localPoint2:b2Vec2; public var separation:Number; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } 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; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var userData;// = null public var proxyId1:uint; public var proxyId2:uint; public var next:uint; public var status:uint; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairBuffered:uint = 1; public static var e_pairRemoved:uint = 2; public static var e_pairFinal:uint = 4; public function SetBuffered():void{ status = (status | e_pairBuffered); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairAdded(_arg1, _arg2){ return (null); } public function PairRemoved(_arg1, _arg2, _arg3):void{ } } }//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_broadPhase:b2BroadPhase; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_freePair:uint; public var m_pairCount:int; public var m_pairBuffer:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; 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; } 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 = 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(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair = 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(); }; } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; var _local3:int; var _local4:Array = 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(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; var _local5:uint = 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 RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); var _local5:uint = m_hashTable[_local4]; var _local6:b2Pair; 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); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint = 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 ValidateBuffer():void{ } private function ValidateTable():void{ } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint = (((_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)))); } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } } }//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 Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var lowerBounds:Array; public var upperBounds:Array; public var overlapCount:uint; public var timeStamp:uint; public var userData;// = null public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local7) * _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_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; 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 _incidentVertex:int; public var _flip:int; public var _m_id:b2ContactID; public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } public function get incidentEdge():int{ return (_incidentEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get flip():int{ return (_flip); } } }//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 Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } 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 SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local4:Number; var _local6:Number; _local2 = col1.x; var _local3:Number = col2.x; _local4 = col1.y; var _local5:Number = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } public function Abs():void{ col1.Abs(); col2.Abs(); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); 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 function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function 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 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 AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); 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 b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c0:b2Vec2; public var c:b2Vec2; public var a0:Number; public var a:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; var _local3:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } 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; }; } } }//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 SetZero():void{ x = 0; y = 0; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.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 Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const USHRT_MAX:int = 0xFFFF; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxPolygonVertices:int = 8; public static const b2_maxProxies:int = 0x0200; public static const b2_maxPairs:int = 4096; public static const b2_linearSlop:Number = 0.005; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_toiSlop:Number = 0.04; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_velocityThreshold:Number = 1; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearVelocitySquared:Number = 40000; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_timeToSleep:Number = 0.5; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSleepTolerance:Number = 0.0111111111111111; 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.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local8:b2ManifoldPoint; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); var _local7:b2ContactPoint = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = 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); }; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Contact { public var m_flags:uint; public var m_prev:b2Contact; public var m_next:b2Contact; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_manifoldCount:int; public var m_friction:Number; public var m_restitution:Number; public var m_toi:Number; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var e_toiFlag:uint = 8; 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 GetManifolds():Array{ return (null); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function Update(_arg1:b2ContactListener):void{ var _local2:int = m_manifoldCount; Evaluate(_arg1); var _local3:int = m_manifoldCount; var _local4:b2Body = m_shape1.m_body; var _local5:b2Body = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } 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 InitializeRegisters():void{ var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); var _local1:int; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } public static function Destroy(_arg1:b2Contact, _arg2):void{ if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; var _local3:int = _arg1.m_shape1.m_type; var _local4:int = _arg1.m_shape2.m_type; var _local5:b2ContactRegister = s_registers[_local3][_local4]; var _local6:Function = _local5.destroyFcn; _local6(_arg1, _arg2); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var manifold:b2Manifold; public var body1:b2Body; public var body2:b2Body; public var friction:Number; public var restitution:Number; public var pointCount:int; public function b2ContactConstraint(){ normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 40
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var r1:b2Vec2; public var r2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var positionImpulse:Number; public var normalMass:Number; public var tangentMass:Number; public var equalizedMass:Number; public var separation:Number; public var velocityBias:Number; 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 other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var createFcn:Function; public var destroyFcn:Function; public var primary:Boolean; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; public class b2ContactResult { public var shape1:b2Shape; public var shape2:b2Shape; public var position:b2Vec2; public var normal:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2ContactSolver { public var m_step:b2TimeStep; public var m_allocator; public var m_constraints:Array; public var m_constraintCount:int; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; 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++; }; var _local9:int; _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 _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function 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 _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; var _local19:int; 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 _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; var _local1:int; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local3:b2Mat22; var _local4:b2Vec2; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local2:Number = 0; var _local5:int; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _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))); } } }//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 Evaluate(_arg1:b2ContactListener):void{ } override public function GetManifolds():Array{ return (null); } } }//package Box2D.Dynamics.Contacts
Section 46
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = 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++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m0:b2Manifold; private var m_manifolds:Array; 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 Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local7:b2ContactPoint; var _local8:int; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local5:b2Body = m_shape1.m_body; var _local6:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); var _local9:Array = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = 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++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } public static function Destroy(_arg1:b2Contact, _arg2):void{ } } }//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_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_u:b2Vec2; public var m_frequencyHz:Number; public var m_dampingRatio:Number; public var m_gamma:Number; public var m_bias:Number; public var m_impulse:Number; public var m_mass: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 InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local8: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); var _local7:Number = (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); var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x)); var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x)); var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; if (m_frequencyHz > 0){ return (true); }; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local1 = _local2.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local8:Number = (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; var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); var _local12:Number = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local13:Number = (-(m_mass) * _local12); m_u.Set(_local9, _local10); var _local14:Number = (_local13 * m_u.x); var _local15:Number = (_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 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 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function GetReactionTorque():Number{ return (0); } } }//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 localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var length:Number; public var frequencyHz:Number; public var dampingRatio:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 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_ground1:b2Body; public var m_ground2:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_revolute2:b2RevoluteJoint; public var m_prismatic2:b2PrismaticJoint; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_J:b2Jacobian; public var m_constant:Number; public var m_ratio:Number; public var m_mass:Number; public var m_force:Number; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_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 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function GetReactionTorque():Number{ var _local1:b2Mat22 = m_body2.m_xf.R; var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); var _local4:Number = ((_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 InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local15:Number; var _local2:b2Body = m_ground1; var _local3:b2Body = m_ground2; var _local4:b2Body = m_body1; var _local5:b2Body = m_body2; var _local14:Number = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); var _local6:Number = (_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)); } override public function SolvePositionConstraints():Boolean{ var _local4:Number; var _local5:Number; var _local1:Number = 0; var _local2:b2Body = m_body1; var _local3:b2Body = 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(); }; var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5))); var _local7:Number = (-(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)); } } }//package Box2D.Dynamics.Joints
Section 51
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint1:b2Joint; public var joint2:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 52
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var angular1:Number; public var linear2:b2Vec2; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } 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_type:int; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_body1:b2Body; public var m_body2:b2Body; public var m_inv_dt:Number; public var m_islandFlag:Boolean; public var m_collideConnected:Boolean; public var m_userData; public static const e_unknownJoint:int = 0; public static const e_revoluteJoint:int = 1; public static const e_prismaticJoint:int = 2; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_mouseJoint:int = 5; public static const e_gearJoint:int = 6; public static const e_inactiveLimit:int = 0; public static const e_atLowerLimit:int = 1; public static const e_atUpperLimit:int = 2; public static const e_equalLimits:int = 3; 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 GetType():int{ return (m_type); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetReactionForce():b2Vec2{ return (null); } public function GetReactionTorque():Number{ return (0); } public function GetBody1():b2Body{ return (m_body1); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public function SolvePositionConstraints():Boolean{ return (false); } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } public static function Destroy(_arg1:b2Joint, _arg2):void{ } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var type:int; public var userData; public var body1:b2Body; public var body2:b2Body; public var collideConnected:Boolean; 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 other:b2Body; public var joint:b2Joint; public var prev:b2JointEdge; public var next: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 { private var K:b2Mat22; private var K1:b2Mat22; private var K2:b2Mat22; public var m_localAnchor:b2Vec2; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_mass:b2Mat22; public var m_C:b2Vec2; public var m_maxForce:Number; public var m_beta:Number; public var m_gamma:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local3:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); var _local2:Number = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); var _local4:b2Mat22 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); var _local5:Number = m_body2.m_mass; var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6); var _local8:Number = ((_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 GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local7:Number; var _local8: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); var _local6:Number = ((_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); var _local9:Number = (_arg1.dt * m_impulse.x); var _local10:Number = (_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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local2:b2Body = m_body2; _local3 = _local2.m_xf.R; var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _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)); var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); var _local12:Number = m_impulse.x; var _local13:Number = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); var _local14:Number = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); var _local15:Number = (_arg1.dt * _local10); var _local16:Number = (_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)))); } override public function SolvePositionConstraints():Boolean{ return (true); } } }//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 target:b2Vec2; public var maxForce:Number; public var frequencyHz:Number; public var dampingRatio:Number; 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_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_localXAxis1:b2Vec2; public var m_localYAxis1:b2Vec2; public var m_refAngle:Number; public var m_linearJacobian:b2Jacobian; public var m_linearMass:Number; public var m_force:Number; public var m_angularMass:Number; public var m_torque:Number; public var m_motorJacobian:b2Jacobian; public var m_motorMass:Number; public var m_motorForce:Number; public var m_limitForce:Number; public var m_limitPositionImpulse:Number; public var m_lowerTranslation:Number; public var m_upperTranslation:Number; public var m_maxMotorForce:Number; public var m_motorSpeed:Number; public var m_enableLimit:Boolean; public var m_enableMotor:Boolean; public var m_limitState:int; 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)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22 = m_body1.m_xf.R; var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); var _local5:Number = (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 GetReactionTorque():Number{ return (m_torque); } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function GetMotorForce():Number{ return (m_motorForce); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; _local4 = _local2.m_xf.R; var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); var _local17:Number = ((_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; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = _local2.m_invMass; var _local5:Number = _local3.m_invMass; var _local6:Number = _local2.m_invI; var _local7:Number = _local3.m_invI; var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); var _local11:Number = (_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)); var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity); var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); var _local14:Number = (_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)); }; } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local9:b2Mat22; var _local10:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = _local3.m_invMass; var _local6:Number = _local4.m_invMass; var _local7:Number = _local3.m_invI; var _local8:Number = _local4.m_invI; _local9 = _local3.m_xf.R; var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local12:Number = (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; var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local14:Number = (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; var _local15:Number = (_local3.m_sweep.c.x + _local11); var _local16:Number = (_local3.m_sweep.c.y + _local12); var _local17:Number = (_local4.m_sweep.c.x + _local13); var _local18:Number = (_local4.m_sweep.c.y + _local14); var _local19:Number = (_local17 - _local15); var _local20:Number = (_local18 - _local16); _local9 = _local3.m_xf.R; var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); var _local23:Number = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); var _local24:Number = (-(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)); var _local25:Number = b2Math.b2Abs(_local23); var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); var _local27:Number = (-(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(); var _local28:Number = 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)))); } } }//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 localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var enableLimit:Boolean; public var lowerTranslation:Number; public var upperTranslation:Number; public var enableMotor:Boolean; public var maxMotorForce:Number; public var motorSpeed: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_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_constant:Number; public var m_ratio:Number; public var m_maxLength1:Number; public var m_maxLength2:Number; public var m_pulleyMass:Number; public var m_limitMass1:Number; public var m_limitMass2:Number; public var m_force:Number; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_positionImpulse:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_state:int; public var m_limitState1:int; public var m_limitState2:int; 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; } 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 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function GetReactionTorque():Number{ return (0); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } public function GetLength1():Number{ var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetLength2():Number{ var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2); var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local4:Number = (_local1.x - _local2); var _local5:Number = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetRatio():Number{ return (m_ratio); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local2.m_sweep.c.x + _local5); var _local11:Number = (_local2.m_sweep.c.y + _local6); var _local12:Number = (_local3.m_sweep.c.x + _local8); var _local13:Number = (_local3.m_sweep.c.y + _local9); var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); var _local18:Number = m_u1.Length(); var _local19:Number = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_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; }; var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_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)))); }; } override public function SolvePositionConstraints():Boolean{ var _local3:b2Mat22; 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 _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x); var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y); var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x); var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y); var _local23:Number = 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)); } } }//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 groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var length1:Number; public var maxLength1:Number; public var length2:Number; public var maxLength2:Number; public var ratio:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 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 { private var K:b2Mat22; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_pivotForce:b2Vec2; public var m_motorForce:Number; public var m_limitForce:Number; public var m_limitPositionImpulse:Number; public var m_pivotMass:b2Mat22; public var m_motorMass:Number; public var m_enableMotor:Boolean; public var m_maxMotorTorque:Number; public var m_motorSpeed:Number; public var m_enableLimit:Boolean; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle:Number; public var m_limitState:int; 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)); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local7:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local10:Number = _local2.m_invMass; var _local11:Number = _local3.m_invMass; var _local12:Number = _local2.m_invI; var _local13:Number = _local3.m_invI; 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; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local4:b2Mat22; var _local5:Number; var _local10:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; _local4 = _local2.m_xf.R; var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); var _local14:Number = (-(_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); var _local15:Number = (_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)); }; } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local6:b2Mat22; var _local25:Number; var _local26:Number; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; var _local5:Number = 0; _local6 = _local3.m_xf.R; var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local11:Number = (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; var _local12:Number = (_local3.m_sweep.c.x + _local7); var _local13:Number = (_local3.m_sweep.c.y + _local8); var _local14:Number = (_local4.m_sweep.c.x + _local10); var _local15:Number = (_local4.m_sweep.c.y + _local11); var _local16:Number = (_local14 - _local12); var _local17:Number = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); var _local18:Number = _local3.m_invMass; var _local19:Number = _local4.m_invMass; var _local20:Number = _local3.m_invI; var _local21:Number = _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)); var _local22:Number = tImpulse.x; var _local23:Number = 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(); var _local24:Number = 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)))); } } }//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 localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var referenceAngle:Number; public var enableLimit:Boolean; public var lowerAngle:Number; public var upperAngle:Number; public var enableMotor:Boolean; public var motorSpeed:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 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_flags:uint; public var m_type:int; public var m_xf:b2XForm; public var m_sweep:b2Sweep; public var m_linearVelocity:b2Vec2; public var m_angularVelocity:Number; public var m_force:b2Vec2; public var m_torque:Number; public var m_world:b2World; public var m_prev:b2Body; public var m_next:b2Body; public var m_shapeList:b2Shape; public var m_shapeCount:int; public var m_jointList:b2JointEdge; public var m_contactList:b2ContactEdge; public var m_mass:Number; public var m_invMass:Number; public var m_I:Number; public var m_invI:Number; public var m_linearDamping:Number; public var m_angularDamping:Number; public var m_sleepTime:Number; public var m_userData; private static var s_massData:b2MassData = new b2MassData(); private static var s_xf1:b2XForm = new b2XForm(); public static var e_frozenFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var e_sleepFlag:uint = 8; public static var e_allowSleepFlag:uint = 16; public static var e_bulletFlag:uint = 32; public static var e_fixedRotationFlag:uint = 64; public static var e_staticType:uint = 1; public static var e_dynamicType:uint = 2; public static var e_maxTypes:uint = 3; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function 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{ if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); var _local2:b2Shape = m_shapeList; var _local3:b2Shape; var _local4:Boolean; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function SetMassFromShapes():void{ var _local1:b2Shape; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; var _local2:Number = 0; var _local3:Number = 0; var _local4:b2MassData = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); var _local5:b2Mat22 = m_xf.R; var _local6:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; var _local7:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); var _local4:b2Mat22 = m_xf.R; var _local5:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); var _local6:Boolean; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function GetXForm():b2XForm{ return (m_xf); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetAngle():Number{ return (m_sweep.a); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function GetAngularVelocity():Number{ return (m_angularVelocity); } 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 ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } 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 GetMass():Number{ return (m_mass); } public function GetInertia():Number{ return (m_I); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } 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 GetShapeList():b2Shape{ return (m_shapeList); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetNext():b2Body{ return (m_next); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetWorld():b2World{ return (m_world); } public function SynchronizeShapes():Boolean{ var _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function SynchronizeTransform():void{ m_xf.R.Set(m_sweep.a); var _local1:b2Mat22 = m_xf.R; var _local2:b2Vec2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } } }//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 massData:b2MassData; public var userData; public var position:b2Vec2; public var angle:Number; public var linearDamping:Number; public var angularDamping:Number; public var allowSleep:Boolean; public var isSleeping:Boolean; public var fixedRotation:Boolean; public var isBullet:Boolean; 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 = _arg1.GetFilterData(); var _local4:b2FilterData = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 68
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Remove(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_nullContact:b2NullContact; public var m_destroyImmediate:Boolean; 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 = (_arg1 as b2Shape); var _local4:b2Shape = (_arg2 as b2Shape); var _local5:b2Body = _local3.m_body; var _local6:b2Body = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ if (_arg3 == null){ return; }; var _local4:b2Contact = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _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; var _local2:b2Shape = _arg1.m_shape1; var _local3:b2Shape = _arg1.m_shape2; var _local4:int = _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_shape1; _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; }; var _local5:b2Body = _local2.m_body; var _local6:b2Body = _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 _local2:b2Body; var _local3:b2Body; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2DebugDraw { public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 public var m_lineThickness:Number;// = 1 public var m_alpha:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_xformScale:Number;// = 1 public static var e_shapeBit:uint = 1; public static var e_jointBit:uint = 2; public static var e_coreShapeBit:uint = 4; 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_centerOfMassBit:uint = 64; public function b2DebugDraw(){ m_drawFlags = 0; } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function GetFlags():uint{ return (m_drawFlags); } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); var _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function 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)); } } }//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.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_allocator; public var m_listener:b2ContactListener; public var m_bodies:Array; public var m_contacts:Array; public var m_joints:Array; public var m_bodyCount:int; public var m_jointCount:int; public var m_contactCount:int; public var m_bodyCapacity:int; public var m_contactCapacity:int; public var m_jointCapacity:int; public var m_positionIterationCount: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 Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; 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++; }; var _local8:b2ContactSolver = 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 SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local5:b2Body; var _local6:Boolean; var _local3:b2ContactSolver = 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++; }; var _local4:Number = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; var _local4:int; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var dt:Number; public var inv_dt:Number; public var dtRatio:Number; public var maxIterations:int; public var warmStarting:Boolean; public var positionCorrection:Boolean; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_blockAllocator; public var m_stackAllocator; public var m_lock:Boolean; public var m_broadPhase:b2BroadPhase; public var m_contactManager:b2ContactManager; public var m_bodyList:b2Body; public var m_jointList:b2Joint; public var m_contactList:b2Contact; public var m_bodyCount:int; public var m_contactCount:int; public var m_jointCount:int; public var m_gravity:b2Vec2; public var m_allowSleep:Boolean; public var m_groundBody:b2Body; public var m_destructionListener:b2DestructionListener; public var m_boundaryListener:b2BoundaryListener; public var m_contactFilter:b2ContactFilter; public var m_contactListener:b2ContactListener; public var m_debugDraw:b2DebugDraw; public var m_inv_dt0:Number; public var m_positionIterationCount:int; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); private static var s_xf:b2XForm = new b2XForm(); public static var m_positionCorrection:Boolean; public static var m_warmStarting:Boolean; public static var m_continuousPhysics:Boolean; public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ 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); var _local4:b2BodyDef = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function Validate():void{ m_broadPhase.Validate(); } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function CreateBody(_arg1:b2BodyDef):b2Body{ if (m_lock == true){ return (null); }; var _local2:b2Body = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function DestroyBody(_arg1:b2Body):void{ var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; var _local2:b2JointEdge = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; var _local3:b2Shape = _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 CreateJoint(_arg1:b2JointDef):b2Joint{ var _local3:b2Body; var _local4:b2Shape; var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2Body; var _local6:b2Shape; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_body1; var _local4:b2Body = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } public function GetContactCount():int{ return (m_contactCount); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function Step(_arg1:Number, _arg2:int):void{ m_lock = true; var _local3:b2TimeStep = 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 Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array = new Array(_arg3); var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); var _local6:int; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetJointList():b2Joint{ return (m_jointList); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; var _local4:b2Contact = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; var _local5:b2Joint = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; var _local6:int = m_bodyCount; var _local7:Array = new Array(_local6); var _local8:b2Body = 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 SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; 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; var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); var _local9:int = m_bodyCount; var _local10:Array = 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 DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.m_body1; var _local3:b2Body = _arg1.m_body2; var _local4:b2XForm = _local2.m_xf; var _local5:b2XForm = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchor1(); var _local9:b2Vec2 = _arg1.GetAnchor2(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; var _local5:b2Color = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function DrawDebugData():void{ var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local11:b2XForm; var _local15:Boolean; var _local16:uint; var _local17:b2Pair; var _local18:b2Proxy; var _local19:b2Proxy; var _local20:b2Vec2; var _local21:b2Vec2; var _local22:b2Proxy; var _local23:b2PolygonShape; var _local24:b2OBB; var _local25:b2Vec2; var _local26:b2Mat22; var _local27:b2Vec2; var _local28:Number; if (m_debugDraw == null){ return; }; m_debugDraw.m_sprite.graphics.clear(); var _local1:uint = m_debugDraw.GetFlags(); var _local7:b2Vec2 = new b2Vec2(); var _local8:b2Vec2 = new b2Vec2(); var _local9:b2Vec2 = new b2Vec2(); var _local10:b2Color = new b2Color(0, 0, 0); var _local12:b2AABB = new b2AABB(); var _local13:b2AABB = new b2AABB(); var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_shapeBit)){ _local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local3.IsStatic()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15); } else { if (_local3.IsSleeping()){ DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15); } else { DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15); }; }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_jointBit)){ _local5 = m_jointList; while (_local5) { DrawJoint(_local5); _local5 = _local5.m_next; }; }; if ((_local1 & b2DebugDraw.e_pairBit)){ _local6 = m_broadPhase; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.9, 0.3); _local2 = 0; while (_local2 < b2Pair.b2_tableCapacity) { _local16 = _local6.m_pairManager.m_hashTable[_local2]; while (_local16 != b2Pair.b2_nullPair) { _local17 = _local6.m_pairManager.m_pairs[_local16]; _local18 = _local6.m_proxyPool[_local17.proxyId1]; _local19 = _local6.m_proxyPool[_local17.proxyId2]; _local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value)); _local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value)); _local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value)); _local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value)); _local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value)); _local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value)); _local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value)); _local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value)); _local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x)); _local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y)); _local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x)); _local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y)); m_debugDraw.DrawSegment(_local8, _local9, _local10); _local16 = _local17.next; }; _local2++; }; }; if ((_local1 & b2DebugDraw.e_aabbBit)){ _local6 = m_broadPhase; _local20 = _local6.m_worldAABB.lowerBound; _local21 = _local6.m_worldAABB.upperBound; _local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y)); _local10.Set(0.9, 0.3, 0.9); _local2 = 0; while (_local2 < b2Settings.b2_maxProxies) { _local22 = _local6.m_proxyPool[_local2]; if (_local22.IsValid() == false){ } else { _local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value)); _local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value)); _local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value)); _local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value)); _local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y); _local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y); _local14[2].Set(_local12.upperBound.x, _local12.upperBound.y); _local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y); m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local2++; }; _local14[0].Set(_local20.x, _local20.y); _local14[1].Set(_local21.x, _local20.y); _local14[2].Set(_local21.x, _local21.y); _local14[3].Set(_local20.x, _local21.y); m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9)); }; if ((_local1 & b2DebugDraw.e_obbBit)){ _local10.Set(0.5, 0.3, 0.5); _local3 = m_bodyList; while (_local3) { _local11 = _local3.m_xf; _local4 = _local3.GetShapeList(); while (_local4) { if (_local4.m_type != b2Shape.e_polygonShape){ } else { _local23 = (_local4 as b2PolygonShape); _local24 = _local23.GetOBB(); _local25 = _local24.extents; _local14[0].Set(-(_local25.x), -(_local25.y)); _local14[1].Set(_local25.x, -(_local25.y)); _local14[2].Set(_local25.x, _local25.y); _local14[3].Set(-(_local25.x), _local25.y); _local2 = 0; while (_local2 < 4) { _local26 = _local24.R; _local27 = _local14[_local2]; _local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local26 = _local11.R; _local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y))); _local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y))); _local14[_local2].x = _local28; _local2++; }; m_debugDraw.DrawPolygon(_local14, 4, _local10); }; _local4 = _local4.m_next; }; _local3 = _local3.m_next; }; }; if ((_local1 & b2DebugDraw.e_centerOfMassBit)){ _local3 = m_bodyList; while (_local3) { _local11 = s_xf; _local11.R = _local3.m_xf.R; _local11.position = _local3.GetWorldCenter(); m_debugDraw.DrawXForm(_local11); _local3 = _local3.m_next; }; }; } } }//package Box2D.Dynamics
Section 75
//KongregateEvent (com.kongregate.as3.client.events.KongregateEvent) package com.kongregate.as3.client.events { import flash.events.*; public class KongregateEvent extends Event { public static const COMPLETE:String = "component_api_available"; public function KongregateEvent(_arg1:String){ super(_arg1); } } }//package com.kongregate.as3.client.events
Section 76
//AbstractShadowService (com.kongregate.as3.client.services.AbstractShadowService) package com.kongregate.as3.client.services { import flash.events.*; public class AbstractShadowService extends EventDispatcher { protected function alert(_arg1:String, _arg2:String, _arg3="", _arg4:String=""):void{ trace(((((((("Kongregate API: " + _arg1) + ".") + _arg2) + "(") + _arg3) + ") ") + _arg4)); } } }//package com.kongregate.as3.client.services
Section 77
//HighScoreServiceShadow (com.kongregate.as3.client.services.HighScoreServiceShadow) package com.kongregate.as3.client.services { public class HighScoreServiceShadow extends AbstractShadowService implements IHighScoreServices { private var mode:String; public function HighScoreServiceShadow(){ mode = ""; } public function submit(_arg1:Number, _arg2:String=null):void{ alert("IHighScoreServices", "submit", arguments); } public function connect():Boolean{ alert("IKongregateServices", "connect"); return (true); } public function requestList(_arg1:Function):void{ alert("IHighScoreServices", "requestList", "", (("[Mode: " + mode) + "]")); _arg1({success:false}); } public function setMode(_arg1:String):void{ alert("IHighScoreServices", "setMode", arguments); this.mode = _arg1; } } }//package com.kongregate.as3.client.services
Section 78
//IHighScoreServices (com.kongregate.as3.client.services.IHighScoreServices) package com.kongregate.as3.client.services { public interface IHighScoreServices { function setMode(_arg1:String):void; function submit(_arg1:Number, _arg2:String=null):void; function requestList(_arg1:Function):void; } }//package com.kongregate.as3.client.services
Section 79
//IKongregateServices (com.kongregate.as3.client.services.IKongregateServices) package com.kongregate.as3.client.services { import flash.events.*; public interface IKongregateServices extends IEventDispatcher { function getPlayerInfo(_arg1:Function):void; function connect(_arg1:Number=-1):Boolean; } }//package com.kongregate.as3.client.services
Section 80
//IStatServices (com.kongregate.as3.client.services.IStatServices) package com.kongregate.as3.client.services { public interface IStatServices { function submitArray(_arg1:Array):void; function submit(_arg1:String, _arg2:Number):void; } }//package com.kongregate.as3.client.services
Section 81
//IUserServices (com.kongregate.as3.client.services.IUserServices) package com.kongregate.as3.client.services { public interface IUserServices { function getName():String; function getPlayerInfo(_arg1:Function):void; } }//package com.kongregate.as3.client.services
Section 82
//KongregateServiceShadow (com.kongregate.as3.client.services.KongregateServiceShadow) package com.kongregate.as3.client.services { public class KongregateServiceShadow extends AbstractShadowService implements IKongregateServices { public function getName():String{ alert("IKongregateServices", "getName"); return ("Guest"); } public function connect(_arg1:Number=-1):Boolean{ alert("IKongregateServices", "connect", arguments); return (true); } public function getPlayerInfo(_arg1:Function):void{ alert("IKongregateServices", "getPlayerInfo"); _arg1(new Object()); } } }//package com.kongregate.as3.client.services
Section 83
//StatServiceShadow (com.kongregate.as3.client.services.StatServiceShadow) package com.kongregate.as3.client.services { public class StatServiceShadow extends AbstractShadowService implements IStatServices { public function submitArray(_arg1:Array):void{ alert("IStatServices", "submitArray", arguments); } public function submit(_arg1:String, _arg2:Number):void{ alert("IStatServices", "submitStat", arguments); } } }//package com.kongregate.as3.client.services
Section 84
//UserServiceShadow (com.kongregate.as3.client.services.UserServiceShadow) package com.kongregate.as3.client.services { public class UserServiceShadow extends AbstractShadowService implements IUserServices { public function getName():String{ alert("UserService", "getName"); return ("Guest"); } public function getPlayerInfo(_arg1:Function):void{ alert("UserService", "getPlayerInfo"); _arg1({isGuest:true, name:"Guest", points:0, level:0, isMode:false, isAdmin:false, isDeveloper:false, avatarPath:"", chatAvatarPath:""}); } } }//package com.kongregate.as3.client.services
Section 85
//IAPIBootstrap (com.kongregate.as3.client.IAPIBootstrap) package com.kongregate.as3.client { import flash.events.*; import flash.display.*; public interface IAPIBootstrap { function init(_arg1:Event=null, _arg2:Stage=null):void; function hideLog():void; function showLog(_arg1:int=0):void; } }//package com.kongregate.as3.client
Section 86
//KongregateAPI (com.kongregate.as3.client.KongregateAPI) package com.kongregate.as3.client { import flash.events.*; import flash.display.*; import com.kongregate.as3.client.services.*; import com.kongregate.as3.client.events.*; import flash.utils.*; import flash.system.*; import flash.net.*; import flash.errors.*; public class KongregateAPI extends Sprite { private const VERSION:Number = 1; private var loader:Loader; private var loadedDomain:ApplicationDomain; private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices"; private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices"; private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices"; private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices"; private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf"; private static var _connected:Boolean; private static var kUser:IUserServices; private static var _loaded:Boolean; private static var kServices:IKongregateServices; private static var kScores:IHighScoreServices; private static var mInstance:KongregateAPI; private static var kStats:IStatServices; private static var kAPI:IAPIBootstrap; public function KongregateAPI(){ if (mInstance != null){ throw (new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access.")); }; mInstance = this; this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true); } public function get loaded():Boolean{ return (_loaded); } public function get connected():Boolean{ return (_connected); } private function alertConnected(_arg1:TimerEvent=null):void{ var _local2:KongregateEvent; var _local3:Boolean; _local2 = new KongregateEvent(KongregateEvent.COMPLETE); _local3 = this.dispatchEvent(_local2); } private function init(_arg1:Event):void{ var _local2:Object; var _local3:String; var _local4:URLRequest; var _local5:LoaderContext; this.removeEventListener(Event.ADDED_TO_STAGE, init); _loaded = false; _connected = false; _local2 = LoaderInfo(root.loaderInfo).parameters; _local3 = _local2.api_path; if (_local3 == null){ trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded."); createShadowServices(); return; }; Security.allowDomain("*.kongregate.com"); Security.allowDomain("kongregatetrunk.com"); _local4 = new URLRequest(_local3); _local5 = new LoaderContext(false); _local5.applicationDomain = ApplicationDomain.currentDomain; _local5.securityDomain = SecurityDomain.currentDomain; loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete); loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); loader.load(_local4, _local5); } public function get api():IAPIBootstrap{ return (kAPI); } private function loadComplete(_arg1:Event):void{ getServices(); } public function get scores():IHighScoreServices{ return (kScores); } private function ioErrorHandler(_arg1:IOErrorEvent):void{ throw (new IOError(("API file not found. " + _arg1))); } public function get services():IKongregateServices{ return (kServices); } public function get stats():IStatServices{ return (kStats); } private function createShadowServices():void{ var _local1:Timer; trace(">>> Kongregate Shadow Services instantiated for local development.."); kServices = new KongregateServiceShadow(); kScores = new HighScoreServiceShadow(); kStats = new StatServiceShadow(); kUser = new UserServiceShadow(); _local1 = new Timer(200, 1); _local1.addEventListener(TimerEvent.TIMER_COMPLETE, alertConnected); _local1.start(); _connected = true; } public function get user():IUserServices{ return (kUser); } private function getServices():void{ var _local1:ApplicationDomain; var _local2:*; var _local3:*; var _local4:*; var _local5:*; _local1 = ApplicationDomain.currentDomain; kAPI = IAPIBootstrap(loader.getChildAt(0)); this.addChild(loader); _local2 = _local1.getDefinition(CLASS_SERVICES); trace(_local2); kServices = _local2.getInstance(); _local3 = _local1.getDefinition(CLASS_SCORES); kScores = _local3.getInstance(); _local4 = _local1.getDefinition(CLASS_STATS); kStats = _local4.getInstance(); _local5 = _local1.getDefinition(CLASS_USER); kUser = _local5.getInstance(); kServices.connect(VERSION); _loaded = true; _connected = true; alertConnected(); } public static function getInstance():KongregateAPI{ if (!mInstance){ throw (new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it.")); }; return (mInstance); } } }//package com.kongregate.as3.client
Section 87
//Bounce (fl.transitions.easing.Bounce) package fl.transitions.easing { public class Bounce { public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); if (_arg1 < (1 / 2.75)){ return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2)); }; if (_arg1 < (2 / 2.75)){ _arg1 = (_arg1 - (1.5 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2)); }; if (_arg1 < (2.5 / 2.75)){ _arg1 = (_arg1 - (2.25 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2)); }; _arg1 = (_arg1 - (2.625 / 2.75)); return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2)); } public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return (((_arg3 - easeOut((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ if (_arg1 < (_arg4 / 2)){ return (((easeIn((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2)); }; return ((((easeOut(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2)); } } }//package fl.transitions.easing
Section 88
//Strong (fl.transitions.easing.Strong) package fl.transitions.easing { public class Strong { public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / _arg4); return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); } public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = ((_arg1 / _arg4) - 1); return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2)); } public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ _arg1 = (_arg1 / (_arg4 / 2)); if (_arg1 < 1){ return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2)); }; _arg1 = (_arg1 - 2); return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2)); } } }//package fl.transitions.easing
Section 89
//Tween (fl.transitions.Tween) package fl.transitions { import flash.events.*; import flash.display.*; import flash.utils.*; public class Tween extends EventDispatcher { public var isPlaying:Boolean;// = false public var obj:Object;// = null public var prop:String;// = "" public var func:Function; public var begin:Number;// = NAN public var change:Number;// = NAN public var useSeconds:Boolean;// = false public var prevTime:Number;// = NAN public var prevPos:Number;// = NAN public var looping:Boolean;// = false private var _duration:Number;// = NAN private var _time:Number;// = NAN private var _fps:Number;// = NAN private var _position:Number;// = NAN private var _startTime:Number;// = NAN private var _intervalID:uint;// = 0 private var _finish:Number;// = NAN private var _timer:Timer;// = null protected static var _mc:MovieClip = new MovieClip(); public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){ this.func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{ return ((((_arg3 * _arg1) / _arg4) + _arg2)); }; super(); if (!arguments.length){ return; }; this.obj = _arg1; this.prop = _arg2; this.begin = _arg4; this.position = _arg4; this.duration = _arg6; this.useSeconds = _arg7; if ((_arg3 is Function)){ this.func = _arg3; }; this.finish = _arg5; this._timer = new Timer(100); this.start(); } public function get time():Number{ return (this._time); } public function set time(_arg1:Number):void{ this.prevTime = this._time; if (_arg1 > this.duration){ if (this.looping){ this.rewind((_arg1 - this._duration)); this.update(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position)); } else { if (this.useSeconds){ this._time = this._duration; this.update(); }; this.stop(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position)); }; } else { if (_arg1 < 0){ this.rewind(); this.update(); } else { this._time = _arg1; this.update(); }; }; } public function get duration():Number{ return (this._duration); } public function set duration(_arg1:Number):void{ this._duration = ((_arg1)<=0) ? Infinity : _arg1; } public function get FPS():Number{ return (this._fps); } public function set FPS(_arg1:Number):void{ var _local2:Boolean = this.isPlaying; this.stopEnterFrame(); this._fps = _arg1; if (_local2){ this.startEnterFrame(); }; } public function get position():Number{ return (this.getPosition(this._time)); } public function set position(_arg1:Number):void{ this.setPosition(_arg1); } public function getPosition(_arg1:Number=NaN):Number{ if (isNaN(_arg1)){ _arg1 = this._time; }; return (this.func(_arg1, this.begin, this.change, this._duration)); } public function setPosition(_arg1:Number):void{ this.prevPos = this._position; if (this.prop.length){ this.obj[this.prop] = (this._position = _arg1); }; this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position)); } public function get finish():Number{ return ((this.begin + this.change)); } public function set finish(_arg1:Number):void{ this.change = (_arg1 - this.begin); } public function continueTo(_arg1:Number, _arg2:Number):void{ this.begin = this.position; this.finish = _arg1; if (!isNaN(_arg2)){ this.duration = _arg2; }; this.start(); } public function yoyo():void{ this.continueTo(this.begin, this.time); } protected function startEnterFrame():void{ var _local1:Number; if (isNaN(this._fps)){ _mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true); } else { _local1 = (1000 / this._fps); this._timer.delay = _local1; this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true); this._timer.start(); }; this.isPlaying = true; } protected function stopEnterFrame():void{ if (isNaN(this._fps)){ _mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame); } else { this._timer.stop(); }; this.isPlaying = false; } public function start():void{ this.rewind(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position)); } public function stop():void{ this.stopEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position)); } public function resume():void{ this.fixTime(); this.startEnterFrame(); this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position)); } public function rewind(_arg1:Number=0):void{ this._time = _arg1; this.fixTime(); this.update(); } public function fforward():void{ this.time = this._duration; this.fixTime(); } public function nextFrame():void{ if (this.useSeconds){ this.time = ((getTimer() - this._startTime) / 1000); } else { this.time = (this._time + 1); }; } protected function onEnterFrame(_arg1:Event):void{ this.nextFrame(); } protected function timerHandler(_arg1:TimerEvent):void{ this.nextFrame(); _arg1.updateAfterEvent(); } public function prevFrame():void{ if (!this.useSeconds){ this.time = (this._time - 1); }; } private function fixTime():void{ if (this.useSeconds){ this._startTime = (getTimer() - (this._time * 1000)); }; } private function update():void{ this.setPosition(this.getPosition(this._time)); } } }//package fl.transitions
Section 90
//TweenEvent (fl.transitions.TweenEvent) package fl.transitions { import flash.events.*; public class TweenEvent extends Event { public var time:Number;// = NAN public var position:Number;// = NAN public static const MOTION_START:String = "motionStart"; public static const MOTION_STOP:String = "motionStop"; public static const MOTION_FINISH:String = "motionFinish"; public static const MOTION_CHANGE:String = "motionChange"; public static const MOTION_RESUME:String = "motionResume"; public static const MOTION_LOOP:String = "motionLoop"; public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){ super(_arg1, _arg4, _arg5); this.time = _arg2; this.position = _arg3; } override public function clone():Event{ return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable)); } } }//package fl.transitions
Section 91
//levelselecttile_95 (pumpkin_fla.levelselecttile_95) package pumpkin_fla { import flash.display.*; import flash.text.*; public dynamic class levelselecttile_95 extends MovieClip { public var n:TextField; public var bg:MovieClip; public var i:int; public var stat:String; public function levelselecttile_95(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 92
//LSbtnbg_96 (pumpkin_fla.LSbtnbg_96) package pumpkin_fla { import flash.display.*; public dynamic class LSbtnbg_96 extends MovieClip { public function LSbtnbg_96(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 93
//rewardbonusmode_98 (pumpkin_fla.rewardbonusmode_98) package pumpkin_fla { import flash.display.*; public dynamic class rewardbonusmode_98 extends MovieClip { public function rewardbonusmode_98(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 94
//rewardfaces_100 (pumpkin_fla.rewardfaces_100) package pumpkin_fla { import flash.display.*; public dynamic class rewardfaces_100 extends MovieClip { public function rewardfaces_100(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 95
//rewardmorse_101 (pumpkin_fla.rewardmorse_101) package pumpkin_fla { import flash.display.*; public dynamic class rewardmorse_101 extends MovieClip { public function rewardmorse_101(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 96
//rewardrussian_103 (pumpkin_fla.rewardrussian_103) package pumpkin_fla { import flash.display.*; public dynamic class rewardrussian_103 extends MovieClip { public function rewardrussian_103(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 97
//sel_btn_17 (pumpkin_fla.sel_btn_17) package pumpkin_fla { import flash.display.*; public dynamic class sel_btn_17 extends MovieClip { public function sel_btn_17(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 98
//sel_dir_bg_13 (pumpkin_fla.sel_dir_bg_13) package pumpkin_fla { import flash.display.*; public dynamic class sel_dir_bg_13 extends MovieClip { public function sel_dir_bg_13(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 99
//sel_icon_12 (pumpkin_fla.sel_icon_12) package pumpkin_fla { import flash.display.*; public dynamic class sel_icon_12 extends MovieClip { public var bg:MovieClip; public function sel_icon_12(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package pumpkin_fla
Section 100
//sel_mc_16 (pumpkin_fla.sel_mc_16) package pumpkin_fla { import flash.events.*; import flash.display.*; public dynamic class sel_mc_16 extends MovieClip { public var g:MovieClip; public var b:MovieClip; public var isSelected:Boolean; public function sel_mc_16(){ addFrameScript(0, frame1); } public function mover(_arg1:MouseEvent){ b.gotoAndStop(2); } public function mout(_arg1:MouseEvent){ if (!isSelected){ b.gotoAndStop(1); }; } public function deselect(){ isSelected = false; b.gotoAndStop(1); } public function select(){ isSelected = true; b.gotoAndStop(2); } function frame1(){ isSelected = false; mouseChildren = false; g.gotoAndStop(name); g.mouseEnabled = false; addEventListener(MouseEvent.MOUSE_OVER, mover); addEventListener(MouseEvent.MOUSE_OUT, mout); stop(); } } }//package pumpkin_fla
Section 101
//title_90 (pumpkin_fla.title_90) package pumpkin_fla { import flash.events.*; import flash.display.*; import flash.net.*; public dynamic class title_90 extends MovieClip { public var bygazbtn:SimpleButton; public function title_90(){ addFrameScript(0, frame1); } public function mgPressed(_arg1:MouseEvent){ var _local2 = "http://www.thegamehomepage.com/"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } function frame1(){ bygazbtn.addEventListener(MouseEvent.CLICK, mgPressed, false, 0, true); } } }//package pumpkin_fla
Section 102
//__ASSETS (__ASSETS) package { import flash.display.*; public dynamic class __ASSETS extends MovieClip { public function __ASSETS(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 103
//AdIntegrator (AdIntegrator) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.net.*; import flash.external.*; public class AdIntegrator { public static const INTERGI_DOMAIN:String = "intergi.com"; public static const INTERGI_LIVE_LOCATION:String = (("http://cdn." + INTERGI_DOMAIN) + "/"); public static const INTERGI_API_SWF_NAME:String = "AdLoader.swf"; protected static var mAdIntegratorType:int; private static var mTotalAdWidth:int; private static var mGameID:String; private static var mAdURL:String; private static var mAdClip; private static var mCallbacks:Array; private static var mAdLoader:Loader; private static var mInitialized:Boolean = false; private static var mLoadingText:TextField; private static var mAdClipHolder:DisplayObjectContainer; private static var mAdLoaderLocation:String; private static var mTotalAdHeight:int; private static var mAdClipHolderSub:MovieClip; private static var mStopAdImmediate:Boolean; protected static function DebugLogOut(_arg1:Event):void{ trace(_arg1.target.data); } protected static function CheckInitialized():void{ if (!mInitialized){ throw (new Error("Error, not initialized")); }; } protected static function DebugOutput(_arg1:String):void{ ExternalInterface.call("console.log", _arg1); } protected static function LoadAdComplete(_arg1:Event):void{ mAdClip = (_arg1.target.content as DisplayObjectContainer); if (mAdClipHolder == null){ mAdClip.StopAdImmediate = true; mAdClip = null; }; if (mStopAdImmediate){ RemoveCleanupAd(false); } else { mAdClip.AdURL = mAdURL; mAdClip.PermissionToStartAd = true; mAdClip.addEventListener(Event.ENTER_FRAME, CheckAdStatus); mAdClipHolderSub.addChild(mAdClip); mAdClipHolderSub.addEventListener(Event.ENTER_FRAME, CheckAdStatus); }; } protected static function RemoveCleanupAd(_arg1:Boolean):void{ if (mAdClip){ mAdClip.StopAdImmediate = true; if (mAdClipHolderSub){ if (mAdClipHolderSub.contains(mAdClip)){ mAdClipHolderSub.removeChild(mAdClip); mAdClipHolderSub.removeEventListener(Event.ENTER_FRAME, CheckAdStatus); }; if (mAdClipHolder){ mAdClipHolder.removeChild(mAdClipHolderSub); }; }; mAdClip.removeEventListener(Event.ENTER_FRAME, CheckAdStatus); mAdClip = null; }; if (mLoadingText){ mAdClipHolderSub.removeChild(mLoadingText); }; mStopAdImmediate = true; mAdClipHolderSub = null; mAdClipHolder = null; mAdLoader = null; if (mCallbacks["ShowAd"]){ var _local2 = mCallbacks; _local2["ShowAd"](_arg1); }; mCallbacks["ShowAd"] = null; } protected static function ShowAdErrorCallback(_arg1:Event):void{ RemoveCleanupAd(false); } public static function ShowAd(_arg1:DisplayObjectContainer, _arg2:int, _arg3:int, _arg4:Function, _arg5:String=""):void{ CheckInitialized(); if (mCallbacks["ShowAd"] != null){ trace("Error, attempting to ShowAd while already waiting for callback"); return; }; mCallbacks["ShowAd"] = _arg4; mTotalAdWidth = _arg2; mTotalAdHeight = _arg3; mAdClipHolder = _arg1; mAdClipHolderSub = new MovieClip(); mAdClipHolder.addChild(mAdClipHolderSub); mStopAdImmediate = false; mAdLoader = new Loader(); mAdLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadAdComplete); mAdLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ShowAdErrorCallback); var _local6:String = (((((((mAdLoaderLocation + INTERGI_API_SWF_NAME) + "?GameID=") + mGameID) + "&width=") + _arg2) + "&height=") + _arg3); mAdLoader.load(new URLRequest(_local6)); ShowLoadingText(_arg5); } protected static function ShowLoadingText(_arg1:String=""):void{ mLoadingText = new TextField(); mLoadingText.text = ((_arg1) || ("While we load your next level, here is a short message from our sponsor.")); mLoadingText.width = mTotalAdWidth; mLoadingText.height = 30; mLoadingText.wordWrap = true; mLoadingText.y = ((mTotalAdHeight - mLoadingText.height) / 2); var _local2:TextFormat = mLoadingText.getTextFormat(); _local2.align = "center"; _local2.font = "arial"; _local2.bold = true; _local2.color = 0xFFFFFF; _local2.size = 16; mLoadingText.setTextFormat(_local2); mLoadingText.selectable = false; mLoadingText.autoSize = "left"; mAdClipHolderSub.addChild(mLoadingText); } public static function Initialize(_arg1:String, _arg2:String):void{ mGameID = _arg1; mAdURL = _arg2; mCallbacks = new Array(); mAdLoaderLocation = INTERGI_LIVE_LOCATION; mInitialized = true; } protected static function CheckAdStatus(_arg1:Event):void{ if (((mAdClip.hasOwnProperty("MovieFinishedPlaying")) && ((mAdClip.MovieFinishedPlaying == 1)))){ RemoveCleanupAd(mAdClip.AdWasShown); }; } } }//package
Section 104
//AGteaser_mc (AGteaser_mc) package { import flash.events.*; import flash.display.*; import fl.transitions.*; import fl.transitions.easing.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class AGteaser_mc extends MovieClip { public var AGlogo_mc:MovieClip; public var AGclick_btn:SimpleButton; public var AGpresented_mc:MovieClip; public var AGskip_btn:SimpleButton; public var main:Main; public var smash:Smash; public var timer:Timer; public var p_in; public function AGteaser_mc(){ addFrameScript(0, frame1, 1, frame2); } public function done(_arg1:Event){ timer.stop(); main.AGDone(); main.removeChild(this); } public function logo(_arg1:TweenEvent){ var crunch:Function; var event = _arg1; crunch = function (_arg1:TweenEvent){ smash.play(); AGclick_btn.visible = true; new Tween(AGlogo_mc, "y", Bounce.easeOut, 60, 85, 6, false); new Tween(AGlogo_mc, "x", Bounce.easeOut, 30, 50, 6, false); new Tween(AGpresented_mc, "y", Bounce.easeOut, 15, 25, 6, false); new Tween(AGpresented_mc, "x", Bounce.easeOut, 110, 100, 6, false); }; var logo_in:* = new Tween(AGlogo_mc, "y", Strong.easeIn, -75, 85, 12, false); logo_in.addEventListener(TweenEvent.MOTION_FINISH, crunch); } public function loadAG(_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://www.addictinggames.com"); navigateToURL(_local2, "_blank"); } function frame1(){ } function frame2(){ stop(); smash = new Smash(); AGpresented_mc.alpha = 0; AGclick_btn.visible = false; timer = new Timer(3000); timer.addEventListener(TimerEvent.TIMER, done); timer.start(); p_in = new Tween(AGpresented_mc, "alpha", Strong.easeIn, 0, 100, 12, false); p_in.addEventListener(TweenEvent.MOTION_FINISH, logo); AGskip_btn.addEventListener(MouseEvent.CLICK, done); AGclick_btn.addEventListener(MouseEvent.CLICK, loadAG); } } }//package
Section 105
//alt_face (alt_face) package { import flash.display.*; public dynamic class alt_face extends MovieClip { } }//package
Section 106
//alt_face_angry (alt_face_angry) package { import flash.display.*; public dynamic class alt_face_angry extends MovieClip { public var eye1:MovieClip; public var eye2:MovieClip; public function alt_face_angry(){ addFrameScript(53, frame54, 57, frame58); } function frame54(){ play(); } function frame58(){ gotoAndPlay(4); } } }//package
Section 107
//bg_mc (bg_mc) package { import flash.display.*; import flash.text.*; public dynamic class bg_mc extends MovieClip { public var bottomlefttxt:TextField; public var toplefttxt:TextField; public var bg:MovieClip; public var lvltxt:TextField; public function bg_mc(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 108
//bg_mc_e (bg_mc_e) package { import flash.display.*; public dynamic class bg_mc_e extends MovieClip { } }//package
Section 109
//bonus_cover (bonus_cover) package { import flash.display.*; public dynamic class bonus_cover extends MovieClip { } }//package
Section 110
//c (c) package { import flash.display.*; public dynamic class c extends MovieClip { public function c(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 111
//checking_mc (checking_mc) package { import flash.display.*; public dynamic class checking_mc extends MovieClip { } }//package
Section 112
//code_popup (code_popup) package { import flash.display.*; import flash.text.*; public dynamic class code_popup extends MovieClip { public var cancelbtn:SimpleButton; public var getxmlbtn:SimpleButton; public var urlBox:TextField; public var bg_cover:MovieClip; public var forumbtn:SimpleButton; public var okbtn:SimpleButton; public var authorBox:TextField; public var submitbtn:SimpleButton; public var titleBox:TextField; public var urlt:String; public function code_popup(){ addFrameScript(0, frame1, 1, frame2, 2, frame3); } function frame1(){ urlt = ""; stop(); } function frame2(){ stop(); } function frame3(){ urlBox.text = urlt; } } }//package
Section 113
//copy (copy) package { import flash.display.*; public dynamic class copy extends MovieClip { } }//package
Section 114
//custom_lvlfailed_mc (custom_lvlfailed_mc) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class custom_lvlfailed_mc extends MovieClip { public var editbtn:SimpleButton; public var mmbtn:SimpleButton; public var retrybtn:SimpleButton; public function custom_lvlfailed_mc(){ addFrameScript(0, frame1); } function frame1(){ if (MovieClip(root).sfxOn){ MovieClip(root).s_fail.play(); }; stop(); } } }//package
Section 115
//custom_lvlpassed_mc (custom_lvlpassed_mc) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class custom_lvlpassed_mc extends MovieClip { public var editbtn:SimpleButton; public var retrybtn:SimpleButton; public var sharebtn:SimpleButton; public function custom_lvlpassed_mc(){ addFrameScript(0, frame1); } function frame1(){ if (MovieClip(root).sfxOn){ MovieClip(root).s_pass.play(); }; stop(); } } }//package
Section 116
//custom_lvlpaused_mc (custom_lvlpaused_mc) package { import flash.display.*; public dynamic class custom_lvlpaused_mc extends MovieClip { public var resumebtn:SimpleButton; public var resetbtn:SimpleButton; public var editbtn:SimpleButton; } }//package
Section 117
//cut (cut) package { import flash.display.*; public dynamic class cut extends MovieClip { } }//package
Section 118
//del (del) package { import flash.display.*; public dynamic class del extends MovieClip { } }//package
Section 119
//e_shapeHolder (e_shapeHolder) package { import flash.display.*; public dynamic class e_shapeHolder extends MovieClip { public var hh:MovieClip; } }//package
Section 120
//editor (editor) package { import flash.display.*; import flash.text.*; public dynamic class editor extends MovieClip { public var steppm:MovieClip; public var wpm:MovieClip; public var btn_getCode:SimpleButton; public var selgroundr:MovieClip; public var selrotten:MovieClip; public var selcolred:MovieClip; public var selcut:MovieClip; public var selgravdown:MovieClip; public var selcolblue:MovieClip; public var aBox:TextField; public var btn_clear:SimpleButton; public var iconbtn:MovieClip; public var selgravup:MovieClip; public var seldel:MovieClip; public var apm:MovieClip; public var wBox:TextField; public var selcolgreen:MovieClip; public var btn_testStack:SimpleButton; public var shapeHolder:e_shapeHolder; public var bg:MovieClip; public var selgravleft:MovieClip; public var selcopy:MovieClip; public var bgbtns:MovieClip; public var sellit:MovieClip; public var selcoldarkred:MovieClip; public var btn_exit:SimpleButton; public var selr:MovieClip; public var selfresh:MovieClip; public var stepBox:TextField; public var selgravright:MovieClip; public var selunlit:MovieClip; public var selc:MovieClip; public var yBox:TextField; public var hBox:TextField; public var selgroundc:MovieClip; public var selgravnone:MovieClip; public var xBox:TextField; public var hpm:MovieClip; public function editor(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 121
//EShapePreview (EShapePreview) package { import flash.events.*; import flash.display.*; import flash.utils.*; public class EShapePreview extends MovieClip { var h:MovieClip; var step:Number; public function EShapePreview(_arg1:XML, _arg2:Number){ step = _arg2; init(_arg1); } public function init(_arg1:XML){ addShape(_arg1); } public function updateShape(_arg1:XML){ removeChild(h); addShape(_arg1); } public function addShape(_arg1:XML){ if ((((((_arg1.s == "del")) || ((_arg1.s == "copy")))) || ((_arg1.s == "cut")))){ h = new tool_holder(); h.gotoAndStop(_arg1.s); } else { alpha = 0.5; h = new MovieClip(); h.shape = new ((getDefinitionByName(_arg1.s) as Class)); if (_arg1.d == 0){ h.shape.gotoAndStop(("f" + _arg1.t)); } else { h.shape.gotoAndStop(_arg1.t); }; h.shape.width = _arg1.w; if (_arg1.s == "c"){ h.shape.height = h.shape.width; } else { h.shape.height = _arg1.h; }; h.shape.rotation = _arg1.a; h.addChild(h.shape); h.icon = new shape_icons(); h.icon.gotoAndStop(_arg1.i); if (_arg1.d != 0){ h.icon.rotation = ((_arg1.d * 90) - 90); h.addChild(h.icon); }; h.mouseEnabled = false; h.mouseChildren = false; }; h.x = (Math.round((mouseX / step)) * step); h.y = (Math.round((mouseY / step)) * step); addChild(h); h.s = _arg1.s; addEventListener(Event.ENTER_FRAME, MoveShapePreview, false, 0, true); } public function MoveShapePreview(_arg1){ h.x = (Math.round((mouseX / step)) * step); h.y = (Math.round((mouseY / step)) * step); } } }//package
Section 122
//face (face) package { import flash.display.*; public dynamic class face extends MovieClip { } }//package
Section 123
//face_angry (face_angry) package { import flash.display.*; public dynamic class face_angry extends MovieClip { } }//package
Section 124
//flame (flame) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class flame extends MovieClip { public function flame(){ addFrameScript(24, frame25); } function frame25(){ Object(parent).removeChild(this); stop(); } } }//package
Section 125
//LayoutEditor (LayoutEditor) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.ui.*; import flash.xml.*; public dynamic class LayoutEditor extends editor { var sel:XML; var selWo:Number;// = 50 var selHo:Number;// = 50 var selAo:Number;// = 0 var selStep:Number;// = 1 var selStepo:Number;// = 1 var nChars:String;// = "0123456789" var curChar:String; var replacement:String; var h:MovieClip; var shapePrev:MovieClip; var main:Object; var bgA:Array; var bgRef:int;// = 0 public function LayoutEditor(_arg1:Object){ sel = new XML("<sel></sel>"); bgA = new Array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o"); super(); main = _arg1; Array2Layout(); init(); } public function init(){ main.lvlAttempts = 0; sel.s = "r"; selr.select(); sel.w = 50; sel.h = 50; sel.a = 0; sel.x = mouseX; sel.y = mouseY; sel.d = 0; selgravnone.select(); sel.t = "save"; selcolblue.select(); sel.i = "face"; shapePrev = new EShapePreview(sel, selStep); shapePrev.mouseEnabled = false; shapeHolder.addChild(shapePrev); shapeHolder.mouseEnabled = false; redrawPreview(); wBox.text = sel.w.toString(); hBox.text = sel.h.toString(); aBox.text = sel.a.toString(); stepBox.text = sel.step.toString(); btn_testStack.addEventListener(MouseEvent.CLICK, TestStack, false, 0, true); bg.addEventListener(MouseEvent.CLICK, bgClicked, false, 0, true); bg.gotoAndStop(main.customLevelXML.bg); bgbtns.l.addEventListener(MouseEvent.CLICK, BgL, false, 0, true); bgbtns.r.addEventListener(MouseEvent.CLICK, BgR, false, 0, true); selfresh.addEventListener(MouseEvent.CLICK, pkPressed, false, 0, true); selrotten.addEventListener(MouseEvent.CLICK, pkPressed, false, 0, true); sellit.addEventListener(MouseEvent.CLICK, pkPressed, false, 0, true); selunlit.addEventListener(MouseEvent.CLICK, pkPressed, false, 0, true); selgroundr.addEventListener(MouseEvent.CLICK, pkPressed, false, 0, true); selgroundc.addEventListener(MouseEvent.CLICK, pkPressed, false, 0, true); selcolblue.addEventListener(MouseEvent.CLICK, colPressed, false, 0, true); selcolgreen.addEventListener(MouseEvent.CLICK, colPressed, false, 0, true); selcolred.addEventListener(MouseEvent.CLICK, colPressed, false, 0, true); selcoldarkred.addEventListener(MouseEvent.CLICK, colPressed, false, 0, true); selgravdown.addEventListener(MouseEvent.CLICK, gravPressed, false, 0, true); selgravup.addEventListener(MouseEvent.CLICK, gravPressed, false, 0, true); selgravleft.addEventListener(MouseEvent.CLICK, gravPressed, false, 0, true); selgravright.addEventListener(MouseEvent.CLICK, gravPressed, false, 0, true); selgravnone.addEventListener(MouseEvent.CLICK, gravPressed, false, 0, true); iconbtn.addEventListener(MouseEvent.MOUSE_OVER, iconOver, false, 0, true); iconbtn.addEventListener(MouseEvent.MOUSE_OUT, iconOut, false, 0, true); iconbtn.addEventListener(MouseEvent.CLICK, iconPressed, false, 0, true); selr.addEventListener(MouseEvent.CLICK, shapeSelected, false, 0, true); selc.addEventListener(MouseEvent.CLICK, shapeSelected, false, 0, true); seldel.addEventListener(MouseEvent.CLICK, shapeSelected, false, 0, true); selcopy.addEventListener(MouseEvent.CLICK, shapeSelected, false, 0, true); selcut.addEventListener(MouseEvent.CLICK, shapeSelected, false, 0, true); btn_exit.addEventListener(MouseEvent.CLICK, exit, false, 0, true); btn_getCode.addEventListener(MouseEvent.CLICK, getCode, false, 0, true); btn_clear.addEventListener(MouseEvent.CLICK, ClearPressed, false, 0, true); this.addEventListener(Event.ENTER_FRAME, enterFrame, false, 0, true); wpm.p.addEventListener(MouseEvent.CLICK, ppressed, false, 0, true); wpm.m.addEventListener(MouseEvent.CLICK, mpressed, false, 0, true); hpm.p.addEventListener(MouseEvent.CLICK, ppressed, false, 0, true); hpm.m.addEventListener(MouseEvent.CLICK, mpressed, false, 0, true); apm.p.addEventListener(MouseEvent.CLICK, ppressed, false, 0, true); apm.m.addEventListener(MouseEvent.CLICK, mpressed, false, 0, true); steppm.p.addEventListener(MouseEvent.CLICK, ppressed, false, 0, true); steppm.m.addEventListener(MouseEvent.CLICK, mpressed, false, 0, true); this.addEventListener(Event.REMOVED_FROM_STAGE, leRemoved, false, 0, true); } function exit(_arg1:MouseEvent){ main.ReMakeMainMenu("l"); } function TestStack(_arg1){ MovieClip(parent).PlayCustomLevel("l"); } function leRemoved(_arg1){ bgbtns.l.removeEventListener(MouseEvent.CLICK, BgL); bgbtns.r.removeEventListener(MouseEvent.CLICK, BgR); selfresh.removeEventListener(MouseEvent.CLICK, pkPressed); selrotten.removeEventListener(MouseEvent.CLICK, pkPressed); sellit.removeEventListener(MouseEvent.CLICK, pkPressed); selunlit.removeEventListener(MouseEvent.CLICK, pkPressed); selgroundr.removeEventListener(MouseEvent.CLICK, pkPressed); selgroundc.removeEventListener(MouseEvent.CLICK, pkPressed); selcolblue.removeEventListener(MouseEvent.CLICK, colPressed); selcolgreen.removeEventListener(MouseEvent.CLICK, colPressed); selcolred.removeEventListener(MouseEvent.CLICK, colPressed); selcoldarkred.removeEventListener(MouseEvent.CLICK, colPressed); selgravdown.removeEventListener(MouseEvent.CLICK, gravPressed); selgravup.removeEventListener(MouseEvent.CLICK, gravPressed); selgravleft.removeEventListener(MouseEvent.CLICK, gravPressed); selgravright.removeEventListener(MouseEvent.CLICK, gravPressed); selgravnone.removeEventListener(MouseEvent.CLICK, gravPressed); iconbtn.removeEventListener(MouseEvent.MOUSE_OVER, iconOver); iconbtn.removeEventListener(MouseEvent.MOUSE_OUT, iconOut); iconbtn.removeEventListener(MouseEvent.CLICK, iconPressed); btn_testStack.removeEventListener(MouseEvent.CLICK, TestStack); bg.removeEventListener(MouseEvent.CLICK, bgClicked); selr.removeEventListener(MouseEvent.CLICK, shapeSelected); selc.removeEventListener(MouseEvent.CLICK, shapeSelected); seldel.removeEventListener(MouseEvent.CLICK, shapeSelected); selcopy.removeEventListener(MouseEvent.CLICK, shapeSelected); selcut.removeEventListener(MouseEvent.CLICK, shapeSelected); btn_exit.removeEventListener(MouseEvent.CLICK, exit); btn_getCode.removeEventListener(MouseEvent.CLICK, getCode); btn_clear.removeEventListener(MouseEvent.CLICK, ClearPressed); removeEventListener(Event.ENTER_FRAME, enterFrame); wpm.p.removeEventListener(MouseEvent.CLICK, ppressed); wpm.m.removeEventListener(MouseEvent.CLICK, mpressed); hpm.p.removeEventListener(MouseEvent.CLICK, ppressed); hpm.m.removeEventListener(MouseEvent.CLICK, mpressed); apm.p.removeEventListener(MouseEvent.CLICK, ppressed); apm.m.removeEventListener(MouseEvent.CLICK, mpressed); steppm.p.removeEventListener(MouseEvent.CLICK, ppressed); steppm.m.removeEventListener(MouseEvent.CLICK, mpressed); removeEventListener(Event.REMOVED_FROM_STAGE, leRemoved); shapePrev.removeEventListener(Event.ENTER_FRAME, shapePrev.MoveShapePreview); Mouse.show(); } function BgL(_arg1:MouseEvent){ if (bgRef == 0){ bgRef = (bgA.length - 1); } else { bgRef--; }; bg.gotoAndStop(bgA[bgRef]); main.customLevelXML.bg = bgA[bgRef]; } function BgR(_arg1:MouseEvent){ if (bgRef == (bgA.length - 1)){ bgRef = 0; } else { bgRef++; }; bg.gotoAndStop(bgA[bgRef]); main.customLevelXML.bg = bgA[bgRef]; } function ppressed(_arg1:MouseEvent){ switch (_arg1.target.parent.name){ case "wpm": wBox.text = (Number(wBox.text) + 25).toString(); break; case "hpm": hBox.text = (Number(hBox.text) + 25).toString(); break; case "apm": aBox.text = (Number(aBox.text) + 45).toString(); break; case "steppm": stepBox.text = (Number(stepBox.text) + 1).toString(); break; }; } function mpressed(_arg1:MouseEvent){ switch (_arg1.target.parent.name){ case "wpm": wBox.text = (Number(wBox.text) - 25).toString(); break; case "hpm": hBox.text = (Number(hBox.text) - 25).toString(); break; case "apm": aBox.text = (Number(aBox.text) - 45).toString(); break; case "steppm": stepBox.text = (Number(stepBox.text) - 1).toString(); break; }; } function addShape(_arg1:XML, _arg2:Boolean=true, _arg3:int=0){ h = new MovieClip(); h.mouseChildren = false; h.shape = new ((getDefinitionByName(_arg1.s) as Class)); if (_arg1.d == 0){ h.shape.gotoAndStop(("f" + _arg1.t)); } else { h.shape.gotoAndStop(_arg1.t); }; if (_arg1.w < 25){ _arg1.w = 25; wBox.text = "25"; }; if (_arg1.h < 25){ _arg1.h = 25; hBox.text = "25"; }; h.shape.width = _arg1.w; h.shape.height = _arg1.h; h.x = _arg1.x; h.y = _arg1.y; h.shape.rotation = _arg1.a; h.shape.mouseChildren = false; h.addChild(h.shape); h.icon = new shape_icons(); h.icon.gotoAndStop(_arg1.i); if (_arg1.d != 0){ h.icon.rotation = ((_arg1.d * 90) - 90); h.addChild(h.icon); }; h.addEventListener(MouseEvent.CLICK, shapeClicked); if (_arg2){ main.customLevelXML.shapes.appendChild(_arg1.copy()); h.ref = (main.customLevelXML.shapes.sel.length() - 1); } else { h.ref = _arg3; }; shapeHolder.hh.addChild(h); } function bgClicked(_arg1:MouseEvent){ trace("BG CLICKED"); if (sel.s != ""){ if ((((((sel.s == "del")) || ((sel.s == "cut")))) || ((sel.s == "copy")))){ } else { if ((((sel.t == "hardkill")) && ((sel.d == 0)))){ main.ShowMessage("Sorry!", "You cannot use a fixed hard red shape. It would make the level impossible to beat!"); } else { addShape(sel); }; }; }; } function shapeClicked(_arg1:MouseEvent){ if (sel.s == "del"){ delete main.customLevelXML.shapes.sel[_arg1.target.ref]; } else { if (sel.s == "copy"){ sel = main.customLevelXML.shapes.sel[_arg1.target.ref].copy(); UpdateBoxesFromSel(); } else { if (sel.s == "cut"){ sel = main.customLevelXML.shapes.sel[_arg1.target.ref].copy(); delete main.customLevelXML.shapes.sel[_arg1.target.ref]; UpdateBoxesFromSel(); }; }; }; redrawSH(); } function redrawSH():void{ shapeHolder.removeChild(shapeHolder.hh); shapeHolder.hh = new MovieClip(); shapeHolder.addChild(shapeHolder.hh); shapeHolder.mouseEnabled = false; Array2Layout(); redrawPreview(); } function iconOver(_arg1:MouseEvent){ iconbtn.bg.gotoAndStop(2); } function iconOut(_arg1:MouseEvent){ iconbtn.bg.gotoAndStop(1); } function iconPressed(_arg1:MouseEvent){ if (iconbtn.currentFrame >= 2){ iconbtn.gotoAndStop(1); } else { iconbtn.gotoAndStop((iconbtn.currentFrame + 1)); }; if (iconbtn.currentFrame == 1){ sel.i = "face"; } else { if (iconbtn.currentFrame == 2){ sel.i = "bomb"; }; }; redrawPreview(); } function pkPressed(_arg1:MouseEvent){ selfresh.deselect(); selrotten.deselect(); sellit.deselect(); selunlit.deselect(); selgroundr.deselect(); selgroundc.deselect(); switch (_arg1.target.name){ case "selfresh": sel.t = "save"; sel.s = "c"; if (sel.d == 0){ sel.d = 1; }; sel.w = 50; sel.h = 50; selfresh.select(); break; case "selrotten": sel.t = "kill"; sel.s = "c"; if (sel.d == 0){ sel.d = 1; }; sel.w = 50; sel.h = 50; selrotten.select(); break; case "sellit": sel.t = "hardkilllit"; sel.s = "c"; if (sel.d == 0){ sel.d = 1; }; sel.w = 50; sel.h = 50; sellit.select(); break; case "selunlit": sel.t = "hardkill"; sel.s = "c"; if (sel.d == 0){ sel.d = 1; }; sel.w = 50; sel.h = 50; selunlit.select(); break; case "selgroundr": sel.t = "save"; sel.s = "r"; sel.d = 0; sel.w = 50; sel.h = 50; selgroundr.select(); break; case "selgroundc": sel.t = "save"; sel.s = "c"; sel.d = 0; sel.w = 50; sel.h = 50; selgroundc.select(); break; }; redrawPreview(); UpdateBoxesFromSel(); } function colPressed(_arg1:MouseEvent){ selcolblue.deselect(); selcolgreen.deselect(); selcolred.deselect(); selcoldarkred.deselect(); switch (_arg1.target.name){ case "selcolblue": sel.t = "neutral"; selcolblue.select(); break; case "selcolgreen": sel.t = "save"; selcolgreen.select(); break; case "selcolred": sel.t = "kill"; selcolred.select(); break; case "selcoldarkred": sel.t = "hardkill"; selcoldarkred.select(); break; }; redrawPreview(); } function gravPressed(_arg1:MouseEvent){ trace(_arg1.target.name); selgravup.deselect(); selgravdown.deselect(); selgravleft.deselect(); selgravright.deselect(); selgravnone.deselect(); switch (_arg1.target.name){ case "selgravup": sel.d = 3; selgravup.select(); break; case "selgravdown": sel.d = 1; selgravdown.select(); break; case "selgravleft": sel.d = 2; selgravleft.select(); break; case "selgravright": sel.d = 4; selgravright.select(); break; case "selgravnone": sel.d = 0; selgravnone.select(); break; }; redrawPreview(); } function correctBox(_arg1:Object){ replacement = ""; var _local2:int; while (_local2 < _arg1.text.length) { curChar = _arg1.text.charAt(_local2); if (nChars.indexOf(curChar) != -1){ replacement = (replacement + curChar); }; _local2++; }; _arg1.text = replacement; } function enterFrame(_arg1){ if (main.popupActive){ Mouse.show(); shapePrev.alpha = 0; shapePrev.h.mouseEnabled = false; } else { sel.x = shapePrev.h.x; sel.y = shapePrev.h.y; shapePrev.alpha = 0.5; }; updateBoxes(); } function UpdateBoxesFromSel(){ xBox.text = sel.x; yBox.text = sel.y; wBox.text = sel.w; hBox.text = sel.h; aBox.text = sel.a; selgravup.deselect(); selgravdown.deselect(); selgravleft.deselect(); selgravright.deselect(); selgravnone.deselect(); switch (sel.d){ case 0: selgravnone.select(); break; case 1: selgravdown.select(); break; case 2: selgravleft.select(); break; case 3: selgravup.select(); break; case 4: selgravright.select(); break; }; selr.deselect(); selc.deselect(); switch (sel.s){ case "r": selr.select(); break; case "c": selc.select(); break; }; selcolblue.deselect(); selcolgreen.deselect(); selcolred.deselect(); selcoldarkred.deselect(); switch (sel.t){ case "neutral": selcolblue.select(); break; case "save": selcolgreen.select(); break; case "kill": selcolred.select(); break; case "hardkill": selcoldarkred.select(); break; }; } function updateBoxes(){ xBox.text = sel.x; yBox.text = sel.y; correctBox(wBox); correctBox(hBox); correctBox(stepBox); if (Number(wBox.text) < 0){ wBox.text = "25"; }; if (Number(hBox.text) < 0){ hBox.text = "25"; }; if (Number(stepBox.text) < 1){ stepBox.text = "1"; }; if (Number(aBox.text) >= 360){ aBox.text = (Number(aBox.text) - 360).toString(); } else { if (Number(aBox.text) < 0){ aBox.text = (Number(aBox.text) + 360).toString(); }; }; correctBox(aBox); sel.w = Number(wBox.text); if (sel.w != selWo){ selWo = sel.w; if (sel.s == "c"){ hBox.text = sel.w; }; redrawPreview(); }; sel.h = Number(hBox.text); if (sel.h != selHo){ selHo = sel.h; if (sel.s == "c"){ wBox.text = sel.h.toString(); }; redrawPreview(); }; sel.a = Number(aBox.text); if (sel.a != selAo){ selAo = sel.a; redrawPreview(); }; selStep = Number(stepBox.text); if (selStep != selStepo){ selStepo = selStep; redrawPreview(); }; } function redrawPreview(){ shapeHolder.removeChild(shapePrev); shapePrev = new EShapePreview(sel, selStep); shapePrev.mouseEnabled = false; shapePrev.mouseChildren = false; shapeHolder.addChild(shapePrev); } function shapeSelected(_arg1:MouseEvent){ selr.deselect(); selc.deselect(); seldel.deselect(); selcut.deselect(); selcopy.deselect(); switch (_arg1.target.name){ case "selr": sel.s = "r"; selr.select(); break; case "selc": sel.s = "c"; selc.select(); hBox.text = wBox.text; break; case "seldel": sel.s = "del"; seldel.select(); if (!main.seenDeleteMsg){ main.ShowMessage("The Delete Tool", "Click on a shape to delete it."); main.seenDeleteMsg = true; }; break; case "selcut": sel.s = "cut"; selcut.select(); if (!main.seenCutMsg){ main.ShowMessage("The Cut Tool", "Click on a shape you have already placed to cut it out so you can edit or move it."); main.seenCutMsg = true; }; break; case "selcopy": sel.s = "copy"; selcopy.select(); if (!main.seenCopyMsg){ main.ShowMessage("The Copy Tool", "Click on a shape you have already placed to copy it."); main.seenCopyMsg = true; }; break; }; redrawPreview(); } function getCode(_arg1:MouseEvent):void{ main.ShowMessage("Not yet...", "You must beat this level before you can submit it. Click \"Play\" to give it a go!"); } function ClearPressed(_arg1:MouseEvent){ main.ShowYesNo("Clear Level", "Are you sure you want to delete this level?", main.ClearLevel); } function Array2Layout():void{ var _local3:XML; var _local1:XMLList = main.customLevelXML.shapes.children(); var _local2:int; for each (_local3 in _local1) { addShape(_local3, false, _local2); _local2++; }; } } }//package
Section 126
//level_selector (level_selector) package { import flash.display.*; import flash.text.*; public dynamic class level_selector extends MovieClip { public var rr_btn:SimpleButton; public var russian_mc:MovieClip; public var morse_mc:MovieClip; public var m39:MovieClip; public var m8:MovieClip; public var faces_mc:MovieClip; public var m40:MovieClip; public var m9:MovieClip; public var iphone_btn:SimpleButton; public var m41:MovieClip; public var m42:MovieClip; public var m43:MovieClip; public var makeyourown_btn:SimpleButton; public var m44:MovieClip; public var m45:MovieClip; public var m10:MovieClip; public var bonusmode_mc:MovieClip; public var m20:MovieClip; public var m11:MovieClip; public var m30:MovieClip; public var m21:MovieClip; public var m12:MovieClip; public var m31:MovieClip; public var m22:MovieClip; public var m13:MovieClip; public var lvlsubtitle:TextField; public var m32:MovieClip; public var m23:MovieClip; public var m14:MovieClip; public var m1:MovieClip; public var m33:MovieClip; public var m24:MovieClip; public var m15:MovieClip; public var m2:MovieClip; public var walkthrough_btn:SimpleButton; public var ml_btn:SimpleButton; public var m34:MovieClip; public var m25:MovieClip; public var m16:MovieClip; public var m3:MovieClip; public var lvltitle:TextField; public var btn_exit:SimpleButton; public var happyhalloween_btn:SimpleButton; public var m35:MovieClip; public var m26:MovieClip; public var m17:MovieClip; public var m4:MovieClip; public var m36:MovieClip; public var m27:MovieClip; public var m18:MovieClip; public var m5:MovieClip; public var m37:MovieClip; public var m28:MovieClip; public var m19:MovieClip; public var m6:MovieClip; public var m38:MovieClip; public var m29:MovieClip; public var m7:MovieClip; public function level_selector(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 127
//Levels (Levels) package { public class Levels { public var levels:XML; public function Levels(){ levels = <levels> <level> <title>Tutorial: Rotten Pumpkins</title> <author>cpayette</author> <bg>tut1</bg> <par>2</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>270</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>194</x> <y>263</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>242</x> <y>263</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>214</x> <y>222</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>77</x> <y>262</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>263</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>103</x> <y>218</y> <d>1</d> <t>kill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Tutorial: Black Pumpkins</title> <author>cpayette</author> <bg>tutblack</bg> <par>4</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>260</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>60</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>84</x> <y>358</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>235</x> <y>357</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>186</x> <y>357</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>133</x> <y>357</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>108</x> <y>316</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>315</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>159</x> <y>315</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>133</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>183</x> <y>270</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>153</x> <y>227</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Tutorial: Fire</title> <author>Gaz</author> <bg>tutfire</bg> <par>1</par> <shapes> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>165</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>115</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>140</x> <y>400</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>190</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>90</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>115</x> <y>225</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>165</x> <y>225</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> </shapes> </level> <level> <title>Tutorial: Fresh Pumpkins</title> <author>cpayette</author> <bg>tut2</bg> <par>2</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>78</x> <y>364</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>182</x> <y>364</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>104</x> <y>325</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>156</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>208</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>130</x> <y>286</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>182</x> <y>286</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>156</x> <y>247</y> <d>1</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>237</x> <y>353</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Tutorial: Gravity</title> <author>cpayette</author> <bg>tut3</bg> <par>4</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>156</x> <y>445</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>157</x> <y>397</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>157</x> <y>346</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>156</x> <y>143</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>156</x> <y>93</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>156</x> <y>43</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>115</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>68</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>203</x> <y>369</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>202</x> <y>424</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>246</x> <y>397</y> <d>2</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>64</x> <y>90</y> <d>4</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Skate</title> <author>cpayette</author> <bg>a</bg> <par>4</par> <shapes> <sel> <s>r</s> <w>150</w> <h>25</h> <a>350</a> <x>236</x> <y>191</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>150</w> <h>25</h> <a>10</a> <x>84</x> <y>309</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>150</w> <h>25</h> <a>10</a> <x>78</x> <y>86</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>138</x> <y>122</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>175</x> <y>122</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>206</x> <y>160</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>177</x> <y>227</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>14</x> <y>100</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>304</x> <y>204</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>17</x> <y>321</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>142</x> <y>344</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>107</x> <y>274</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>143</x> <y>239</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>r</s> <w>150</w> <h>25</h> <a>350</a> <x>244</x> <y>412</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>186</x> <y>447</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>308</x> <y>426</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>204</x> <y>381</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>252</x> <y>374</y> <d>1</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>180</x> <y>338</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>35</x> <y>465</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>95</x> <y>465</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>154</x> <y>465</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>350</a> <x>112</x> <y>12</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>75</x> <y>9</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>35</x> <y>40</y> <d>1</d> <t>kill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Torchlight</title> <author>cpayette</author> <bg>a</bg> <par>6</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>240</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>190</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>190</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>340</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>140</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>140</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>290</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>190</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>140</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>90</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>240</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>240</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>110</x> <y>90</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>90</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>390</y> <d>3</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>40</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>115</x> <y>290</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>205</x> <y>290</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>180</x> <y>431</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>140</x> <y>430</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>260</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>70</x> <y>260</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>70</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>200</x> <y>360</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>120</x> <y>360</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>210</x> <y>45</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>110</x> <y>45</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>252</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>253</x> <y>100</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>70</x> <y>148</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>70</x> <y>100</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>244</x> <y>61</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>73</x> <y>59</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Grand Slam</title> <author>cpayette</author> <bg>a</bg> <par>1</par> <shapes> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>200</x> <y>413</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>120</x> <y>413</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>142</x> <y>443</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>188</x> <y>445</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>200</x> <y>260</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>280</x> <y>260</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>120</x> <y>260</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>40</x> <y>260</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>217</x> <y>293</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>266</x> <y>295</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>191</x> <y>225</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>141</x> <y>225</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>116</x> <y>72</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>182</x> <y>112</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>133</x> <y>109</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>136</x> <y>41</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>184</x> <y>39</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>52</x> <y>294</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>94</x> <y>292</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>30</x> <y>160</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>290</x> <y>160</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>192</x> <y>74</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Get off my head!</title> <author>cpayette</author> <bg>a</bg> <par>3</par> <shapes> <sel> <s>r</s> <w>200</w> <h>25</h> <a>80</a> <x>90</x> <y>118</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>80</a> <x>38</x> <y>36</y> <d>4</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>160</x> <y>450</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>410</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>360</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>310</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>260</y> <d>1</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>210</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>210</x> <y>450</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>110</x> <y>450</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Zig Zag</title> <author>Gaz</author> <bg>a</bg> <par>3</par> <shapes> <sel> <s>r</s> <w>25</w> <h>175</h> <a>5</a> <x>203</x> <y>116</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>247</x> <y>41</y> <d>2</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>297</x> <y>100</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>290</x> <y>60</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>175</h> <a>355</a> <x>114</x> <y>195</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>355</a> <x>65</x> <y>129</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>355</a> <x>76</x> <y>93</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>153</x> <y>244</y> <d>2</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>198</x> <y>226</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>100</h> <a>315</a> <x>65</x> <y>427</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>150</h> <a>90</a> <x>183</x> <y>466</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>158</x> <y>378</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>184</x> <y>353</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>231</x> <y>353</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>257</x> <y>380</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>314</x> <y>461</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>150</h> <a>345</a> <x>0</x> <y>191</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>To Me To You</title> <author>Gaz</author> <bg>a</bg> <par>4</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>177</x> <y>269</y> <d>3</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>148</x> <y>308</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>148</x> <y>229</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>178</x> <y>189</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>148</x> <y>148</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>77</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>164</x> <y>452</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>50</w> <h>375</h> <a>0</a> <x>226</x> <y>245</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>50</w> <h>375</h> <a>0</a> <x>99</x> <y>245</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>176</x> <y>401</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>163</x> <y>29</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>The Combination</title> <author>Gaz</author> <bg>a</bg> <par>3</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>199</x> <y>57</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>120</x> <y>119</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>202</x> <y>183</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>185</x> <y>7</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>0</x> <y>275</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>275</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>275</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>275</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>250</x> <y>275</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>300</x> <y>275</y> <d>2</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>275</y> <d>2</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>27</x> <y>311</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>29</x> <y>235</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>475</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>475</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>250</x> <y>475</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>300</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>175</w> <h>50</h> <a>3</a> <x>4</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>3</a> <x>9</x> <y>1</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Obstacles 1</title> <author>Gaz</author> <bg>a</bg> <par>8</par> <shapes> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>75</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>75</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>75</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>125</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>75</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>125</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>169</x> <y>154</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>50</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>100</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>150</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>200</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>225</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>0</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>25</x> <y>325</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>169</x> <y>106</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> </shapes> </level> <level> <title>Touch The Tumbler</title> <author>Gaz</author> <bg>a</bg> <par>2</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>175</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>225</y> <d>2</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>325</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>375</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>75</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>75</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>120</x> <y>4</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>105</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>187</x> <y>116</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>175</h> <a>350</a> <x>58</x> <y>211</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>100</h> <a>20</a> <x>54</x> <y>87</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>104</x> <y>199</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>100</h> <a>45</a> <x>267</x> <y>420</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>25</w> <h>150</h> <a>335</a> <x>284</x> <y>323</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>214</x> <y>307</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Join The Dots</title> <author>Gaz</author> <bg>a</bg> <par>14</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>100</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>125</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>325</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>350</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>200</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>325</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>175</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>32</x> <y>223</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>34</x> <y>275</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>0</x> <y>250</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>300</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>225</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>150</y> <d>4</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>175</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>275</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>250</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>275</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>300</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>250</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>375</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>200</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>225</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>75</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>450</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Parting Gift</title> <author>Gaz</author> <bg>a</bg> <par>7</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>250</x> <y>425</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>300</x> <y>375</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>0</x> <y>375</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>375</y> <d>3</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>375</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>375</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>375</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>225</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Obstacles 2</title> <author>Gaz</author> <bg>a</bg> <par>8</par> <shapes> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>75</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>75</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>75</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>125</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>75</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>125</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>169</x> <y>154</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>50</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>100</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>150</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>200</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>325</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>275</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>225</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>169</x> <y>106</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>250</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>325</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>288</x> <y>324</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>311</x> <y>351</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Volcano</title> <author>cpayette</author> <bg>a</bg> <par>3</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>160</x> <y>420</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>210</x> <y>420</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>111</x> <y>420</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>62</x> <y>420</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>260</x> <y>420</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>87</x> <y>379</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>238</x> <y>378</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>136</x> <y>379</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>186</x> <y>378</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>162</x> <y>251</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>159</x> <y>336</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>113</x> <y>337</y> <d>1</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>212</x> <y>336</y> <d>1</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>137</x> <y>294</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>185</x> <y>294</y> <d>1</d> <t>kill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Plinko</title> <author>cpayette</author> <par>4</par> <bg>a</bg> <shapes> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>240</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>110</x> <y>230</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>50</x> <y>320</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>280</x> <y>150</y> <d>2</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>30</x> <y>40</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>80</x> <y>40</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>140</x> <y>40</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>240</x> <y>50</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>35</x> <y>135</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>109</x> <y>75</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>86</x> <y>458</y> <d>3</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>50</x> <y>380</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>130</x> <y>380</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>185</x> <y>40</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>61</x> <y>415</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>113</x> <y>415</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>285</x> <y>380</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>210</x> <y>380</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>415</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>415</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>250</x> <y>460</y> <d>3</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>260</x> <y>286</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>The Right Delay</title> <author>Gaz</author> <bg>a</bg> <par>1</par> <shapes> <sel> <s>r</s> <w>175</w> <h>25</h> <a>5</a> <x>103</x> <y>111</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>28</x> <y>67</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>43</x> <y>20</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>77</x> <y>7</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>155</x> <y>49</y> <d>3</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>185</x> <y>26</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>129</x> <y>21</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>277</x> <y>207</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>125</w> <h>25</h> <a>5</a> <x>146</x> <y>402</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>227</x> <y>438</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>438</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>300</x> <y>409</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>176</x> <y>304</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>248</x> <y>27</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>300</x> <y>66</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>303</x> <y>137</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>1</x> <y>326</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>39</x> <y>240</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>41</x> <y>162</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Burnout</title> <author>Gaz</author> <bg>a</bg> <par>4</par> <shapes> <sel> <s>r</s> <w>50</w> <h>50</h> <a>5</a> <x>161</x> <y>226</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>100</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>200</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>175</x> <y>425</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>r</s> <w>50</w> <h>25</h> <a>5</a> <x>111</x> <y>234</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>50</w> <h>25</h> <a>5</a> <x>211</x> <y>218</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>208</x> <y>256</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>113</x> <y>196</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>165</x> <y>45</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>146</x> <y>76</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>115</x> <y>59</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>69</x> <y>59</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>39</x> <y>79</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>228</x> <y>81</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>50</w> <h>25</h> <a>5</a> <x>61</x> <y>205</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>50</w> <h>25</h> <a>5</a> <x>261</x> <y>246</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>216</x> <y>44</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>427</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>235</x> <y>407</y> <d>3</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>283</x> <y>401</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>307</x> <y>375</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>263</x> <y>208</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>57</x> <y>242</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>301</x> <y>213</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>22</x> <y>232</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Flaming Support</title> <author>Gaz</author> <bg>a</bg> <par>11</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>100</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>175</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>125</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>150</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>325</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>375</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>350</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>200</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>250</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>300</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>325</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>175</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>200</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>300</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>32</x> <y>223</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>34</x> <y>275</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>1</x> <y>249</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>275</y> <d>4</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>225</y> <d>4</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>250</y> <d>4</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>225</y> <d>4</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>275</y> <d>4</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Reach For The Sky</title> <author>Gaz</author> <bg>a</bg> <par>11</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>250</x> <y>25</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>25</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>25</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>25</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>25</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>0</x> <y>75</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>0</x> <y>125</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>300</x> <y>75</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>300</x> <y>125</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>400</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>400</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>350</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>350</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>300</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>300</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>300</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>300</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>250</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>250</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>149</x> <y>353</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>200</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>200</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>250</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>75</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>25</x> <y>300</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>25</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>25</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>250</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>125</x> <y>75</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>175</x> <y>75</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Interceptor</title> <author>Gaz</author> <bg>a</bg> <par>5</par> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>235</x> <y>168</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>269</x> <y>173</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>208</x> <y>192</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>275</x> <y>275</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>225</x> <y>275</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>300</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>200</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>137</x> <y>274</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>200</x> <y>375</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>150</x> <y>375</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>225</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>125</x> <y>350</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>2</x> <y>340</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>84</x> <y>443</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>32</x> <y>440</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>10</x> <y>391</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>108</x> <y>396</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>100</w> <h>25</h> <a>0</a> <x>208</x> <y>96</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>188</x> <y>59</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>245</x> <y>9</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>277</x> <y>21</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>278</x> <y>67</y> <d>2</d> <t>kill</t> <i>face</i> </sel> </shapes> </level> <level> <title>Jam It</title> <author>Gaz</author> <bg>a</bg> <shapes> <sel> <s>c</s> <w>50</w> <h>50</h> <a>3</a> <x>47</x> <y>107</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>3</a> <x>95</x> <y>108</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>3</a> <x>25</x> <y>135</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>3</a> <x>118</x> <y>137</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>175</w> <h>25</h> <a>10</a> <x>78</x> <y>211</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>150</w> <h>25</h> <a>350</a> <x>312</x> <y>210</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>245</x> <y>84</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>350</a> <x>252</x> <y>25</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>r</s> <w>175</w> <h>25</h> <a>2</a> <x>55</x> <y>63</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>3</a> <x>1</x> <y>19</y> <d>1</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>r</s> <w>200</w> <h>25</h> <a>325</a> <x>291</x> <y>393</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>200</w> <h>25</h> <a>35</a> <x>112</x> <y>393</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> <level> <title>Assualt Course</title> <author>Gaz</author> <bg>a</bg> <par>14</par> <shapes> <sel> <s>r</s> <w>125</w> <h>25</h> <a>5</a> <x>183</x> <y>120</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>35</x> <y>100</y> <d>4</d> <t>hardkilllit</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>71</x> <y>116</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>135</x> <y>80</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>189</x> <y>21</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>267</x> <y>151</y> <d>2</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>243</x> <y>226</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>270</x> <y>200</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>25</x> <y>150</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>175</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>50</x> <y>225</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>100</x> <y>200</y> <d>2</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>25</x> <y>250</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>25</x> <y>200</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>57</x> <y>314</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>r</s> <w>125</w> <h>25</h> <a>5</a> <x>97</x> <y>353</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>104</x> <y>316</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>153</x> <y>319</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>288</x> <y>298</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>309</x> <y>341</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>344</x> <y>327</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>324</x> <y>387</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>0</x> <y>308</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>151</x> <y>33</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>248</x> <y>415</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>215</x> <y>434</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>125</w> <h>25</h> <a>355</a> <x>235</x> <y>266</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>199</x> <y>307</y> <d>3</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>243</x> <y>303</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>268</x> <y>368</y> <d>1</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>278</x> <y>400</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>274</x> <y>473</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>226</x> <y>468</y> <d>3</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>0</a> <x>316</x> <y>446</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>201</x> <y>347</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>r</s> <w>125</w> <h>25</h> <a>355</a> <x>123</x> <y>455</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>355</a> <x>42</x> <y>432</y> <d>1</d> <t>hardkill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>0</a> <x>7</x> <y>437</y> <d>0</d> <t>save</t> <i>face</i> </sel> <sel> <s>c</s> <w>50</w> <h>50</h> <a>5</a> <x>22</x> <y>53</y> <d>4</d> <t>kill</t> <i>face</i> </sel> <sel> <s>c</s> <w>25</w> <h>25</h> <a>5</a> <x>55</x> <y>33</y> <d>0</d> <t>save</t> <i>face</i> </sel> </shapes> </level> </levels> ; super(); } } }//package
Section 128
//LevelSelector (LevelSelector) package { import flash.events.*; import flash.net.*; public dynamic class LevelSelector extends level_selector { var main:Object; var tot_levels:int;// = 20 public function LevelSelector(_arg1:Object){ main = _arg1; if (main.version == "ag"){ gotoAndStop(2); }; init(); } function MorsePressed(_arg1:MouseEvent){ main.musicSC = main.s_morse.play(0, 1); } function RussianPressed(_arg1:MouseEvent){ main.musicSC = main.s_russian.play(0, 1); } function FacesPressed(_arg1:MouseEvent){ if (main.artSet == "alt_"){ main.artSet = ""; faces_mc.gotoAndStop(2); } else { main.artSet = "alt_"; faces_mc.gotoAndStop(3); }; } function BonusModePressed(_arg1:MouseEvent){ if (main.bonusMode){ main.bonusMode = false; bonusmode_mc.gotoAndStop(2); } else { main.bonusMode = true; bonusmode_mc.gotoAndStop(3); }; } function UpdateGroups(){ if (main.levelBeaten >= 10){ morse_mc.gotoAndStop(2); morse_mc.addEventListener(MouseEvent.CLICK, MorsePressed, false, 0, true); }; if (main.levelBeaten >= 20){ if (main.artSet == "alt_"){ faces_mc.gotoAndStop(3); } else { faces_mc.gotoAndStop(2); }; faces_mc.addEventListener(MouseEvent.CLICK, FacesPressed, false, 0, true); }; if (main.levelBeaten >= 45){ russian_mc.gotoAndStop(2); russian_mc.addEventListener(MouseEvent.CLICK, RussianPressed, false, 0, true); }; if (main.levelBeaten >= 40){ if (main.bonusMode){ bonusmode_mc.gotoAndStop(3); } else { bonusmode_mc.gotoAndStop(2); }; bonusmode_mc.addEventListener(MouseEvent.CLICK, BonusModePressed, false, 0, true); }; } function init(){ var _local1:int; var _local2:int; var _local3:int; var _local4:Object; var _local5:Object; UpdateGroups(); var _local6:int; _local1 = 1; while (_local1 <= tot_levels) { _local2 = 0; _local3 = (_local1 - _local2); _local5 = this[("m" + _local3)]; _local5.mouseChildren = false; if (_local1 > (main.levelBeaten + 1)){ _local5.i = -1; _local5.stat = "na"; _local5.n.text = ""; _local5.bg.gotoAndStop("locked"); } else { _local5.i = _local1; _local5.n.text = _local1.toString(); _local5.addEventListener(MouseEvent.CLICK, mPressed, false, 0, true); _local5.addEventListener(MouseEvent.MOUSE_OVER, mOver, false, 0, true); _local5.addEventListener(MouseEvent.MOUSE_OUT, mOut, false, 0, true); _local5.stat = ""; if (main.clicksArray[(_local1 - 1)] == main.levels.child("level")[(_local1 - 1)].child("par")){ _local5.stat = (_local5.stat + "par"); _local6++; }; if ((((main.levelBeaten >= 1)) && ((main.clicksArray[(_local1 - 1)] < main.levels.child("level")[(_local1 - 1)].child("par"))))){ _local5.stat = (_local5.stat + "underpar"); _local6++; }; if (_local5.stat == ""){ if (main.levelBeaten == (_local1 - 1)){ _local5.stat = "open"; } else { _local5.stat = "beaten"; }; }; _local5.bg.gotoAndStop(_local5.stat); }; _local1++; }; iphone_btn.addEventListener(MouseEvent.CLICK, iphonePressed, false, 0, true); btn_exit.addEventListener(MouseEvent.CLICK, exit, false, 0, true); makeyourown_btn.addEventListener(MouseEvent.CLICK, myoPressed, false, 0, true); ml_btn.addEventListener(MouseEvent.CLICK, MoreLevelsPressed, false, 0, true); walkthrough_btn.addEventListener(MouseEvent.CLICK, main.WalkthroughPressed, false, 0, true); happyhalloween_btn.addEventListener(MouseEvent.CLICK, main.mgPressed, false, 0, true); rr_btn.addEventListener(MouseEvent.CLICK, main.RRPressed, false, 0, true); this.addEventListener(Event.REMOVED_FROM_STAGE, pqRemoved, false, 0, true); } function srPressed(_arg1:MouseEvent){ main.lvl = (1 + (10 * _arg1.target.ref)); main.speedrunref = _arg1.target.ref; main.speedrun = true; main.gameTime = 0; main.MakePlayLevel(true); } function srOver(_arg1:MouseEvent){ _arg1.target.gotoAndStop(3); } function srOut(_arg1:MouseEvent){ _arg1.target.gotoAndStop(2); } function MoreLevelsPressed(_arg1:MouseEvent){ var _local2 = "http://forums.thegamehomepage.com/red-remover-levels/"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } function iphonePressed(_arg1:MouseEvent){ var _local2 = "http://www.thegamehomepage.com/content/pumpkin-remover-touch/?s=pr2"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } function myoPressed(_arg1:MouseEvent){ main.MakeLayoutEditor("ls"); } function exit(_arg1:MouseEvent){ main.ReMakeMainMenu("ls"); } function pqRemoved(_arg1){ btn_exit.removeEventListener(MouseEvent.CLICK, exit); happyhalloween_btn.removeEventListener(MouseEvent.CLICK, main.mgPressed); this.removeEventListener(Event.REMOVED_FROM_STAGE, pqRemoved); } function mPressed(_arg1:MouseEvent){ if (_arg1.target.stat == "extralocked"){ main.ShowMessage("Locked", "Beat 40 levels on PAR and in Bonus Mode to unlock."); } else { main.lvl = _arg1.target.i; main.MakePlayLevel(true); }; } function mOver(_arg1:MouseEvent){ _arg1.target.bg.gotoAndStop((_arg1.target.stat + "over")); lvltitle.text = main.levels.child("level")[(_arg1.target.i - 1)].child("title"); if (main.clicksArray[(_arg1.target.i - 1)] < 999){ lvlsubtitle.text = ((("Clicks=" + main.clicksArray[(_arg1.target.i - 1)]) + " Par=") + main.levels.child("level")[(_arg1.target.i - 1)].child("par")); }; } function mOut(_arg1:MouseEvent){ _arg1.target.bg.gotoAndStop(_arg1.target.stat); lvltitle.text = ""; lvlsubtitle.text = ""; } } }//package
Section 129
//loading_level (loading_level) package { import flash.display.*; import flash.text.*; public dynamic class loading_level extends MovieClip { public var lvlauthor:TextField; public var lvltitle:TextField; public var playbtn:SimpleButton; public function loading_level(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 130
//lvlfailed_mc (lvlfailed_mc) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class lvlfailed_mc extends MovieClip { public var lsbtn:SimpleButton; public var mgbtn:SimpleButton; public var walkthroughbtn:SimpleButton; public var retrybtn:SimpleButton; public function lvlfailed_mc(){ addFrameScript(0, frame1); } function frame1(){ if (MovieClip(root).sfxOn){ MovieClip(root).s_fail.play(); }; stop(); } } }//package
Section 131
//lvlpassed_mc (lvlpassed_mc) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class lvlpassed_mc extends MovieClip { public var lsbtn:SimpleButton; public var mgbtn:SimpleButton; public var sharebtn:SimpleButton; public function lvlpassed_mc(){ addFrameScript(0, frame1); } function frame1(){ if (MovieClip(root).sfxOn){ MovieClip(root).s_pass.play(); }; stop(); } } }//package
Section 132
//lvlpaused_mc (lvlpaused_mc) package { import flash.display.*; public dynamic class lvlpaused_mc extends MovieClip { public var lsbtn:SimpleButton; public var resumebtn:SimpleButton; public var walkthroughbtn:SimpleButton; public var resetbtn:SimpleButton; } }//package
Section 133
//Main (Main) package { import flash.events.*; import flash.display.*; import com.kongregate.as3.client.*; import flash.media.*; import flash.net.*; import flash.ui.*; import flash.xml.*; public dynamic class Main extends MovieClip { var mochiLB:Boolean;// = false var version:String;// = "cpmstar" var kongregate:KongregateAPI; public var s_piano:sfx_piano; public var s_morse:sfx_morse; public var s_russian:sfx_russian; public var s_pass:sfx_pass; public var s_fail:sfx_fail; public var s_pop:sfx_pop; public var customTitle:String;// = "" public var customLevelXML:XML; public var popupActive:Boolean;// = false public var groupNames:Array; public var levelBeaten:int; public var clicksArray:Array; public var SRTimes:Array; public var speedrun:Boolean;// = false public var speedrunref:int; public var bonusMode:Boolean;// = false public var justCompleted:int;// = 0 public var parCompleted:Boolean;// = false public var levels:XML; public var SOName:String;// = "tgh-pr3" var artSet:String;// = "" var musicOn:Boolean;// = true var musicSC:SoundChannel; var sfxOn:Boolean;// = true var lvl:int;// = 1 var gameTime:Number;// = 0 var seenDeleteMsg:Boolean;// = false var seenCopyMsg:Boolean;// = false var seenCutMsg:Boolean;// = false var lvlAttempts:int;// = 0 var preloader:MovieClip; var mMenu:MovieClip; var tghcode:Boolean; var lvlLoaded:Boolean;// = false var playLvl:MovieClip; var layoutEditor:MovieClip; var queueEditor:MovieClip; var gComp:MovieClip; var codePopup:MovieClip; var lvlSelector:MovieClip; var msgPopup:MovieClip; var lvlLoading:MovieClip; var agSplash:MovieClip; var msgArray:Array; public static var aroot:Main; public function Main(){ var _local1:String; kongregate = new KongregateAPI(); customLevelXML = new XML("<level><title>untitled</title><author>anon</author><bg>a</bg><shapes></shapes></level>"); groupNames = new Array("Easy", "Medium", "Hard", "Nightmare"); clicksArray = new Array(); SRTimes = new Array(); msgArray = new Array(); super(); addFrameScript(0, frame1, 1, frame2, 2, frame3); aroot = this; this.addChild(kongregate); var _local2:String = this.root.loaderInfo.url.split("/")[2]; _local2 = _local2.toLowerCase(); _local1 = "mofunzone.com"; if (_local2.indexOf(_local1) == (_local2.length - _local1.length)){ version = "blacklist"; }; _local1 = "addictinggames.com"; if (_local2.indexOf(_local1) == (_local2.length - _local1.length)){ version = "ag"; }; _local1 = "kongregate.com"; if (_local2.indexOf(_local1) == (_local2.length - _local1.length)){ version = "kong"; }; _local1 = "ungrounded.net"; if (_local2.indexOf(_local1) == (_local2.length - _local1.length)){ version = "ng"; }; if (version != "blacklist"){ init(); }; } public function init(){ var temp:Object = new Levels(); levels = temp.levels; LoadProgress(); if (version != "blacklist"){ MakePreloader(); if (((((!((version == "kong"))) && (!((version == "ag"))))) && (!((version == "adfree"))))){ var AdShownCallback:Function = function (_arg1:Boolean):void{ trace(_arg1); }; AdIntegrator.Initialize("29", "http://ads.intergi.com/adrawdata/3.0/5205/2219975/0/4057/ADTECH;referring_url=__WEB_URL__;number=__RANDOM__;time=__TIME__"); AdIntegrator.ShowAd(this, 640, 480, AdShownCallback, " "); }; }; MochiBot.track(this, "b4c013d4"); } public function MakePreloader(){ var _local1:Number; _local1 = 0.5; preloader = new preloader_mc(); preloader.jump = _local1; preloader.gotoAndPlay(1); addChild(preloader); } public function AssetsLoaded(){ var _local1:int; var _local2:int; var _local3:int; s_piano = new sfx_piano(); s_morse = new sfx_morse(); s_russian = new sfx_russian(); s_pass = new sfx_pass(); s_fail = new sfx_fail(); s_pop = new sfx_pop(); musicOn = true; MakeContextMenu(); if (version == "ag"){ agSplash = new AGteaser_mc(); agSplash.main = this; agSplash.x = 60; agSplash.y = 80; addChild(agSplash); } else { if (((root.loaderInfo.parameters.tghcode) && (false))){ } else { StartGame(); _local1 = 0; _local2 = 0; _local3 = 0; while (_local3 < 20) { if (clicksArray[_local3] <= levels.child("level")[_local3].child("par")){ _local1++; }; if (clicksArray[_local3] < levels.child("level")[_local3].child("par")){ _local2++; }; _local3++; }; kongregate.stats.submit("Par", _local1); kongregate.stats.submit("UnderPar", _local2); kongregate.stats.submit("Level", levelBeaten); }; }; } function StartGame(){ MakeMainMenu(); musicSC = s_piano.play(0, 1); ShowMessage("Welcome to Pumpkin Remover", "You can turn off the music and SFX in the right click menu."); } function AGDone(){ StartGame(); } function PlayLoadedCustomLevel(_arg1:MouseEvent){ if (lvlLoaded){ MakePlayLevel(); }; } public function CustomLevelLoaded(_arg1:XML){ customLevelXML = _arg1; lvlLoading.lvltitle.text = _arg1.title; lvlLoading.lvlauthor.text = ("A level by " + _arg1.author); lvlLoaded = true; lvlLoading.gotoAndStop(2); } public function EndPreloader(){ removeChild(preloader); this.play(); } public function RRPressed(_arg1:Event):void{ var _local2:URLRequest = new URLRequest("http://www.thegamehomepage.com/play/pumpkin-remover-2/"); navigateToURL(_local2, "_blank"); } public function GotoContact(_arg1:Event):void{ var _local2:URLRequest = new URLRequest("http://forums.thegamehomepage.com/sendmessage.php"); navigateToURL(_local2, "_blank"); } public function GotoIncompetech(_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://www.tomfoolio.com/"); navigateToURL(_local2, "_blank"); } public function CMGotoTGH(_arg1:ContextMenuEvent):void{ var _local2:URLRequest = new URLRequest("http://www.thegamehomepage.com/"); navigateToURL(_local2, "_blank"); } public function CMSfxOn(_arg1:ContextMenuEvent):void{ sfxOn = true; } public function CMSfxOff(_arg1:ContextMenuEvent):void{ sfxOn = false; } public function CMToggleSfx(_arg1:ContextMenuEvent):void{ if (sfxOn){ sfxOn = false; } else { sfxOn = true; }; trace(("sfx " + sfxOn)); } public function CMPlayMusic(_arg1:ContextMenuEvent):void{ musicOn = true; musicSC.stop(); musicSC = s_piano.play(0, 1); } public function CMNeverPlayMusic(_arg1:ContextMenuEvent):void{ musicSC.stop(); musicOn = false; } public function CMStopMusic(_arg1:ContextMenuEvent):void{ musicSC.stop(); } public function MakeContextMenu(){ var _local1:ContextMenu = new ContextMenu(); _local1.hideBuiltInItems(); _local1.builtInItems.quality = true; var _local2:ContextMenuItem = new ContextMenuItem("Stop Music"); _local2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CMStopMusic); var _local3:ContextMenuItem = new ContextMenuItem("Never Play Music"); _local3.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CMNeverPlayMusic); var _local4:ContextMenuItem = new ContextMenuItem("Play Music"); _local4.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CMPlayMusic); var _local5:ContextMenuItem = new ContextMenuItem("SFX On"); _local5.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CMSfxOn); var _local6:ContextMenuItem = new ContextMenuItem("SFX Off"); _local6.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CMSfxOff); var _local7:ContextMenuItem = new ContextMenuItem("Contact Author"); _local7.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, GotoContact); var _local8:ContextMenuItem = new ContextMenuItem("More Fun Games"); _local8.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, CMGotoTGH); _local1.customItems.push(_local2, _local3, _local4, _local6, _local5, _local8, _local7); this.contextMenu = _local1; } public function ReMakeMainMenu(_arg1:String="p"){ if (_arg1 == "q"){ removeChild(queueEditor); } else { if (_arg1 == "l"){ removeChild(layoutEditor); } else { if (_arg1 == "ls"){ removeChild(lvlSelector); } else { if (_arg1 == "p"){ removeChild(playLvl); }; }; }; }; MakeMainMenu(); } public function MakeMainMenu(){ lvl = 1; gameTime = 0; mMenu = new mm_mc(); addChild(mMenu); mMenu.playbtn.addEventListener(MouseEvent.CLICK, mmPlayPressed, false, 0, true); mMenu.resetbtn.addEventListener(MouseEvent.CLICK, mmResetPressed, false, 0, true); mMenu.mgbtn.addEventListener(MouseEvent.CLICK, mgPressed, false, 0, true); mMenu.tghbtn.addEventListener(MouseEvent.CLICK, mgPressed, false, 0, true); mMenu.atysbtn.addEventListener(MouseEvent.CLICK, atysPressed, false, 0, true); mMenu.editbtn.addEventListener(MouseEvent.CLICK, mmLEPressed, false, 0, true); mMenu.link_btn.addEventListener(MouseEvent.CLICK, mgPressed, false, 0, true); mMenu.contact_btn.addEventListener(MouseEvent.CLICK, GotoContact, false, 0, true); mMenu.incompetech_btn.addEventListener(MouseEvent.CLICK, GotoIncompetech, false, 0, true); mMenu.addEventListener(Event.REMOVED_FROM_STAGE, mmRemoved, false, 0, true); } function mmPlayPressed(_arg1){ removeChild(mMenu); lvlSelector = new LevelSelector(this); addChild(lvlSelector); } function mmLEPressed(_arg1){ removeChild(mMenu); MakeLayoutEditor(); } function mmResetPressed(_arg1:MouseEvent){ ShowYesNo("Reset Game", "Are you sure you want to clear your progress?", ClearProgress); } function mmRemoved(_arg1){ mMenu.playbtn.removeEventListener(MouseEvent.CLICK, mmPlayPressed); mMenu.resetbtn.removeEventListener(MouseEvent.CLICK, mmResetPressed); mMenu.mgbtn.removeEventListener(MouseEvent.CLICK, mgPressed); mMenu.tghbtn.removeEventListener(MouseEvent.CLICK, mgPressed); mMenu.atysbtn.removeEventListener(MouseEvent.CLICK, atysPressed); mMenu.editbtn.removeEventListener(MouseEvent.CLICK, mmLEPressed); mMenu.removeEventListener(Event.REMOVED_FROM_STAGE, mmRemoved); } function mgPressed(_arg1:MouseEvent){ var _local2 = "http://www.thegamehomepage.com/"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } public function atysPressed(_arg1:MouseEvent){ var _local2 = "http://www.thegamehomepage.com/freesitecontent/"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } public function WalkthroughPressed(_arg1:MouseEvent){ var _local2 = "http://www.thegamehomepage.com/content/pumpkin-remover-3-walkthrough/"; var _local3:URLRequest = new URLRequest(_local2); navigateToURL(_local3, "_blank"); } public function MakeLevelSelector(){ removeChild(playLvl); lvlSelector = new LevelSelector(this); addChild(lvlSelector); trace(("jc " + justCompleted)); if (justCompleted == 5){ ShowMessage("You beat 5 levels!", "Why are graves so noisy?"); ShowMessage("WOOooOoOOo!", "BECAUSE OF THE COFFIN!"); musicSC.stop(); if (musicOn){ musicSC = s_piano.play(0, 1); }; } else { if (justCompleted == 10){ ShowMessage("You beat 10 levels!", "What trees do ghouls like best?"); ShowMessage("WOOooOoOOo!", "CEMETREES!"); musicSC.stop(); if (musicOn){ musicSC = s_piano.play(0, 1); }; } else { if (justCompleted == 15){ ShowMessage("You beat 15 levels!", "What bites people and tastes great on toast?"); ShowMessage("WOOooOoOOo!", "A JAMPIRE!"); musicSC.stop(); if (musicOn){ musicSC = s_piano.play(0, 1); }; } else { if (justCompleted == 20){ ShowMessage("You beat all 20 levels!", "Well done! Now can you beat them all on PAR to turn the pumpkins gold?"); ShowMessage("WOOooOoOOo!", "What do you get when you divide the circumference of a pumpkin by its diameter?"); ShowMessage("WOOooOoOOo!", "PUMPKIN PI!"); musicSC.stop(); if (musicOn){ musicSC = s_piano.play(0, 1); }; }; }; }; }; if (parCompleted){ ShowMessage("Well done!", "You beat all the levels on (or under) PAR!"); ShowMessage("WOOooOoOOo!", "Why doesn't Dracula have any friends?"); ShowMessage("WOOooOoOOo!", "HE'S A PAIN IN THE NECK!"); musicSC.stop(); if (musicOn){ musicSC = s_piano.play(0, 1); }; parCompleted = false; }; justCompleted = 0; } public function musicbcomplete1(_arg1:Event){ musicSC = s_piano.play(0, 1); } public function musicbcomplete2(_arg1:Event){ } public function musicbcomplete3(_arg1:Event){ } public function musicbcomplete4(_arg1:Event){ } public function MakeLayoutEditor(_arg1:String="n"):void{ if (_arg1 == "ls"){ removeChild(lvlSelector); }; layoutEditor = new LayoutEditor(this); addChild(layoutEditor); } public function ShowCode(_arg1:String="n"):void{ var submitPressed:Function; var calledFrom = _arg1; submitPressed = function (){ codePopup.submitbtn.removeEventListener(MouseEvent.CLICK, submitPressed); customLevelXML.title = codePopup.titleBox.text; customLevelXML.author = codePopup.authorBox.text; codePopup.gotoAndStop(2); trace(customLevelXML); }; popupActive = true; codePopup = new code_popup(); codePopup.x = 320; codePopup.y = 275; addChild(codePopup); codePopup.titleBox.text = customLevelXML.title; codePopup.authorBox.text = customLevelXML.author; codePopup.submitbtn.addEventListener(MouseEvent.CLICK, submitPressed); codePopup.cancelbtn.addEventListener(MouseEvent.CLICK, cancelPressed); } public function cancelPressed(_arg1:MouseEvent){ popupActive = false; codePopup.cancelbtn.removeEventListener(MouseEvent.CLICK, cancelPressed); removeChild(codePopup); } public function CustomLevelSaved(_arg1){ var curChar:String; var okPressed:Function; var getXMLPressed:Function; var lid = _arg1; okPressed = function (){ popupActive = false; codePopup.okbtn.removeEventListener(MouseEvent.CLICK, okPressed); codePopup.getxmlbtn.removeEventListener(MouseEvent.CLICK, getXMLPressed); removeChild(codePopup); }; getXMLPressed = function (){ var _local1:String = ("view-source:http://levels.thegamehomepage.com/swfcoms/GetLevel.php?lid=" + lid); var _local2:URLRequest = new URLRequest(_local1); navigateToURL(_local2, "_blank"); }; var okChars = " 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; var curTitle:String = customLevelXML.title; var replacement = ""; var i:int; while (i < curTitle.length) { curChar = curTitle.charAt(i); if (((!((okChars.indexOf(curChar) == -1))) && ((i <= 30)))){ if (curChar == " "){ replacement = (replacement + "-"); } else { replacement = (replacement + curChar); }; }; i = (i + 1); }; if (replacement == ""){ replacement = "untitled"; }; codePopup.urlt = ((("http://www.thegamehomepage.com/play/pumpkin-remover-2/" + replacement) + "/") + lid); codePopup.gotoAndStop(3); codePopup.okbtn.addEventListener(MouseEvent.CLICK, okPressed); } function ClearProgress(){ var _local1:SharedObject = SharedObject.getLocal(SOName); levelBeaten = 0; var _local2:int; while (_local2 < 20) { clicksArray[_local2] = 999; _local2++; }; _local1.data.levelBeaten = levelBeaten; _local1.data.clicksArray = clicksArray; _local1.flush(); } function LoadProgress(){ var _local2:int; var _local1:SharedObject = SharedObject.getLocal(SOName); if (_local1.data.levelBeaten == undefined){ levelBeaten = 0; _local2 = 0; while (_local2 < 45) { clicksArray[_local2] = 999; _local2++; }; } else { levelBeaten = _local1.data.levelBeaten; clicksArray = _local1.data.clicksArray; }; } function UpdateSRTime(){ var _local1:SharedObject = SharedObject.getLocal(SOName); _local1.data.SRTimes = SRTimes; _local1.flush(); } function CheckIfShouldUnlockBonusLevels(){ var _local1:int; var _local2:int; var _local3:int; var _local4:int; while (_local4 < 20) { if (clicksArray[_local4] <= levels.child("level")[_local4].child("par")){ _local2++; }; if (clicksArray[_local4] < levels.child("level")[_local4].child("par")){ _local3++; }; _local4++; }; kongregate.stats.submit("Par", _local2); kongregate.stats.submit("UnderPar", _local3); if (_local2 == 20){ parCompleted = true; }; } function UpdateLevelBeaten(_arg1:int, _arg2:int){ var _local4:int; var _local5:int; if (_arg1 > levelBeaten){ justCompleted = _arg1; levelBeaten = _arg1; }; kongregate.stats.submit("Level", _arg1); if (_arg2 < clicksArray[(_arg1 - 1)]){ if ((((clicksArray[(_arg1 - 1)] > levels.child("level")[(_arg1 - 1)].child("par"))) && ((_arg2 <= levels.child("level")[(_arg1 - 1)].child("par"))))){ clicksArray[(_arg1 - 1)] = _arg2; CheckIfShouldUnlockBonusLevels(); }; _local4 = 0; _local5 = 0; while (_local5 < 20) { if (clicksArray[_local5] < levels.child("level")[_local5].child("par")){ _local4++; }; _local5++; }; kongregate.stats.submit("UnderPar", _local4); clicksArray[(_arg1 - 1)] = _arg2; }; var _local3:SharedObject = SharedObject.getLocal(SOName); _local3.data.levelBeaten = levelBeaten; _local3.data.clicksArray = clicksArray; _local3.flush(); } public function ShowMessage(_arg1:String, _arg2:String){ if (popupActive){ msgArray.push([_arg1, _arg2]); } else { popupActive = true; msgPopup = new MessagePopup(this, _arg1, _arg2); msgPopup.x = 320; msgPopup.y = 275; addChild(msgPopup); msgPopup.okbtn.addEventListener(MouseEvent.CLICK, okPressed); }; } function okPressed(_arg1:Event){ var _local2:Array; msgPopup.okbtn.removeEventListener(MouseEvent.CLICK, okPressed); removeChild(msgPopup); popupActive = false; if (msgArray.length > 0){ _local2 = msgArray.shift(); popupActive = true; msgPopup = new MessagePopup(this, _local2[0], _local2[1]); msgPopup.x = 320; msgPopup.y = 275; addChild(msgPopup); msgPopup.okbtn.addEventListener(MouseEvent.CLICK, okPressed); }; } function ClearLevel(){ customLevelXML = new XML("<level><title>untitled</title><author>anon</author><bg>a</bg><shapes></shapes></level>"); removeChild(layoutEditor); layoutEditor = new LayoutEditor(this); addChild(layoutEditor); } public function ShowYesNo(_arg1:String, _arg2:String, _arg3:Function){ var yesPressed:Function; var noPressed:Function; var mTitle = _arg1; var msg = _arg2; var yesFunction = _arg3; yesPressed = function (){ trace("YES"); popupActive = false; msgPopup.yes_btn.removeEventListener(MouseEvent.CLICK, yesPressed); msgPopup.no_btn.removeEventListener(MouseEvent.CLICK, noPressed); removeChild(msgPopup); yesFunction(); }; noPressed = function (){ trace("NO"); popupActive = false; msgPopup.yes_btn.removeEventListener(MouseEvent.CLICK, yesPressed); msgPopup.no_btn.removeEventListener(MouseEvent.CLICK, noPressed); removeChild(msgPopup); }; popupActive = true; msgPopup = new YesNoPopup(this, mTitle, msg); msgPopup.x = 320; msgPopup.y = 275; addChild(msgPopup); msgPopup.yes_btn.addEventListener(MouseEvent.CLICK, yesPressed, false, 0, true); msgPopup.no_btn.addEventListener(MouseEvent.CLICK, noPressed, false, 0, true); } public function PlayCustomLevel(_arg1:String="n"){ lvl = -1; if (_arg1 == "l"){ removeChild(layoutEditor); }; playLvl = new PlayLevel(this, -1); addChild(playLvl); } public function MakePlayLevel(_arg1:Boolean=false){ if (_arg1){ removeChild(lvlSelector); }; playLvl = new PlayLevel(this, lvl); addChild(playLvl); } public function RetryLevel(){ removeChild(playLvl); MakePlayLevel(); } public function toMins(_arg1:Number){ if ((_arg1 % 60) < 10){ return (((Math.floor((_arg1 / 60)).toString() + ":0") + (Math.floor(((_arg1 % 60) * 1)) / 1).toString())); }; return (((Math.floor((_arg1 / 60)).toString() + ":") + (Math.floor(((_arg1 % 60) * 1)) / 1).toString())); } public function NextLevel(){ if (justCompleted != 0){ MakeLevelSelector(); } else { removeChild(playLvl); if (((speedrun) && (((lvl % 10) == 0)))){ gameTime = (Math.round((gameTime * 1000)) / 1000); lvlSelector = new LevelSelector(this); addChild(lvlSelector); if (gameTime < SRTimes[speedrunref]){ SRTimes[speedrunref] = gameTime; UpdateSRTime(); ShowMessage("Speedrun Complete", (((("You beat the " + groupNames[speedrunref]) + " speedrun in ") + toMins(gameTime)) + " minutes. That's your new personal best!")); lvlSelector.UpdateGroups(); } else { ShowMessage("Speedrun Complete", (((((("You beat the " + groupNames[speedrunref]) + " speedrun in ") + toMins(gameTime)) + " minutes. Not bad but it didn't beat your best time of ") + toMins(SRTimes[speedrunref])) + ".")); }; } else { if (lvl == 40){ lvlSelector = new LevelSelector(this); addChild(lvlSelector); ShowMessage("Message", "That's the last stack! :D"); } else { lvl++; MakePlayLevel(); }; }; }; } public function EditThisLevel(){ removeChild(playLvl); MakeLayoutEditor(); } function frame1(){ stop(); } function frame2(){ } function frame3(){ AssetsLoaded(); stop(); } } }//package
Section 134
//MessagePopup (MessagePopup) package { public dynamic class MessagePopup extends msg_popup { var main:Object; public function MessagePopup(_arg1:Object, _arg2:String, _arg3:String){ main = _arg1; init(_arg2, _arg3); } public function init(_arg1:String, _arg2:String):void{ msgt.text = _arg1; msgbox.text = _arg2; } } }//package
Section 135
//mm_mc (mm_mc) package { import flash.events.*; import flash.display.*; public dynamic class mm_mc extends MovieClip { public var aboutbtn:SimpleButton; public var mgbtn:SimpleButton; public var resetbtn:SimpleButton; public var atysbtn:SimpleButton; public var editbtn:SimpleButton; public var tghbtn:SimpleButton; public var contact_btn:SimpleButton; public var mmbtn:SimpleButton; public var incompetech_btn:SimpleButton; public var link_btn:SimpleButton; public var playbtn:SimpleButton; public function mm_mc(){ addFrameScript(0, frame1, 1, frame2); } public function aboutPressed(_arg1){ gotoAndStop(2); } public function mmPressed(_arg1){ gotoAndStop(1); } function frame1(){ aboutbtn.addEventListener(MouseEvent.CLICK, aboutPressed); stop(); } function frame2(){ mmbtn.addEventListener(MouseEvent.CLICK, mmPressed); stop(); } } }//package
Section 136
//MochiBot (MochiBot) package { import flash.display.*; import flash.system.*; import flash.net.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 137
//msg_popup (msg_popup) package { import flash.display.*; import flash.text.*; public dynamic class msg_popup extends MovieClip { public var msgbox:TextField; public var msgt:TextField; public var bg_cover:MovieClip; public var okbtn:SimpleButton; } }//package
Section 138
//msg_popup_yn (msg_popup_yn) package { import flash.display.*; import flash.text.*; public dynamic class msg_popup_yn extends MovieClip { public var yes_btn:SimpleButton; public var msgbox:TextField; public var msgt:TextField; public var bg_cover:MovieClip; public var no_btn:SimpleButton; } }//package
Section 139
//pausebtn_mc (pausebtn_mc) package { import flash.display.*; public dynamic class pausebtn_mc extends MovieClip { public var pausebtn:SimpleButton; } }//package
Section 140
//PlayLevel (PlayLevel) package { import flash.events.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import flash.utils.*; import flash.media.*; import flash.xml.*; public class PlayLevel extends MovieClip { var topLeftTxt:String;// = "" var lvlFailed:Boolean;// = false var lvlPassed:Boolean;// = false var lvlPaused:Boolean;// = false var cdStarted:Boolean;// = false var lvlTime:Number;// = 0 var lvlStartTime:Number;// = 0 var clicksUsed:int;// = 0 var bgbtn:MovieClip; var lvlPassedmc:MovieClip; var lvlFailedmc:MovieClip; var lvlPausedmc:MovieClip; var exitSRP:MovieClip; var lXML:XML; var bgframe:String; var main:Object; var lvl:int; var allStable:Boolean;// = false var allKilled:Boolean;// = false var allStableCD:int;// = 0 var checkingmc:MovieClip; var endLvlCDCnt:Number;// = 0 var cdSC:SoundChannel; var ticking:Boolean; var pausebtn_h:MovieClip; var solution_h:MovieClip; var walkthroughbtn_h:MovieClip; var bonusCoverMC:MovieClip; var flameCD:int;// = 4 var flameDelay:int;// = 4 var flameArray:Array; var flame_mc:MovieClip; var holder:MovieClip; private var mousePVec:b2Vec2; public var m_world:b2World; public var m_iterations:int;// = 15 public var m_timeStep:Number;// = 0.0266666666666667 public static var mouseXWorld:Number; public static var mouseYWorld:Number; public function PlayLevel(_arg1, _arg2):void{ flameArray = new Array(); holder = new MovieClip(); mousePVec = new b2Vec2(); super(); main = _arg1; lvl = _arg2; lvlStartTime = getTimer(); box2dinit(); init(); } public function init(){ main.frameRate = 40; addEventListener(MouseEvent.MOUSE_DOWN, MouseDown, false, 0, true); bgbtn = new bg_mc(); if (lvl == -1){ main.lvlAttempts++; bgbtn.lvltxt.text = ("attempt " + main.lvlAttempts); lXML = main.customLevelXML.copy(); } else { bgbtn.lvltxt.text = (lvl + "/20"); lXML = main.levels.child("level")[(lvl - 1)].copy(); }; bgbtn.bg.gotoAndStop(lXML.bg); topLeftTxt = (((lXML.title + " - par ") + lXML.par) + " "); bgbtn.toplefttxt.text = (topLeftTxt + "(0)"); addChild(bgbtn); holder.x = 160; addChild(holder); CreateLandscape(); pausebtn_h = new pausebtn_mc(); pausebtn_h.x = 595; pausebtn_h.y = 463; pausebtn_h.pausebtn.addEventListener(MouseEvent.MOUSE_DOWN, PauseGame, false, 0, true); addChild(pausebtn_h); solution_h = new solution_mc(); solution_h.y = 463; solution_h.solution_btn.addEventListener(MouseEvent.MOUSE_DOWN, main.WalkthroughPressed, false, 0, true); addChild(solution_h); if ((((lvl > -1)) && (false))){ walkthroughbtn_h = new walkthroughbtn_mc(); walkthroughbtn_h.x = -30; walkthroughbtn_h.y = 463; walkthroughbtn_h.pausebtn.addEventListener(MouseEvent.MOUSE_DOWN, PauseGame, false, 0, true); addChild(walkthroughbtn_h); }; addEventListener(Event.ENTER_FRAME, UpdateT, false, 0, true); main.stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyboardEvent, false, 0, true); main.stage.addEventListener(KeyboardEvent.KEY_UP, onKeyboardEvent, false, 0, true); this.addEventListener(Event.REMOVED_FROM_STAGE, RemovedFromStage, false, 0, true); main.stage.focus = main.stage; bonusCoverMC = new bonus_cover(); if (main.bonusMode){ addChild(bonusCoverMC); }; } function RemovedFromStage(_arg1:Event){ pausebtn_h.pausebtn.removeEventListener(MouseEvent.MOUSE_DOWN, PauseGame); removeEventListener(Event.ENTER_FRAME, UpdateT); main.stage.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyboardEvent); main.stage.removeEventListener(KeyboardEvent.KEY_UP, onKeyboardEvent); this.removeEventListener(Event.REMOVED_FROM_STAGE, RemovedFromStage); removeEventListener(Event.ENTER_FRAME, Update); } public function UpdateMouseWorld():void{ mouseXWorld = (holder.mouseX / 30); mouseYWorld = (holder.mouseY / 30); } function MouseDown(_arg1:MouseEvent){ var _local2:b2Body; var _local3:MovieClip; var _local4:SoundChannel; if (((!(lvlPaused)) && (!((GetBodyAtMouse(true) == null))))){ _local2 = GetBodyAtMouse(true); if ((((_local2.m_userData.s.t == "save")) || ((_local2.m_userData.s.t == "hardkill")))){ trace("SQUEEK"); } else { clicksUsed++; bgbtn.toplefttxt.text = (((topLeftTxt + "(") + String(clicksUsed)) + ")"); _local3 = new pop_mc(); _local3.x = _local2.m_userData.x; _local3.y = _local2.m_userData.y; holder.addChild(_local3); DestroyMe(_local2); if (main.sfxOn){ _local4 = main.s_pop.play(0, 1); }; }; }; } function DestroyMe(_arg1:b2Body){ holder.removeChild(_arg1.GetUserData()); m_world.DestroyBody(_arg1); } public function GetBodyAtMouse(_arg1:Boolean=false):b2Body{ var _local8:b2Shape; var _local9:Boolean; mousePVec.Set(mouseXWorld, mouseYWorld); var _local2:b2AABB = new b2AABB(); _local2.lowerBound.Set((mouseXWorld - 0.001), (mouseYWorld - 0.001)); _local2.upperBound.Set((mouseXWorld + 0.001), (mouseYWorld + 0.001)); var _local3 = 10; var _local4:Array = new Array(); var _local5:int = m_world.Query(_local2, _local4, _local3); var _local6:b2Body; var _local7:int; while (_local7 < _local5) { if ((((_local4[_local7].GetBody().IsStatic() == false)) || (_arg1))){ _local8 = (_local4[_local7] as b2Shape); _local9 = (_local4[_local7] as b2Shape).TestPoint(_local8.GetBody().GetXForm(), mousePVec); if (_local9){ _local6 = _local8.GetBody(); break; }; }; _local7++; }; return (_local6); } function UnpausePressed(_arg1:MouseEvent){ lvlPaused = false; removeChild(lvlPausedmc); } function PauseGame(_arg1:MouseEvent){ trace("friggin pause ok!"); lvlPaused = true; if (lvl == -1){ lvlPausedmc = new custom_lvlpaused_mc(); lvlPausedmc.resetbtn.addEventListener(MouseEvent.CLICK, RetryPressed); lvlPausedmc.resumebtn.addEventListener(MouseEvent.CLICK, UnpausePressed); lvlPausedmc.editbtn.addEventListener(MouseEvent.CLICK, EditPressed); } else { lvlPausedmc = new lvlpaused_mc(); lvlPausedmc.resetbtn.addEventListener(MouseEvent.CLICK, RetryPressed); lvlPausedmc.resumebtn.addEventListener(MouseEvent.CLICK, UnpausePressed); lvlPausedmc.lsbtn.addEventListener(MouseEvent.CLICK, lsPressed); lvlPausedmc.walkthroughbtn.addEventListener(MouseEvent.CLICK, main.WalkthroughPressed); }; addChild(lvlPausedmc); } function UpdateT(_arg1){ if (((!(cdStarted)) && (!(lvlFailed)))){ lvlTime = ((getTimer() - lvlStartTime) / 1000); }; } public function CreateLandscape(){ var _local1:b2Body; var _local2:b2BodyDef; var _local3:b2PolygonDef; var _local4:b2CircleDef; var _local6:XML; var _local5:XMLList = lXML.shapes.children(); for each (_local6 in _local5) { AddShape(_local6); }; } public function OutOfBounds(){ if (((!(lvlFailed)) && (!(lvlPassed)))){ lvlFailed = true; if (cdStarted){ trace("remove it"); removeChild(checkingmc); }; if (lvl == -1){ lvlFailedmc = new custom_lvlfailed_mc(); lvlFailedmc.retrybtn.addEventListener(MouseEvent.CLICK, RetryPressed); lvlFailedmc.mmbtn.addEventListener(MouseEvent.CLICK, mmPressed); lvlFailedmc.editbtn.addEventListener(MouseEvent.CLICK, EditPressed); } else { main.gameTime = (main.gameTime + lvlTime); lvlFailedmc = new lvlfailed_mc(); lvlFailedmc.retrybtn.addEventListener(MouseEvent.CLICK, RetryPressed); lvlFailedmc.lsbtn.addEventListener(MouseEvent.CLICK, lsPressed); lvlFailedmc.mgbtn.addEventListener(MouseEvent.CLICK, mgPressed); lvlFailedmc.walkthroughbtn.addEventListener(MouseEvent.CLICK, main.WalkthroughPressed); }; addChild(lvlFailedmc); if (ticking){ cdSC.stop(); ticking = false; }; }; } public function lvlComplete():void{ var _local1:b2Body; if (((!(lvlFailed)) && (!(lvlPassed)))){ _local1 = m_world.m_bodyList; while (_local1) { if ((_local1.m_userData is Sprite)){ }; _local1 = _local1.m_next; }; lvlPassed = true; if (lvl == -1){ main.gameTime = (main.gameTime + lvlTime); lvlPassedmc = new custom_lvlpassed_mc(); addChild(lvlPassedmc); lvlPassedmc.sharebtn.addEventListener(MouseEvent.CLICK, getCode, false, 0, true); lvlPassedmc.retrybtn.addEventListener(MouseEvent.CLICK, RetryPressed); lvlPassedmc.editbtn.addEventListener(MouseEvent.CLICK, EditPressed); } else { main.UpdateLevelBeaten(lvl, clicksUsed); main.gameTime = (main.gameTime + lvlTime); lvlPassedmc = new lvlpassed_mc(); addChild(lvlPassedmc); lvlPassedmc.lsbtn.addEventListener(MouseEvent.CLICK, lsPressed); }; if (ticking){ cdSC.stop(); ticking = false; }; }; } function getCode(_arg1:MouseEvent):void{ main.ShowCode("p"); } public function EditPressed(_arg1){ main.EditThisLevel(); } public function mgPressed(_arg1){ main.mgPressed(_arg1); } public function lsPressed(_arg1){ main.MakeLevelSelector(); } public function mmPressed(_arg1){ main.ReMakeMainMenu(); } function ExitSRY(_arg1:MouseEvent){ exitSRP.ybtn.removeEventListener(MouseEvent.CLICK, ExitSRY); exitSRP.nbtn.removeEventListener(MouseEvent.CLICK, ExitSRN); removeChild(exitSRP); main.speedrun = false; main.MakeLevelSelector(); } function ExitSRN(_arg1:MouseEvent){ exitSRP.ybtn.removeEventListener(MouseEvent.CLICK, ExitSRY); exitSRP.nbtn.removeEventListener(MouseEvent.CLICK, ExitSRN); removeChild(exitSRP); } public function RetryPressed(_arg1:MouseEvent){ main.RetryLevel(); } public function KeyRetryPressed(){ if ((((lvl == -1)) && (lvlPassed))){ } else { main.RetryLevel(); }; } public function nextPressed(_arg1:MouseEvent){ main.NextLevel(); } public function onKeyboardEvent(_arg1:KeyboardEvent):void{ if ((((_arg1.keyCode == 82)) || ((_arg1.keyCode == 114)))){ if (_arg1.type == "keyDown"){ KeyRetryPressed(); }; }; } public function AddShape(_arg1){ var _local2:b2CircleDef; var _local3:b2PolygonDef; var _local4:b2Body; var _local5:b2BodyDef; _local5 = new b2BodyDef(); _local5.position.x = (_arg1.x / 30); _local5.position.y = (_arg1.y / 30); switch (_arg1.s.toString()){ case "r": _local3 = new b2PolygonDef(); _local3.SetAsBox((_arg1.w / 60), (_arg1.h / 60)); _local3.density = 1; _local3.friction = 0.5; _local3.restitution = 0.2; break; case "c": _local2 = new b2CircleDef(); _local2.radius = (_arg1.w / 60); _local2.density = 1; _local2.friction = 0.5; _local2.restitution = 0.2; break; case "t": _local3 = new b2PolygonDef(); _local3.vertexCount = 3; _local3.vertices[0].Set(((_arg1.w / 30) * 0.25), (-((_arg1.h / 30)) * 0.75)); _local3.vertices[1].Set(((_arg1.w / 30) * 0.25), ((_arg1.h / 30) * 0.25)); _local3.vertices[2].Set((-((_arg1.w / 30)) * 0.75), ((_arg1.h / 30) * 0.25)); _local3.density = 1; _local3.friction = 0.5; _local3.restitution = 0.2; break; }; _local5.userData = new MovieClip(); _local5.userData.shape = new ((getDefinitionByName(_arg1.s) as Class)); if (_arg1.d == 0){ _local5.userData.shape.gotoAndStop(("f" + _arg1.t)); } else { _local5.userData.shape.gotoAndStop(_arg1.t); }; if (((!((_arg1.s == "c"))) || (!((_arg1.w == 50))))){ _local5.userData.shape.width = _arg1.w; _local5.userData.shape.height = _arg1.h; }; _local5.userData.addChild(_local5.userData.shape); if (_arg1.t == "hardkill"){ _arg1.t = "hardkill"; _local5.userData.lit = false; _local5.userData.burnTimer = 300; } else { if (_arg1.t == "hardkilllit"){ _arg1.t = "hardkill"; _local5.userData.lit = true; _local5.userData.burnTimer = 300; }; }; _local5.userData.s = _arg1.copy(); if ((((_arg1.t == "kill")) || ((_arg1.t == "hardkill")))){ _local5.userData.icon = new ((getDefinitionByName((main.artSet + "face_angry")) as Class)); } else { _local5.userData.icon = new ((getDefinitionByName((main.artSet + "face")) as Class)); }; if (_arg1.d != 0){ _local5.userData.icon.rotation = ((_arg1.d * 90) - 90); _local5.userData.addChild(_local5.userData.icon); }; _local5.angle = ((_arg1.a / 180) * Math.PI); _local4 = m_world.CreateBody(_local5); if (_arg1.s == "c"){ _local4.CreateShape(_local2); } else { _local4.CreateShape(_local3); }; if (_arg1.d == 0){ _local4.PutToSleep(); } else { _local4.SetMassFromShapes(); }; holder.addChild(_local5.userData); } public function box2dinit(){ addEventListener(Event.ENTER_FRAME, Update, false, 0, true); var _local1:b2AABB = new b2AABB(); _local1.lowerBound.Set(-100, -100); _local1.upperBound.Set(100, 100); var _local2:b2Vec2 = new b2Vec2(0, 0); var _local3:Boolean; m_world = new b2World(_local1, _local2, _local3); m_world.SetContactListener(new sensorContactListener(main)); } public function Update(_arg1:Event):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Boolean; var _local7:b2Body; var _local8:int; bonusCoverMC.x = mouseX; bonusCoverMC.y = mouseY; if (((!(lvlPassed)) && (!(lvlPaused)))){ UpdateMouseWorld(); _local6 = false; allKilled = true; allStable = true; flameArray = new Array(); m_world.Step(m_timeStep, m_iterations); _local7 = m_world.m_bodyList; while (_local7) { if ((_local7.m_userData is Sprite)){ _local2 = _local7.GetWorldCenter(); if (_local7.m_userData.s.d == 1){ _local3 = new b2Vec2(0, (_local7.GetMass() * 10)); } else { if (_local7.m_userData.s.d == 2){ _local3 = new b2Vec2((_local7.GetMass() * -10), 0); } else { if (_local7.m_userData.s.d == 3){ _local3 = new b2Vec2(0, (_local7.GetMass() * -10)); } else { if (_local7.m_userData.s.d == 4){ _local3 = new b2Vec2((_local7.GetMass() * 10), 0); } else { _local3 = new b2Vec2(0, 0); }; }; }; }; _local4 = _local7.GetLinearVelocity(); _local5 = (Math.abs(_local4.x) + Math.abs(_local4.y)); if (_local5 < 0.2){ if (_local7.m_userData.icon.currentFrame != 1){ _local7.m_userData.icon.gotoAndStop(1); }; } else { if (_local5 < 1){ if (_local7.m_userData.icon.currentFrame != 2){ _local7.m_userData.icon.gotoAndStop(2); }; } else { if (_local5 < 4){ if (_local7.m_userData.icon.currentFrame != 3){ _local7.m_userData.icon.gotoAndStop(3); }; } else { if (_local5 < 20){ if (_local7.m_userData.icon.currentFrame != 4){ _local7.m_userData.icon.gotoAndStop(4); }; }; }; }; }; if (_local5 > 0.001){ allStable = false; }; if (_local7.IsSleeping()){ } else { _local7.ApplyForce(_local3, _local2); }; if ((((_local7.m_userData.s.t == "kill")) || ((_local7.m_userData.s.t == "hardkill")))){ allKilled = false; if ((((_local7.m_userData.s.t == "hardkill")) && ((_local7.m_userData.lit == true)))){ flameArray.push([_local7.m_userData.x, _local7.m_userData.y, _local7.m_userData.s.d]); _local7.m_userData.burnTimer--; if (_local7.m_userData.burnTimer < 1){ DestroyMe(_local7); _local6 = true; }; }; }; if (!_local6){ _local7.m_userData.x = (_local7.GetPosition().x * 30); _local7.m_userData.y = (_local7.GetPosition().y * 30); _local7.m_userData.shape.rotation = ((_local7.GetAngle() * 180) / Math.PI); if ((((((((_local7.m_userData.y > 800)) || ((_local7.m_userData.y < -500)))) || ((_local7.m_userData.x > 800)))) || ((_local7.m_userData.x < -500)))){ if (_local7.m_userData.s.t == "save"){ OutOfBounds(); }; DestroyMe(_local7); }; }; }; _local7 = _local7.m_next; }; flameCD--; if (flameCD < 1){ _local8 = 0; while (_local8 < flameArray.length) { flame_mc = new flame(); flame_mc.x = flameArray[_local8][0]; flame_mc.y = flameArray[_local8][1]; flame_mc.rotation = ((flameArray[_local8][2] * 90) - 90); holder.addChild(flame_mc); _local8++; }; flameCD = flameDelay; }; if (((((((((allKilled) && (allStable))) && ((lvlTime > 3)))) && (!(cdStarted)))) && (!(lvlFailed)))){ cdStarted = true; checkingmc = new checking_mc(); checkingmc.x = 450; checkingmc.y = 457; addChild(checkingmc); }; if (((cdStarted) && (!(lvlFailed)))){ if (allStable){ allStableCD++; if (allStableCD > 30){ removeChild(checkingmc); lvlComplete(); }; }; endLvlCDCnt = (endLvlCDCnt + 1.5); if (endLvlCDCnt > 358){ lvlComplete(); }; }; }; } } }//package
Section 141
//pop_mc (pop_mc) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class pop_mc extends MovieClip { public function pop_mc(){ addFrameScript(7, frame8); } function frame8(){ Object(parent).removeChild(this); stop(); } } }//package
Section 142
//preloader_mc (preloader_mc) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.system.*; import flash.text.*; import flash.net.*; import flash.external.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.filters.*; import flash.geom.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class preloader_mc extends MovieClip { public var tghbar:MovieClip; public var tghBtn:SimpleButton; public var playBtn:SimpleButton; public var barpc:Number; public var pcLoaded:Number; public var dif:Number; public var cnt:int; public var jump:Number; public function preloader_mc(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 22, frame23, 70, frame71); } public function tghButtonClickHandler(_arg1:Event):void{ navigateToURL(new URLRequest("http://www.thegamehomepage.com"), "_blank"); } public function playButtonClickHandler(_arg1:Event):void{ tghBtn.removeEventListener(MouseEvent.CLICK, tghButtonClickHandler, false); playBtn.removeEventListener(MouseEvent.CLICK, playButtonClickHandler, false); MovieClip(root).EndPreloader(); } function frame1(){ barpc = 0; pcLoaded = 0; dif = 0; cnt = 0; tghBtn.addEventListener(MouseEvent.CLICK, tghButtonClickHandler, false, 0, true); } function frame2(){ pcLoaded = ((loaderInfo.bytesLoaded / loaderInfo.bytesTotal) * 100); dif = ((pcLoaded * 100) - barpc); if (dif >= jump){ barpc = (barpc + jump); }; if (cnt > 10){ Mouse.show(); cnt = 0; }; cnt++; if (barpc != 100){ tghbar.scaleX = (barpc / 100); } else { gotoAndPlay("loaded"); }; } function frame3(){ gotoAndPlay(2); } function frame23(){ playBtn.addEventListener(MouseEvent.CLICK, playButtonClickHandler, false, 0, true); } function frame71(){ stop(); } } }//package
Section 143
//r (r) package { import flash.display.*; public dynamic class r extends MovieClip { } }//package
Section 144
//sensorContactListener (sensorContactListener) package { import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class sensorContactListener extends b2ContactListener { var main:Object; public function sensorContactListener(_arg1){ main = _arg1; } override public function Persist(_arg1:b2ContactPoint):void{ var _local2:MovieClip; var _local3:MovieClip; if (((!((_arg1.shape1.GetBody().GetUserData() == null))) && (!((_arg1.shape2.GetBody().GetUserData() == null))))){ _local2 = _arg1.shape1.GetBody().GetUserData(); _local3 = _arg1.shape2.GetBody().GetUserData(); if ((((_local2.s.t == "hardkill")) && ((_local3.s.t == "hardkill")))){ if ((((_local2.lit == false)) && ((_local3.lit == true)))){ _local2.lit = true; _local2.shape.gotoAndStop("hardkilllit"); } else { if ((((_local2.lit == true)) && ((_local3.lit == false)))){ _local3.lit = true; _local3.shape.gotoAndStop("hardkilllit"); }; }; }; }; } override public function Add(_arg1:b2ContactPoint):void{ var _local2:MovieClip; var _local3:MovieClip; if (((!((_arg1.shape1.GetBody().GetUserData() == null))) && (!((_arg1.shape2.GetBody().GetUserData() == null))))){ _local2 = _arg1.shape1.GetBody().GetUserData(); _local3 = _arg1.shape2.GetBody().GetUserData(); if ((((_local2.s.t == "hardkill")) && ((_local3.s.t == "hardkill")))){ if ((((_local2.lit == false)) && ((_local3.lit == true)))){ _local2.lit = true; _local2.shape.gotoAndStop("hardkilllit"); } else { if ((((_local2.lit == true)) && ((_local3.lit == false)))){ _local3.lit = true; _local3.shape.gotoAndStop("hardkilllit"); }; }; }; }; } } }//package
Section 145
//sfx_fail (sfx_fail) package { import flash.media.*; public dynamic class sfx_fail extends Sound { } }//package
Section 146
//sfx_morse (sfx_morse) package { import flash.media.*; public dynamic class sfx_morse extends Sound { } }//package
Section 147
//sfx_pass (sfx_pass) package { import flash.media.*; public dynamic class sfx_pass extends Sound { } }//package
Section 148
//sfx_piano (sfx_piano) package { import flash.media.*; public dynamic class sfx_piano extends Sound { } }//package
Section 149
//sfx_pop (sfx_pop) package { import flash.media.*; public dynamic class sfx_pop extends Sound { } }//package
Section 150
//sfx_russian (sfx_russian) package { import flash.media.*; public dynamic class sfx_russian extends Sound { } }//package
Section 151
//shape_icons (shape_icons) package { import flash.display.*; public dynamic class shape_icons extends MovieClip { } }//package
Section 152
//Smash (Smash) package { import flash.media.*; public dynamic class Smash extends Sound { } }//package
Section 153
//solution_mc (solution_mc) package { import flash.display.*; public dynamic class solution_mc extends MovieClip { public var solution_btn:SimpleButton; } }//package
Section 154
//tool_holder (tool_holder) package { import flash.display.*; public dynamic class tool_holder extends MovieClip { } }//package
Section 155
//walkthroughbtn_mc (walkthroughbtn_mc) package { import flash.display.*; public dynamic class walkthroughbtn_mc extends MovieClip { public var pausebtn:SimpleButton; } }//package
Section 156
//YesNoPopup (YesNoPopup) package { public dynamic class YesNoPopup extends msg_popup_yn { var main:Object; public function YesNoPopup(_arg1:Object, _arg2:String, _arg3:String){ main = _arg1; init(_arg2, _arg3); } public function init(_arg1:String, _arg2:String):void{ msgt.text = _arg1; msgbox.text = _arg2; } } }//package

Library Items

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

Instance Names

"tghbar"Symbol 28 MovieClip {preloader_mc} Frame 1Symbol 8 MovieClip
"tghBtn"Symbol 28 MovieClip {preloader_mc} Frame 1Symbol 22 Button
"tghbar"Symbol 28 MovieClip {preloader_mc} Frame 7Symbol 8 MovieClip
"playBtn"Symbol 28 MovieClip {preloader_mc} Frame 23Symbol 27 Button
"hh"Symbol 49 MovieClip {e_shapeHolder} Frame 1Symbol 48 MovieClip
"bg"Symbol 76 MovieClip {pumpkin_fla.sel_icon_12} Frame 1Symbol 71 MovieClip {pumpkin_fla.sel_dir_bg_13}
"b"Symbol 117 MovieClip {pumpkin_fla.sel_mc_16} Frame 1Symbol 87 MovieClip {pumpkin_fla.sel_btn_17}
"g"Symbol 117 MovieClip {pumpkin_fla.sel_mc_16} Frame 1Symbol 116 MovieClip
"p"Symbol 133 MovieClip Frame 1Symbol 127 Button
"m"Symbol 133 MovieClip Frame 1Symbol 132 Button
"r"Symbol 146 MovieClip Frame 1Symbol 145 Button
"l"Symbol 146 MovieClip Frame 1Symbol 145 Button
"bg"Symbol 149 MovieClip {editor} Frame 1Symbol 46 MovieClip
"shapeHolder"Symbol 149 MovieClip {editor} Frame 1Symbol 49 MovieClip {e_shapeHolder}
"btn_testStack"Symbol 149 MovieClip {editor} Frame 1Symbol 60 Button
"btn_getCode"Symbol 149 MovieClip {editor} Frame 1Symbol 63 Button
"btn_exit"Symbol 149 MovieClip {editor} Frame 1Symbol 69 Button
"iconbtn"Symbol 149 MovieClip {editor} Frame 1Symbol 76 MovieClip {pumpkin_fla.sel_icon_12}
"btn_clear"Symbol 149 MovieClip {editor} Frame 1Symbol 81 Button
"seldel"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selcopy"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selcut"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"wBox"Symbol 149 MovieClip {editor} Frame 1Symbol 121 EditableText
"hBox"Symbol 149 MovieClip {editor} Frame 1Symbol 122 EditableText
"wpm"Symbol 149 MovieClip {editor} Frame 1Symbol 133 MovieClip
"hpm"Symbol 149 MovieClip {editor} Frame 1Symbol 133 MovieClip
"aBox"Symbol 149 MovieClip {editor} Frame 1Symbol 136 EditableText
"apm"Symbol 149 MovieClip {editor} Frame 1Symbol 133 MovieClip
"xBox"Symbol 149 MovieClip {editor} Frame 1Symbol 141 EditableText
"yBox"Symbol 149 MovieClip {editor} Frame 1Symbol 142 EditableText
"bgbtns"Symbol 149 MovieClip {editor} Frame 1Symbol 146 MovieClip
"selc"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selr"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selcolgreen"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selcolblue"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selcoldarkred"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selcolred"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgravright"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgravleft"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgravdown"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgravup"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgravnone"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"stepBox"Symbol 149 MovieClip {editor} Frame 1Symbol 147 EditableText
"steppm"Symbol 149 MovieClip {editor} Frame 1Symbol 133 MovieClip
"selfresh"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selrotten"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selunlit"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"sellit"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgroundr"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"selgroundc"Symbol 149 MovieClip {editor} Frame 1Symbol 117 MovieClip {pumpkin_fla.sel_mc_16}
"editbtn"Symbol 162 MovieClip {custom_lvlfailed_mc} Frame 1Symbol 156 Button
"mmbtn"Symbol 162 MovieClip {custom_lvlfailed_mc} Frame 1Symbol 158 Button
"retrybtn"Symbol 162 MovieClip {custom_lvlfailed_mc} Frame 1Symbol 161 Button
"editbtn"Symbol 170 MovieClip {custom_lvlpassed_mc} Frame 1Symbol 156 Button
"retrybtn"Symbol 170 MovieClip {custom_lvlpassed_mc} Frame 1Symbol 166 Button
"sharebtn"Symbol 170 MovieClip {custom_lvlpassed_mc} Frame 1Symbol 168 Button
"bg_cover"Symbol 232 MovieClip {code_popup} Frame 1Symbol 198 MovieClip
"forumbtn"Symbol 232 MovieClip {code_popup} Frame 1Symbol 208 Button
"titleBox"Symbol 232 MovieClip {code_popup} Frame 1Symbol 209 EditableText
"authorBox"Symbol 232 MovieClip {code_popup} Frame 1Symbol 211 EditableText
"submitbtn"Symbol 232 MovieClip {code_popup} Frame 1Symbol 216 Button
"cancelbtn"Symbol 232 MovieClip {code_popup} Frame 1Symbol 220 Button
"okbtn"Symbol 232 MovieClip {code_popup} Frame 2Symbol 225 Button
"urlBox"Symbol 232 MovieClip {code_popup} Frame 3Symbol 228 EditableText
"getxmlbtn"Symbol 232 MovieClip {code_popup} Frame 3Symbol 231 Button
"atysbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 235 Button
"tghbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 238 Button
"mgbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 245 Button
"playbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 247 Button
"aboutbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 249 Button
"resetbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 251 Button
"contact_btn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 254 Button
"link_btn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 257 Button
"incompetech_btn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 262 Button
"editbtn"Symbol 272 MovieClip {mm_mc} Frame 1Symbol 264 Button
"mmbtn"Symbol 272 MovieClip {mm_mc} Frame 2Symbol 267 Button
"contact_btn"Symbol 272 MovieClip {mm_mc} Frame 2Symbol 254 Button
"link_btn"Symbol 272 MovieClip {mm_mc} Frame 2Symbol 257 Button
"incompetech_btn"Symbol 272 MovieClip {mm_mc} Frame 2Symbol 262 Button
"bg_cover"Symbol 281 MovieClip {msg_popup} Frame 1Symbol 198 MovieClip
"msgbox"Symbol 281 MovieClip {msg_popup} Frame 1Symbol 274 EditableText
"msgt"Symbol 281 MovieClip {msg_popup} Frame 1Symbol 275 EditableText
"okbtn"Symbol 281 MovieClip {msg_popup} Frame 1Symbol 280 Button
"bg"Symbol 286 MovieClip {bg_mc} Frame 1Symbol 46 MovieClip
"lvltxt"Symbol 286 MovieClip {bg_mc} Frame 1Symbol 283 EditableText
"toplefttxt"Symbol 286 MovieClip {bg_mc} Frame 1Symbol 284 EditableText
"bottomlefttxt"Symbol 286 MovieClip {bg_mc} Frame 1Symbol 285 EditableText
"resumebtn"Symbol 303 MovieClip {custom_lvlpaused_mc} Frame 1Symbol 300 Button
"editbtn"Symbol 303 MovieClip {custom_lvlpaused_mc} Frame 1Symbol 156 Button
"resetbtn"Symbol 303 MovieClip {custom_lvlpaused_mc} Frame 1Symbol 166 Button
"retrybtn"Symbol 312 MovieClip {lvlfailed_mc} Frame 1Symbol 161 Button
"mgbtn"Symbol 312 MovieClip {lvlfailed_mc} Frame 1Symbol 307 Button
"lsbtn"Symbol 312 MovieClip {lvlfailed_mc} Frame 1Symbol 309 Button
"walkthroughbtn"Symbol 312 MovieClip {lvlfailed_mc} Frame 1Symbol 311 Button
"lsbtn"Symbol 315 MovieClip {lvlpassed_mc} Frame 1Symbol 314 Button
"mgbtn"Symbol 315 MovieClip {lvlpassed_mc} Frame 1Symbol 307 Button
"sharebtn"Symbol 315 MovieClip {lvlpassed_mc} Frame 1Symbol 168 Button
"resumebtn"Symbol 317 MovieClip {lvlpaused_mc} Frame 1Symbol 300 Button
"lsbtn"Symbol 317 MovieClip {lvlpaused_mc} Frame 1Symbol 309 Button
"resetbtn"Symbol 317 MovieClip {lvlpaused_mc} Frame 1Symbol 166 Button
"walkthroughbtn"Symbol 317 MovieClip {lvlpaused_mc} Frame 1Symbol 311 Button
"pausebtn"Symbol 321 MovieClip {pausebtn_mc} Frame 1Symbol 320 Button
"pausebtn"Symbol 325 MovieClip {walkthroughbtn_mc} Frame 1Symbol 324 Button
"eye2"Symbol 347 MovieClip {alt_face_angry} Frame 34Symbol 335 MovieClip
"eye1"Symbol 347 MovieClip {alt_face_angry} Frame 34Symbol 335 MovieClip
"bg_cover"Symbol 363 MovieClip {msg_popup_yn} Frame 1Symbol 198 MovieClip
"msgbox"Symbol 363 MovieClip {msg_popup_yn} Frame 1Symbol 356 EditableText
"msgt"Symbol 363 MovieClip {msg_popup_yn} Frame 1Symbol 357 EditableText
"yes_btn"Symbol 363 MovieClip {msg_popup_yn} Frame 1Symbol 360 Button
"no_btn"Symbol 363 MovieClip {msg_popup_yn} Frame 1Symbol 362 Button
"bygazbtn"Symbol 370 MovieClip {pumpkin_fla.title_90} Frame 1Symbol 368 Button
"lvltitle"Symbol 374 MovieClip {loading_level} Frame 1Symbol 371 EditableText
"lvlauthor"Symbol 374 MovieClip {loading_level} Frame 1Symbol 372 EditableText
"playbtn"Symbol 374 MovieClip {loading_level} Frame 1Symbol 247 Button
"bg"Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95} Frame 1Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96}
"n"Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95} Frame 1Symbol 390 EditableText
"btn_exit"Symbol 436 MovieClip {level_selector} Frame 1Symbol 379 Button
"lvltitle"Symbol 436 MovieClip {level_selector} Frame 1Symbol 380 EditableText
"makeyourown_btn"Symbol 436 MovieClip {level_selector} Frame 1Symbol 385 Button
"m1"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m2"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m3"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m4"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m5"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m6"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m7"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m8"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m9"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m10"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m11"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m12"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m13"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m14"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m15"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m16"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m17"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m18"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m19"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m20"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m21"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m22"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m23"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m24"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m25"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m26"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m27"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m28"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m29"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m30"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m31"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m32"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m33"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m34"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m35"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m36"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m37"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m38"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m39"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m40"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"ml_btn"Symbol 436 MovieClip {level_selector} Frame 1Symbol 396 Button
"bonusmode_mc"Symbol 436 MovieClip {level_selector} Frame 1Symbol 405 MovieClip {pumpkin_fla.rewardbonusmode_98}
"faces_mc"Symbol 436 MovieClip {level_selector} Frame 1Symbol 407 MovieClip {pumpkin_fla.rewardfaces_100}
"morse_mc"Symbol 436 MovieClip {level_selector} Frame 1Symbol 413 MovieClip {pumpkin_fla.rewardmorse_101}
"russian_mc"Symbol 436 MovieClip {level_selector} Frame 1Symbol 415 MovieClip {pumpkin_fla.rewardrussian_103}
"lvlsubtitle"Symbol 436 MovieClip {level_selector} Frame 1Symbol 416 EditableText
"m41"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m42"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m43"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m44"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"m45"Symbol 436 MovieClip {level_selector} Frame 1Symbol 391 MovieClip {pumpkin_fla.levelselecttile_95}
"walkthrough_btn"Symbol 436 MovieClip {level_selector} Frame 1Symbol 419 Button
"rr_btn"Symbol 436 MovieClip {level_selector} Frame 1Symbol 423 Button
"happyhalloween_btn"Symbol 436 MovieClip {level_selector} Frame 1Symbol 428 Button
"iphone_btn"Symbol 436 MovieClip {level_selector} Frame 1Symbol 433 Button
"lvltitle"Symbol 436 MovieClip {level_selector} Frame 2Symbol 434 EditableText
"lvlsubtitle"Symbol 436 MovieClip {level_selector} Frame 2Symbol 435 EditableText
"agButton_btn"Symbol 466 MovieClip Frame 1Symbol 465 Button
"AGclick_btn"Symbol 467 MovieClip {AGteaser_mc} Frame 1Symbol 442 Button
"AGskip_btn"Symbol 467 MovieClip {AGteaser_mc} Frame 1Symbol 448 Button
"AGpresented_mc"Symbol 467 MovieClip {AGteaser_mc} Frame 1Symbol 450 MovieClip
"AGlogo_mc"Symbol 467 MovieClip {AGteaser_mc} Frame 1Symbol 466 MovieClip
"solution_btn"Symbol 474 MovieClip {solution_mc} Frame 1Symbol 473 Button

Special Tags

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

Labels

"loaded"Symbol 28 MovieClip {preloader_mc} Frame 4
"a"Symbol 46 MovieClip Frame 1
"tut1"Symbol 46 MovieClip Frame 3
"tut2"Symbol 46 MovieClip Frame 4
"tut3"Symbol 46 MovieClip Frame 5
"tutblack"Symbol 46 MovieClip Frame 6
"tutfire"Symbol 46 MovieClip Frame 7
"tutfresh"Symbol 46 MovieClip Frame 8
"neutral"Symbol 97 MovieClip Frame 1
"save"Symbol 97 MovieClip Frame 2
"kill"Symbol 97 MovieClip Frame 3
"hardkill"Symbol 97 MovieClip Frame 4
"fneutral"Symbol 97 MovieClip Frame 5
"fsave"Symbol 97 MovieClip Frame 6
"fkill"Symbol 97 MovieClip Frame 7
"selr"Symbol 116 MovieClip Frame 1
"selc"Symbol 116 MovieClip Frame 2
"selt"Symbol 116 MovieClip Frame 3
"seldel"Symbol 116 MovieClip Frame 4
"selcopy"Symbol 116 MovieClip Frame 5
"selcut"Symbol 116 MovieClip Frame 6
"selcolblue"Symbol 116 MovieClip Frame 7
"selcolgreen"Symbol 116 MovieClip Frame 8
"selcolred"Symbol 116 MovieClip Frame 9
"selcoldarkred"Symbol 116 MovieClip Frame 10
"selgravdown"Symbol 116 MovieClip Frame 11
"selgravleft"Symbol 116 MovieClip Frame 12
"selgravup"Symbol 116 MovieClip Frame 13
"selgravright"Symbol 116 MovieClip Frame 14
"selgravnone"Symbol 116 MovieClip Frame 15
"selfresh"Symbol 116 MovieClip Frame 19
"selrotten"Symbol 116 MovieClip Frame 20
"selunlit"Symbol 116 MovieClip Frame 21
"sellit"Symbol 116 MovieClip Frame 22
"selgroundr"Symbol 116 MovieClip Frame 23
"selgroundc"Symbol 116 MovieClip Frame 24
"neutral"Symbol 179 MovieClip {c} Frame 1
"save"Symbol 179 MovieClip {c} Frame 2
"kill"Symbol 179 MovieClip {c} Frame 3
"hardkill"Symbol 179 MovieClip {c} Frame 4
"fneutral"Symbol 179 MovieClip {c} Frame 5
"fsave"Symbol 179 MovieClip {c} Frame 6
"fkill"Symbol 179 MovieClip {c} Frame 7
"fhardkill"Symbol 179 MovieClip {c} Frame 8
"hardkilllit"Symbol 179 MovieClip {c} Frame 13
"neutral"Symbol 196 MovieClip {r} Frame 1
"save"Symbol 196 MovieClip {r} Frame 2
"kill"Symbol 196 MovieClip {r} Frame 3
"hardkill"Symbol 196 MovieClip {r} Frame 4
"fneutral"Symbol 196 MovieClip {r} Frame 5
"fsave"Symbol 196 MovieClip {r} Frame 6
"fkill"Symbol 196 MovieClip {r} Frame 7
"fhardkill"Symbol 196 MovieClip {r} Frame 8
"default"Symbol 286 MovieClip {bg_mc} Frame 1
"noblur"Symbol 286 MovieClip {bg_mc} Frame 2
"del"Symbol 287 MovieClip {tool_holder} Frame 1
"copy"Symbol 287 MovieClip {tool_holder} Frame 2
"cut"Symbol 287 MovieClip {tool_holder} Frame 3
"save"Symbol 331 MovieClip {alt_face} Frame 1
"save"Symbol 347 MovieClip {alt_face_angry} Frame 1
"neutral"Symbol 347 MovieClip {alt_face_angry} Frame 35
"hardkill"Symbol 347 MovieClip {alt_face_angry} Frame 38
"hardkillb"Symbol 347 MovieClip {alt_face_angry} Frame 39
"kill"Symbol 347 MovieClip {alt_face_angry} Frame 40
"save"Symbol 349 MovieClip {face} Frame 1
"save"Symbol 350 MovieClip {face_angry} Frame 1
"face"Symbol 355 MovieClip {shape_icons} Frame 1
"bomb"Symbol 355 MovieClip {shape_icons} Frame 2
"cross"Symbol 355 MovieClip {shape_icons} Frame 3
"none"Symbol 355 MovieClip {shape_icons} Frame 4
"arrow"Symbol 355 MovieClip {shape_icons} Frame 5
"locked"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 1
"open"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 2
"openover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 3
"beaten"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 4
"beatenover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 5
"par"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 6
"parover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 7
"bonus"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 8
"bonusover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 9
"parbonus"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 10
"parbonusover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 11
"extralocked"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 12
"extralockedover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 13
"underpar"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 14
"underparover"Symbol 389 MovieClip {pumpkin_fla.LSbtnbg_96} Frame 15




http://swfchan.com/26/129642/info.shtml
Created: 23/2 -2019 01:13:47 Last modified: 23/2 -2019 01:13:47 Server time: 04/05 -2024 01:06:08