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

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

Pyro.swf

This is the info page for
Flash #44538

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


Text
Loading...

www.kongregate.com

88

+1

<p align="left"><font face="Franklin Gothic Medium" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1"><b>x2</b></font></p>

0%

Level 1

[M]ute

[M]ute

[M]ute

[S]uicide

[S]uicide

[S]uicide

Click and drag on the fireball to set
throwing strength and throw it.
Press 'Escape' to cancel throw.
Press 'I' to hide these instructions.

Crates begin to burn when fire hits them.

Press 'S' to sacrafice your current throw if you
are sure it will not hit any more torches.
Press 'M' to mute the sound effects.

Extra fireballs can
come in handy.
Some of them also
give you a powerup.

This one extends your guide line.

Damijin Presents:

Loaded Die Games

Skip Intro

Skip Intro

Skip Intro

Play Game

Instructions

Credits

More Games!

<p align="center"><font face="Franklin Gothic Medium" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">Want this game on your site?</font></p><p align="center"><font face="Franklin Gothic Medium" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">You can download it <font color="#0066ff"><a href="http://cdn.mochiads.com/c/g/pyro.zip" target = "_blank">here</a></font>.</font></p>

<p align="center"><font face="Franklin Gothic Medium" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">Want this game on your site?</font></p><p align="center"><font face="Franklin Gothic Medium" size="14" color="#ffffff" letterSpacing="0.000000" kerning="1">You can download it <font color="#0066ff"><a href="http://cdn.mochiads.com/c/g/pyro.zip" target = "_blank">here</a></font>.</font></p>

PLAY!

PLAY!

PLAY!

<p align="left"><font face="Tiny Box BlackBitA8" size="11" color="#ffffff" letterSpacing="0.000000" kerning="1">Best Time:</font></p>

Main Menu

Main Menu

Main Menu

(check 'em out, so I can eat)

Sponsored
by my
friends at

88

ACED!

YOU
MISSED!

Retry

Retry

Retry

Level
Select

Level
Select

Level
Select

Play more games!

Play more games!

Play more games!

<p align="left"><font face="Tiny Box BlackBitA8" size="12" color="#ffffff" letterSpacing="5.000000" kerning="0">Secret level A! - Secret level A! - Secret level A! - Secret level A! -</font></p>

ACED!

Congratulations!
You've saved the
castle from
darkness...

...and burned a lot
of shit.

If you still crave
more fireball
flinging goodness,
try to unlock all
of the secret
levels.

Thank you to
everyone who
supported us
with donations
and testing.
You made it
possible.

Until next time...
Cheers,
Mike and Greg

Design:
Michael "Damijin" Gribbin
Code, Effects, and Production:
Greg "Arkatufus" Soedharmo
We would like to thank
our supporters
and beta testers:
AlisonClaire
arcaneCoder
GwenWilliams
ItBeNickYo
Joshhh
JT the Ghost
Juliette
Kyle
lightsun
moomoomoomoo
Nabb
oceanix
Redvizzle
Schild
spartakips
Spes
Steph
TheGhostGamer
Ventero
Sponsored by:

Pyro

Back

Back

Back

How to Play
PYRO

Each level has unlit torches that you need to ignite
with your fireball. Grab the ball with your mouse, and
drag it to set power and trajectory, and light as many
as you can.
Some levels may not require you to light all of the
torches. You can see how many you need to hit in the
top right corner of each level. You also may
encounter powerups on a few levels. If you see a
fireball on the level, touching it will collect it and give
you an extra shot. Colored fireballs have different
properties like an extra long guide line, extra bouce,
or smaller size.
Lighting all of the required torches with one shot is
called an ace, and may unlock bonus levels.

<p align="center"><font face="Franklin Gothic Medium" size="16" color="#ffffff" letterSpacing="0.000000" kerning="1">If you encounter any bugs, let me know with a whisper <font color="#0000ff"><a href="http://www.kongregate.com/accounts/damijin?gamereferral=pyro" target = "_blank">on my Kongregate profile</a></font>, or submit a bug report there. Good luck!</font></p>

ActionScript [AS3]

Section 1
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var radius:Number; public var localPosition:b2Vec2; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 2
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { 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 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); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } public function GetRadius():Number{ return (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)))); } 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); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22 = _arg2.R; var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22 = _arg1.R; var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } } }//package Box2D.Collision.Shapes
Section 3
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function Copy():b2FilterData{ var _local1:b2FilterData = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 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 SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 6
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_coreVertices:Array; public var m_vertices:Array; private var s_supportVec:b2Vec2; public var m_centroid:b2Vec2; public var m_normals:Array; public var m_obb:b2OBB; 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 ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB = s_sweptAABB1; var _local5:b2AABB = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):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 ComputeMass(_arg1:b2MassData):void{ var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; var _local7:Number = 0; var _local8:Number = (1 / 3); var _local9:int; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function GetNormals():Array{ return (m_normals); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local11:Number; _local5 = _arg1.R; var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); var _local8:int; _local4 = m_coreVertices[0]; var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7)); var _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); var _local6:b2Mat22 = _local5; _local4 = m_obb.extents; var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } override 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++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local10:Number; var _local4:b2Mat22 = _arg1.R; var _local5:Number = (_arg2.x - _arg1.position.x); var _local6:Number = (_arg2.y - _arg1.position.y); var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); var _local9:int; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local7:Number; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); var _local4:Number = 0; var _local5:Number = 0; var _local6:Number = 0; _local7 = (1 / 3); var _local8:int; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } 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.Dynamics.*; import Box2D.Collision.*; public class b2Shape { public var m_next:b2Shape; public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var m_friction:Number; public var m_isSensor:Boolean; public var m_restitution:Number; public var m_userData; public var m_proxyId:uint; public var m_body:b2Body; public static const e_polygonShape:int = 1; public static const e_unknownShape:int = -1; public static const e_circleShape:int = 0; public static const e_shapeTypeCount:int = 2; private static var s_resetAABB:b2AABB = new b2AABB(); private static var s_syncAABB:b2AABB = new b2AABB(); private static var s_proxyAABB:b2AABB = new b2AABB(); public function b2Shape(_arg1:b2ShapeDef){ m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ 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 SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } 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 ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB = 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 TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 8
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var friction:Number;// = 0.2 public var isSensor:Boolean;// = false public var density:Number;// = 0 public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var type:int;// = -1 public function b2ShapeDef(){ filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 9
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number = (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 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; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 11
//b2BoundValues (Box2D.Collision.b2BoundValues) package Box2D.Collision { public class b2BoundValues { public var lowerValues:Array; public var upperValues:Array; public function b2BoundValues(){ lowerValues = [0, 0]; upperValues = [0, 0]; super(); } } }//package Box2D.Collision
Section 12
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_bounds:Array; public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _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 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 Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _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 TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number = _arg3.lowerBound.x; var _local5:Number = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); var _local6:Number = _arg3.upperBound.x; var _local7:Number = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):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 TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local4:Array; var _local5:b2Bound; var _local3:int; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local5:int; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1: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++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _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 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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local11:b2Mat22; var _local12:b2Vec2; var _local25:Number; var _local6:int = _arg1.m_vertexCount; var _local7:Array = _arg1.m_vertices; var _local8:Array = _arg1.m_normals; var _local9:int = _arg4.m_vertexCount; var _local10:Array = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); var _local24:Number = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2 = _arg2.lowerBound; var _local4:b2Vec2 = _arg1.upperBound; var _local5:Number = (_local3.x - _local4.x); var _local6:Number = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; var _local7:Number = (_local3.x - _local4.x); var _local8:Number = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local12:b2Mat22; var _local13:b2Vec2; var _local20:ClipVertex; var _local23:Number; var _local7:int = _arg2.m_vertexCount; var _local8:Array = _arg2.m_normals; var _local9:int = _arg5.m_vertexCount; var _local10:Array = _arg5.m_vertices; var _local11:Array = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; var _local17:int; var _local18:Number = Number.MAX_VALUE; var _local19:int; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; var _local21:int = _local17; var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local17:int; var _local18:uint; var _local34:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; var _local7:int; var _local8:Array = [_local7]; var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; var _local10:int; var _local11:Array = [_local10]; var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; var _local15:b2XForm = new b2XForm(); var _local16:b2XForm = new b2XForm(); var _local19:Number = 0.98; var _local20:Number = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; var _local21:Array = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); var _local22:int = _local13.m_vertexCount; var _local23:Array = _local13.m_vertices; var _local24:b2Vec2 = _local23[_local17]; var _local25:b2Vec2 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25); var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); var _local29:Number = b2Math.b2Dot(_local28, _local25); var _local30:Number = -(b2Math.b2Dot(_local27, _local25)); var _local31:Number = b2Math.b2Dot(_local27, _local37); var _local32:Array = [new ClipVertex(), new ClipVertex()]; var _local33:Array = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); var _local35:int; var _local36:int; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local8:b2Vec2; var _local9:b2Mat22; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; var _local6:int = _arg2.m_vertexCount; var _local7:Array = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); var _local14:int; var _local15:Number = -(Number.MAX_VALUE); var _local16:int; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local18:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); var _local12:Number = (_local10 - _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = ((_local12 * _local12) + (_local13 * _local13)); var _local15:Number = _arg2.m_radius; var _local16:Number = _arg4.m_radius; var _local17:Number = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; var _local19:b2ManifoldPoint = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); var _local20:Number = (0.5 * (_local8 + _local10)); var _local21:Number = (0.5 * (_local9 + _local11)); var _local22:Number = (_local20 - _arg3.position.x); var _local23:Number = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local17:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); var _local18:int; var _local19:Number = -(Number.MAX_VALUE); var _local20:Number = _arg4.m_radius; var _local21:int = _arg2.m_vertexCount; var _local22:Array = _arg2.m_vertices; var _local23:Array = _arg2.m_normals; var _local24:int; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; var _local25:int = _local18; var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; var _local27:b2Vec2 = _local22[_local26]; var _local28:Number = (_local27.x - _local11.x); var _local29:Number = (_local27.y - _local11.y); var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); var _local31:Number = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 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; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = new b2ContactID(); _local1.key = key; return (_local1); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } public function get key():uint{ return (_key); } } }//package Box2D.Collision
Section 16
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var friction:Number; public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 17
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _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 ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local17:Number; var _local6:b2Vec2 = _arg5[0]; var _local7:b2Vec2 = _arg5[1]; var _local8:b2Vec2 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; var _local12:Number = -(_local7.x); var _local13:Number = -(_local7.y); var _local14:Number = (_local6.x - _local7.x); var _local15:Number = (_local6.y - _local7.y); var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 18
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var pointCount:int;// = 0 public var normal:b2Vec2; public var points:Array; public function b2Manifold(){ points = new Array(b2Settings.b2_maxManifoldPoints); var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ pointCount = _arg1.pointCount; var _local2:int; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 19
//b2ManifoldPoint (Box2D.Collision.b2ManifoldPoint) package Box2D.Collision { import Box2D.Common.Math.*; public class b2ManifoldPoint { public var separation:Number; public var localPoint2:b2Vec2; public var normalImpulse:Number; public var tangentImpulse:Number; public var localPoint1:b2Vec2; public var id:b2ContactID; public function b2ManifoldPoint(){ localPoint1 = new b2Vec2(); localPoint2 = new b2Vec2(); id = new b2ContactID(); super(); } public function Set(_arg1:b2ManifoldPoint):void{ localPoint1.SetV(_arg1.localPoint1); localPoint2.SetV(_arg1.localPoint2); separation = _arg1.separation; normalImpulse = _arg1.normalImpulse; tangentImpulse = _arg1.tangentImpulse; id.key = _arg1.id.key; } public function Reset():void{ localPoint1.SetZero(); localPoint2.SetZero(); separation = 0; normalImpulse = 0; tangentImpulse = 0; id.key = 0; } } }//package Box2D.Collision
Section 20
//b2OBB (Box2D.Collision.b2OBB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2OBB { public var R:b2Mat22; public var center:b2Vec2; public var extents:b2Vec2; public function b2OBB(){ R = new b2Mat22(); center = new b2Vec2(); extents = new b2Vec2(); super(); } } }//package Box2D.Collision
Section 21
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var proxyId1:uint; public var userData;// = null public var proxyId2:uint; public var status:uint; public var next:uint; public static var e_pairFinal:uint = 4; public static var b2_tableMask:int = (b2_tableCapacity - 1); public static var e_pairRemoved:uint = 2; public static var b2_nullPair:uint = b2Settings.USHRT_MAX; public static var e_pairBuffered:uint = 1; public static var b2_nullProxy:uint = b2Settings.USHRT_MAX; public static var b2_tableCapacity:int = b2Settings.b2_maxPairs; public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 22
//b2PairCallback (Box2D.Collision.b2PairCallback) package Box2D.Collision { public class b2PairCallback { public function PairRemoved(_arg1, _arg2, _arg3):void{ } public function PairAdded(_arg1, _arg2){ return (null); } } }//package Box2D.Collision
Section 23
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_hashTable:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _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 ValidateBuffer():void{ } 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(); }; } 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(); }; } 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); } 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(); }; } 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 ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 24
//b2Point (Box2D.Collision.b2Point) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Point { public var p:b2Vec2; public function b2Point(){ p = new b2Vec2(); super(); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (p); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ return (p); } } }//package Box2D.Collision
Section 25
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var userData;// = null public var lowerBounds:Array; public var upperBounds:Array; public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 26
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; 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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local7:Number = _arg1.m_sweepRadius; var _local8:Number = _arg3.m_sweepRadius; var _local9:Number = _arg2.t0; var _local10:Number = (_arg2.c.x - _arg2.c0.x); var _local11:Number = (_arg2.c.y - _arg2.c0.y); var _local12:Number = (_arg4.c.x - _arg4.c0.x); var _local13:Number = (_arg4.c.y - _arg4.c0.y); var _local14:Number = (_arg2.a - _arg2.a0); var _local15:Number = (_arg4.a - _arg4.a0); var _local16:Number = 0; var _local17:b2Vec2 = s_p1; var _local18:b2Vec2 = s_p2; var _local19 = 20; var _local20:int; var _local21:Number = 0; var _local22:Number = 0; var _local23:Number = 0; var _local24:Number = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 28
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var id:b2ContactID; public var v:b2Vec2; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 29
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 30
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function Set(_arg1:Number):void{ var _local2:Number; _local2 = Math.cos(_arg1); var _local3:Number = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function 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 GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number = col1.x; var _local5:Number = col2.x; var _local6:Number = col1.y; var _local7:Number = col2.y; var _local8:Number = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 31
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:* = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number = (_arg1.x - _arg2.x); var _local4:Number = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 32
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var a:Number; public var c:b2Vec2; public var a0:Number; public var c0:b2Vec2; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; var _local3:b2Mat22 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 33
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var y:Number; public var x:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function MulM(_arg1:b2Mat22):void{ var _local2:Number = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function SetZero():void{ x = 0; y = 0; } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function Normalize():Number{ var _local1:Number = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; var _local2:Number = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function CrossVF(_arg1:Number):void{ var _local2:Number = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossFV(_arg1:Number):void{ var _local2:Number = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 34
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var position:b2Vec2; public var R:b2Mat22; public var scale:Number; 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); }; scale = 1; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _r:uint;// = 0 private var _g:uint;// = 0 private var _b:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 36
//b2Settings (Box2D.Common.b2Settings) package Box2D.Common { import Box2D.Common.Math.*; public class b2Settings { public static const b2_angularSleepTolerance:Number = 0.0111111111111111; public static const b2_linearSleepTolerance:Number = 0.01; public static const b2_angularSlop:Number = 0.0349065850398866; public static const b2_linearSlop:Number = 0.005; public static const b2_pi:Number = 3.14159265358979; public static const b2_maxProxies:int = 0x0200; public static const b2_maxAngularVelocitySquared:Number = 62500; public static const b2_maxPolygonVertices:int = 8; public static const b2_velocityThreshold:Number = 1; public static const b2_contactBaumgarte:Number = 0.2; public static const b2_maxPairs:int = 4096; public static const b2_maxTOIContactsPerIsland:int = 32; public static const b2_timeToSleep:Number = 0.5; public static const b2_maxManifoldPoints:int = 2; public static const b2_maxAngularVelocity:Number = 250; public static const b2_maxAngularCorrection:Number = 0.139626340159546; public static const USHRT_MAX:int = 0xFFFF; public static const b2_maxLinearVelocity:Number = 200; public static const b2_maxLinearCorrection:Number = 0.2; public static const b2_toiSlop:Number = 0.04; public static const b2_maxLinearVelocitySquared:Number = 40000; public static function b2Assert(_arg1:Boolean):void{ var _local2:b2Vec2; if (!_arg1){ _local2.x++; }; } } }//package Box2D.Common
Section 37
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; 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 Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2CircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 38
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetShape1():b2Shape{ return (m_shape1); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetNext():b2Contact{ return (m_next); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function GetManifolds():Array{ return (null); } 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 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 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); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; var _local4:int = _arg1.m_type; var _local5:int = _arg2.m_type; var _local6:b2ContactRegister = s_registers[_local4][_local5]; var _local7:Function = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 39
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var normal:b2Vec2; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var body2:b2Body; public var friction: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 r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var tangentMass:Number; public var equalizedMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 41
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var other:b2Body; public var prev:b2ContactEdge; public var contact:b2Contact; public var next:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 42
//b2ContactRegister (Box2D.Dynamics.Contacts.b2ContactRegister) package Box2D.Dynamics.Contacts { public class b2ContactRegister { public var primary:Boolean; public var createFcn:Function; public var destroyFcn:Function; } }//package Box2D.Dynamics.Contacts
Section 43
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var normal:b2Vec2; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 44
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _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 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))); } 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++; }; } } }//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.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; 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 Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 47
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function 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 Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 48
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_u:b2Vec2; public var m_mass:Number; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function 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 GetReactionTorque():Number{ return (0); } 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 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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body = m_body1; var _local4:b2Body = m_body2; _local2 = _local3.m_xf.R; var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); var _local16:Number = (_local15 * m_u.x); var _local17:Number = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 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 length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 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_ground2:b2Body; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_revolute2:b2RevoluteJoint; public var m_force:Number; public var m_mass:Number; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_revolute1:b2RevoluteJoint; public var m_prismatic1:b2PrismaticJoint; public var m_constant:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); var _local2:int = _arg1.joint1.m_type; var _local3:int = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_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 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 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); } 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 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)); } public function GetRatio():Number{ return (m_ratio); } 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)); } } }//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 linear2:b2Vec2; public var angular1:Number; public var angular2:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 53
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetBody2():b2Body{ return (m_body2); } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function GetNext():b2Joint{ return (m_next); } public function GetType():int{ return (m_type); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 54
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var body2:b2Body; public var type:int; public var userData; public var collideConnected:Boolean; public var body1:b2Body; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 55
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; public var joint:b2Joint; } }//package Box2D.Dynamics.Joints
Section 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 K1:b2Mat22; private var K:b2Mat22; public var m_beta:Number; public var m_mass:b2Mat22; private var K2:b2Mat22; public var m_target:b2Vec2; public var m_gamma:Number; public var m_impulse:b2Vec2; public var m_C:b2Vec2; public var m_localAnchor:b2Vec2; public var m_maxForce: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)); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override 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 GetAnchor1():b2Vec2{ return (m_target); } override public function GetReactionTorque():Number{ return (0); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } 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)))); } } }//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 timeStep:Number; public var target:b2Vec2; public var maxForce:Number; public var dampingRatio:Number; public var frequencyHz:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 58
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_refAngle:Number; public var m_torque:Number; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_angularMass:Number; public var m_maxMotorForce:Number; public var m_localYAxis1:b2Vec2; public var m_force:Number; public var m_motorMass:Number; public var m_upperTranslation:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitState:int; public var m_linearMass:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_linearJacobian:b2Jacobian; 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 SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local8:Number; var _local11: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); _local11 = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); 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 GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetJointTranslation():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1); var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2); var _local6:Number = (_local5.x - _local4.x); var _local7:Number = (_local5.y - _local4.y); var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():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 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)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ var _local3:b2Mat22; var _local1:b2Body = m_body1; var _local2:b2Body = m_body2; _local3 = _local1.m_xf.R; var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; var _local9:Number = (_local1.m_sweep.c.x + _local4); var _local10:Number = (_local1.m_sweep.c.y + _local5); var _local11:Number = (_local2.m_sweep.c.x + _local7); var _local12:Number = (_local2.m_sweep.c.y + _local8); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1); var _local16:b2Vec2 = _local1.m_linearVelocity; var _local17:b2Vec2 = _local2.m_linearVelocity; var _local18:Number = _local1.m_angularVelocity; var _local19:Number = _local2.m_angularVelocity; var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } override 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; } public function GetMotorForce():Number{ return (m_motorForce); } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } } }//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 motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 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_limitState1:int; public var m_limitState2:int; public var m_ground:b2Body; public var m_maxLength2:Number; public var m_maxLength1:Number; public var m_limitPositionImpulse1:Number; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_constant:Number; public var m_positionImpulse:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_limitMass1:Number; public var m_limitMass2:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_limitForce1:Number; public var m_limitForce2:Number; public var m_u2:b2Vec2; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } 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)); } 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 GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } 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)))); }; } 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 GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 61
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_pivotMass:b2Mat22; public var m_motorForce:Number; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_enableMotor:Boolean; public var m_referenceAngle:Number; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_upperAngle:Number; public var m_lowerAngle:Number; public var m_maxMotorTorque:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function 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 GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } 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)))); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } public function GetMotorTorque():Number{ return (m_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; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } } }//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 upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import flash.geom.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_next:b2Body; public var m_xf:b2XForm; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_shapeList:b2Shape; public var m_force:b2Vec2; public var m_mass:Number; public var m_sweep:b2Sweep; public var m_torque:Number; public var m_userData; public var m_flags:uint; public var m_world:b2World; public var m_prev:b2Body; public var m_invMass:Number; public var m_type:int; public var m_linearDamping:Number; public var m_shapeCount:int; public var m_angularDamping:Number; public var m_invI:Number; public var m_linearVelocity:b2Vec2; public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ 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_xf.scale = _arg1.scale; 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 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 SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function SynchronizeTransform():void{ 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 GetInertia():Number{ return (m_I); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } 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 PutToSleep():void{ m_flags = (m_flags | e_sleepFlag); m_sleepTime = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_force.SetZero(); m_torque = 0; } public function GetJointList():b2JointEdge{ return (m_jointList); } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _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 GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_force.x = (m_force.x + _arg1.x); m_force.y = (m_force.y + _arg1.y); m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))); } public function SynchronizeShapes():Boolean{ var _local4:b2Shape; var _local1:b2XForm = s_xf1; _local1.R.Set(m_sweep.a0); var _local2:b2Mat22 = _local1.R; var _local3:b2Vec2 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); var _local5:Boolean; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function GetAngle():Number{ return (m_sweep.a); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function GetMass():Number{ return (m_mass); } 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 GetShapeList():b2Shape{ return (m_shapeList); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); var _local3:b2Mat22 = m_xf.R; var _local4:b2Vec2 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; var _local5:int = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetTransform():Matrix{ var _local1:Number = m_xf.scale; return (new Matrix(1, 0, 0, 1, (m_xf.position.x * _local1), (m_xf.position.y * _local1))); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetNext():b2Body{ return (m_next); } public function Advance(_arg1:Number):void{ m_sweep.Advance(_arg1); m_sweep.c.SetV(m_sweep.c0); m_sweep.a = m_sweep.a0; SynchronizeTransform(); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.m_next = m_shapeList; m_shapeList = _local2; m_shapeCount++; _local2.m_body = this; _local2.CreateProxy(m_world.m_broadPhase, m_xf); _local2.UpdateSweepRadius(m_sweep.localCenter); return (_local2); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function DestroyShape(_arg1:b2Shape):void{ 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 GetUserData(){ return (m_userData); } public function IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = 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 GetWorld():b2World{ return (m_world); } public function GetPosition():b2Vec2{ return (m_xf.position); } } }//package Box2D.Dynamics
Section 65
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var angularDamping:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var scale:Number; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public var fixedRotation: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; scale = 1; 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 Remove(_arg1:b2ContactPoint):void{ } public function Persist(_arg1:b2ContactPoint):void{ } public function Result(_arg1:b2ContactResult):void{ } } }//package Box2D.Dynamics
Section 69
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function 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--; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape = (_arg1 as b2Shape); var _local4:b2Shape = (_arg2 as b2Shape); var _local5:b2Body = _local3.m_body; var _local6:b2Body = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } public function Collide():void{ var _local2:b2Body; var _local3:b2Body; var _local1:b2Contact = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 70
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_drawFlags:uint; public var m_lineThickness:Number;// = 1 public var m_drawScale:Number;// = 1 public var m_sprite:Sprite; public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawFlags = 0; } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale)); } public function 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 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 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 GetFlags():uint{ return (m_drawFlags); } 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.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeShape(_arg1:b2Shape):void{ } public function SayGoodbyeJoint(_arg1:b2Joint):void{ } } }//package Box2D.Dynamics
Section 72
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_joints:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; var _local4:int; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7); _local13++; }; _local11++; }; _local4++; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _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 Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } 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); } } }//package Box2D.Dynamics
Section 73
//b2TimeStep (Box2D.Dynamics.b2TimeStep) package Box2D.Dynamics { public class b2TimeStep { public var warmStarting:Boolean; public var positionCorrection:Boolean; public var dt:Number; public var maxIterations:int; public var dtRatio:Number; public var inv_dt:Number; } }//package Box2D.Dynamics
Section 74
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ 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 DrawJoint(_arg1:b2Joint):void{ var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; var _local2:b2Body = _arg1.m_body1; var _local3:b2Body = _arg1.m_body2; var _local4:b2XForm = _local2.m_xf; var _local5:b2XForm = _local3.m_xf; var _local6:b2Vec2 = _local4.position; var _local7:b2Vec2 = _local5.position; var _local8:b2Vec2 = _arg1.GetAnchor1(); var _local9:b2Vec2 = _arg1.GetAnchor2(); var _local10:b2Color = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_distanceJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; case b2Joint.e_pulleyJoint: _local11 = (_arg1 as b2PulleyJoint); _local12 = _local11.GetGroundAnchor1(); _local13 = _local11.GetGroundAnchor2(); m_debugDraw.DrawSegment(_local12, _local8, _local10); m_debugDraw.DrawSegment(_local13, _local9, _local10); m_debugDraw.DrawSegment(_local12, _local13, _local10); break; case b2Joint.e_mouseJoint: m_debugDraw.DrawSegment(_local8, _local9, _local10); break; default: if (_local2 != m_groundBody){ m_debugDraw.DrawSegment(_local6, _local8, _local10); }; m_debugDraw.DrawSegment(_local8, _local9, _local10); if (_local3 != m_groundBody){ m_debugDraw.DrawSegment(_local7, _local9, _local10); }; }; } public function Refilter(_arg1:b2Shape):void{ _arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf); } public function SetDebugDraw(_arg1:b2DebugDraw):void{ m_debugDraw = _arg1; } public function SetContinuousPhysics(_arg1:Boolean):void{ m_continuousPhysics = _arg1; } public function GetProxyCount():int{ return (m_broadPhase.m_proxyCount); } 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; }; }; } 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 SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _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 GetContactCount():int{ return (m_contactCount); } 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 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 SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _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 GetJointList():b2Joint{ return (m_jointList); } public function GetBodyList():b2Body{ return (m_bodyList); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function Validate():void{ m_broadPhase.Validate(); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local3:b2Body; var _local4:b2Shape; var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local5:b2Body; var _local6:b2Shape; var _local2:Boolean = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; var _local3:b2Body = _arg1.m_body1; var _local4:b2Body = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function 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 SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } 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 GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 75
//IHash (com.hurlant.crypto.hash.IHash) package com.hurlant.crypto.hash { import flash.utils.*; public interface IHash { function toString():String; function getHashSize():uint; function getInputSize():uint; function hash(_arg1:ByteArray):ByteArray; } }//package com.hurlant.crypto.hash
Section 76
//MD5 (com.hurlant.crypto.hash.MD5) package com.hurlant.crypto.hash { import flash.utils.*; public class MD5 implements IHash { public static const HASH_SIZE:int = 16; private function ff(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7)); } private function cmn(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint):uint{ return ((rol((((_arg2 + _arg1) + _arg4) + _arg6), _arg5) + _arg3)); } private function hh(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7)); } public function getHashSize():uint{ return (HASH_SIZE); } public function hash(_arg1:ByteArray):ByteArray{ var _local2:uint = (_arg1.length * 8); var _local3:String = _arg1.endian; while ((_arg1.length % 4) != 0) { _arg1[_arg1.length] = 0; }; _arg1.position = 0; var _local4:Array = []; _arg1.endian = Endian.LITTLE_ENDIAN; var _local5:uint; while (_local5 < _arg1.length) { _local4.push(_arg1.readUnsignedInt()); _local5 = (_local5 + 4); }; var _local6:Array = core_md5(_local4, _local2); var _local7:ByteArray = new ByteArray(); _local7.endian = Endian.LITTLE_ENDIAN; _local5 = 0; while (_local5 < 4) { _local7.writeUnsignedInt(_local6[_local5]); _local5++; }; _arg1.length = (_local2 / 8); _arg1.endian = _local3; return (_local7); } private function gg(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7)); } public function toString():String{ return ("md5"); } public function getInputSize():uint{ return (64); } private function rol(_arg1:uint, _arg2:uint):uint{ return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2)))); } private function ii(_arg1:uint, _arg2:uint, _arg3:uint, _arg4:uint, _arg5:uint, _arg6:uint, _arg7:uint):uint{ return (cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7)); } private function core_md5(_arg1:Array, _arg2:uint):Array{ var _local8:uint; var _local9:uint; var _local10:uint; var _local11:uint; _arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32))); _arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2; var _local3:uint = 1732584193; var _local4:uint = 4023233417; var _local5:uint = 2562383102; var _local6:uint = 271733878; var _local7:uint; while (_local7 < _arg1.length) { _arg1[_local7] = ((_arg1[_local7]) || (0)); _arg1[(_local7 + 1)] = ((_arg1[(_local7 + 1)]) || (0)); _arg1[(_local7 + 2)] = ((_arg1[(_local7 + 2)]) || (0)); _arg1[(_local7 + 3)] = ((_arg1[(_local7 + 3)]) || (0)); _arg1[(_local7 + 4)] = ((_arg1[(_local7 + 4)]) || (0)); _arg1[(_local7 + 5)] = ((_arg1[(_local7 + 5)]) || (0)); _arg1[(_local7 + 6)] = ((_arg1[(_local7 + 6)]) || (0)); _arg1[(_local7 + 7)] = ((_arg1[(_local7 + 7)]) || (0)); _arg1[(_local7 + 8)] = ((_arg1[(_local7 + 8)]) || (0)); _arg1[(_local7 + 9)] = ((_arg1[(_local7 + 9)]) || (0)); _arg1[(_local7 + 10)] = ((_arg1[(_local7 + 10)]) || (0)); _arg1[(_local7 + 11)] = ((_arg1[(_local7 + 11)]) || (0)); _arg1[(_local7 + 12)] = ((_arg1[(_local7 + 12)]) || (0)); _arg1[(_local7 + 13)] = ((_arg1[(_local7 + 13)]) || (0)); _arg1[(_local7 + 14)] = ((_arg1[(_local7 + 14)]) || (0)); _arg1[(_local7 + 15)] = ((_arg1[(_local7 + 15)]) || (0)); _local8 = _local3; _local9 = _local4; _local10 = _local5; _local11 = _local6; _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, 3614090360); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, 3905402710); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, 3250441966); _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, 4118548399); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, 2821735955); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, 4249261313); _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, 2336552879); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, 4294925233); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, 2304563134); _local3 = ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682); _local6 = ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, 4254626195); _local5 = ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, 2792965006); _local4 = ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, 4129170786); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, 3225465664); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, 3921069994); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, 3593408605); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, 3634488961); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, 3889429448); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, 3275163606); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, 4107603335); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501); _local3 = gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, 2850285829); _local6 = gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, 4243563512); _local5 = gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473); _local4 = gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, 2368359562); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, 4294588738); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, 2272392833); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, 4259657740); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, 2763975236); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, 4139469664); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, 3200236656); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, 3936430074); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, 3572445317); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189); _local3 = hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, 3654602809); _local6 = hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, 3873151461); _local5 = hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520); _local4 = hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, 3299628645); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, 4096336452); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, 2878612391); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, 4237533241); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, 2399980690); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, 4293915773); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, 2240044497); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, 4264355552); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, 2734768916); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649); _local3 = ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, 4149444226); _local6 = ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, 3174756917); _local5 = ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259); _local4 = ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, 3951481745); _local3 = (_local3 + _local8); _local4 = (_local4 + _local9); _local5 = (_local5 + _local10); _local6 = (_local6 + _local11); _local7 = (_local7 + 16); }; return ([_local3, _local4, _local5, _local6]); } } }//package com.hurlant.crypto.hash
Section 77
//ArrayUtil (com.hurlant.util.ArrayUtil) package com.hurlant.util { import flash.utils.*; public class ArrayUtil { public static function equals(_arg1:ByteArray, _arg2:ByteArray):Boolean{ if (_arg1.length != _arg2.length){ return (false); }; var _local3:int = _arg1.length; var _local4:int; while (_local4 < _local3) { if (_arg1[_local4] != _arg2[_local4]){ return (false); }; _local4++; }; return (true); } } }//package com.hurlant.util
Section 78
//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 79
//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 80
//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 81
//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 82
//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 83
//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 84
//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 85
//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 86
//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 87
//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 88
//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 89
//KongregateAPI (com.kongregate.as3.client.KongregateAPI) package com.kongregate.as3.client { import flash.events.*; import flash.display.*; import flash.utils.*; import com.kongregate.as3.client.services.*; import flash.net.*; import com.kongregate.as3.client.events.*; import flash.system.*; 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 90
//ButtonFlame (effects.ButtonFlame) package effects { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.media.*; import flash.filters.*; public class ButtonFlame extends Bitmap { private const DEST:Point; private const MATRIX_3x5; private var snd_loop:Sound; private var cFilter:ConvolutionFilter; private var isTurningOff:Boolean; private var backBuffer:BitmapData; private var frontBuffer:BitmapData; private var W2:int; private var screenBuffer:BitmapData; private var fireSpread:int; private var FLAME_HEIGHT:int; private var offTimer:Timer; private var SOURCE:Rectangle; private var snd_tfm:SoundTransform; private var snd_stop:Sound; private var isOn:Boolean; private var snd_start:Sound; private var SPARKS_LEFT:int; private var currChannel:SoundChannel; private var SPARKS_RIGHT:int; private var FLAME_WIDTH:int; private var palette:Array; public function ButtonFlame(_arg1:int, _arg2:int){ DEST = new Point(0, 0); MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.3, -2, false, false, 4278190335, 0); palette = new Array(); offTimer = new Timer(1100, 1); snd_start = new MainButton_Start(); snd_loop = new MainButton_Loop(); snd_stop = new MainButton_Stop(); snd_tfm = new SoundTransform(0.5, 0); super(null, "auto", true); FLAME_WIDTH = _arg1; FLAME_HEIGHT = _arg2; W2 = (_arg1 / 2); SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); backBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); frontBuffer = backBuffer.clone(); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, true, 0); bitmapData = screenBuffer; offTimer.addEventListener(TimerEvent.TIMER, turnOffFlame); this.addEventListener(Event.ENTER_FRAME, update); isOn = false; initpalette(); } private function handleOnComplete(_arg1:Event):void{ currChannel.removeEventListener(Event.SOUND_COMPLETE, handleOnComplete); currChannel = snd_loop.play(0, int.MAX_VALUE, snd_tfm); } private function initpalette(){ var _local1:Sprite = new TransparentFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 1)); _local3++; }; _local2.dispose(); } private function turnOffFlame(_arg1:TimerEvent):void{ isOn = false; } public function update(_arg1:Event):void{ var _local4:uint; var _local5:uint; if (!isOn){ return; }; var _local2:uint = (FLAME_HEIGHT - 8); if (isTurningOff){ } else { if (fireSpread < W2){ fireSpread = (fireSpread + 10); frontBuffer.lock(); _local4 = 0; while (_local4 < fireSpread) { _local5 = 0; while (_local5 < 6) { frontBuffer.setPixel(uint(((((Math.random() * fireSpread) * 2) + W2) - fireSpread)), (_local2 + _local5), (Math.random() * 15)); _local5++; }; _local4++; }; frontBuffer.unlock(); } else { frontBuffer.lock(); _local4 = 0; while (_local4 < W2) { _local5 = 0; while (_local5 < 7) { frontBuffer.setPixel(uint((Math.random() * FLAME_WIDTH)), (_local2 + _local5), (Math.random() * 25)); _local5++; }; _local4++; }; frontBuffer.unlock(); }; }; backBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(backBuffer, SOURCE, DEST, null, null, palette, null); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); var _local3:BitmapData = frontBuffer; frontBuffer = backBuffer.clone(); _local3.dispose(); } public function flameOn():void{ fireSpread = 0; isOn = true; isTurningOff = false; currChannel = snd_start.play(0, 0, snd_tfm); currChannel.addEventListener(Event.SOUND_COMPLETE, handleOnComplete); if (offTimer.running){ offTimer.reset(); }; } public function flameOff():void{ isTurningOff = true; currChannel.removeEventListener(Event.SOUND_COMPLETE, handleOnComplete); currChannel.stop(); currChannel = snd_stop.play(0, 0, snd_tfm); offTimer.start(); } } }//package effects
Section 91
//CreditFlame (effects.CreditFlame) package effects { import flash.display.*; import flash.geom.*; import flash.filters.*; public class CreditFlame extends Bitmap { private const DEST:Point; private const MATRIX_3x5; private var cFilter:ConvolutionFilter; private var SPARKS:int; private var backBuffer:BitmapData; private var frontBuffer:BitmapData; private var screenBuffer:BitmapData; private var FLAME_HEIGHT:int; private var SOURCE:Rectangle; private var FLAME_WIDTH:int; private var palette:Array; public var running:Boolean; public function CreditFlame(_arg1:int, _arg2:int):void{ DEST = new Point(0, 0); MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.6, -1, false, false, 4278190335, 0); palette = new Array(); super(null, "auto", true); FLAME_WIDTH = _arg1; FLAME_HEIGHT = _arg2; SPARKS = (FLAME_WIDTH / 2); SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); frontBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, true, 0); bitmapData = screenBuffer; initpalette(); running = true; } public function update():void{ var _local1:uint; var _local2:uint; var _local3:uint; if (running){ _local1 = (FLAME_HEIGHT - 7); frontBuffer.lock(); _local2 = 0; while (_local2 < SPARKS) { _local3 = 0; while (_local3 < 6) { frontBuffer.setPixel(uint((Math.random() * FLAME_WIDTH)), (_local1 + _local3), (Math.random() * 25)); _local3++; }; _local2++; }; frontBuffer.unlock(); }; frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(frontBuffer, SOURCE, DEST, null, null, palette, null); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); } public function dispose():void{ bitmapData = null; frontBuffer.dispose(); screenBuffer.dispose(); palette.length = 0; frontBuffer = null; screenBuffer = null; palette = null; cFilter = null; } private function initpalette():void{ var _local1:Sprite = new TransparentCreditFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 1)); _local3++; }; _local2.dispose(); } } }//package effects
Section 92
//Fireball (effects.Fireball) package effects { import flash.display.*; import flash.geom.*; import flash.media.*; import flash.filters.*; public class Fireball extends Bitmap { private const FLAME_WIDTH:int = 400; private const PT_ZERO:Point; private const FLAME_HEIGHT:int = 500; private const SCREEN_RECT:Rectangle; private const MATRIX_3x5; private var cFilter:ConvolutionFilter; private var backBuffer:BitmapData; private var frontBuffer:BitmapData; private var screenBuffer:BitmapData; private var flareTfm:SoundTransform; private var targetVol:Number; private var flare:Sound; private var masker:BitmapData; private var offset:Number; private var SOURCE:Rectangle; private var spark:BitmapData; private var DEST:Point; private var torches:Array; private var noiseSeed:uint;// = 0 private var soundOn:Boolean; private var flareChannel:SoundChannel; private var palette:Array; public function Fireball():void{ MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); SCREEN_RECT = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); PT_ZERO = new Point(0, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.35, -2, true, false, 0xFF, 1); backBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); frontBuffer = backBuffer.clone(); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0); palette = new Array(); super(); initPalette(); var _local1:Sprite = new NoiseGenerator(); spark = new BitmapData(_local1.width, _local1.height, false, 0xFF); masker = new BitmapData(_local1.width, _local1.height, false); masker.draw(_local1); bitmapData = screenBuffer; SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); DEST = new Point(0, 0); offset = (spark.width / 2); torches = new Array(); flare = new Flare(); flareTfm = new SoundTransform(0, 0); flareChannel = flare.play(0, int.MAX_VALUE, flareTfm); targetVol = 0; soundOn = true; } public function scale(_arg1:Number){ var _local2:Matrix = new Matrix(_arg1, 0, 0, _arg1, 0, 0); var _local3:Sprite = new NoiseGenerator(); spark = new BitmapData((_local3.width * _arg1), (_local3.height * _arg1), false, 0xFF); masker = new BitmapData((_local3.width * _arg1), (_local3.height * _arg1), false); masker.draw(_local3, _local2); offset = (spark.width / 2); } public function update(_arg1:Matrix, _arg2:Number):void{ var _local6:Number; var _local7:Number; var _local8:Number; noiseSeed++; var _local3:Number = (_arg2 * 0.1); _local3 = (155 - (_local3 * 155)); if (_local3 < 0){ _local3 = 0; }; spark.noise(noiseSeed, _local3, 0x0100, BitmapDataChannel.BLUE, true); spark.draw(masker, null, null, BlendMode.ADD); _arg1.tx = (_arg1.tx - offset); _arg1.ty = (_arg1.ty - offset); frontBuffer.draw(spark, _arg1, null, BlendMode.MULTIPLY); SOURCE = frontBuffer.getColorBoundsRect(4294967295, 4278190335, false); SOURCE = frontBuffer.generateFilterRect(SOURCE, cFilter); DEST.x = SOURCE.x; DEST.y = SOURCE.y; frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); SOURCE.inflate(6, 6); DEST.offset(-6, -6); var _local4:BitmapData = new BitmapData(SOURCE.width, SOURCE.height, false, 0); var _local5:Rectangle = SOURCE.clone(); _local5.x = 0; _local5.y = 0; _local4.paletteMap(frontBuffer, SOURCE, PT_ZERO, null, null, palette); screenBuffer.copyPixels(_local4, _local5, DEST); _local4.dispose(); if (soundOn){ _local6 = (_arg2 - 7.5); _local7 = flareTfm.volume; _local8 = ((_arg1.tx - 200) * 0.0025); targetVol = (((_local6 * _local6) * 0.1) * ((_local6 < 0)) ? -1 : 1); if (targetVol > 1){ targetVol = 1; } else { if (targetVol < 0.05){ targetVol = 0.05; }; }; _local7 = (_local7 + ((targetVol - _local7) * 0.2)); flareTfm.volume = _local7; flareTfm.pan = _local8; flareChannel.soundTransform = flareTfm; }; } public function dispose():void{ flareChannel.stop(); flareChannel = null; flare = null; flareTfm = null; spark.dispose(); masker.dispose(); screenBuffer.dispose(); palette.length = 0; spark = null; masker = null; screenBuffer = null; palette = null; } public function switchPalette(_arg1:Sprite):void{ var _local2:BitmapData = new BitmapData(0x0100, 10, false); _local2.draw(_arg1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = _local2.getPixel(_local3, 2); _local3++; }; _local2.dispose(); } private function initPalette():void{ var _local1:Sprite = new FlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, false); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = _local2.getPixel(_local3, 2); _local3++; }; _local2.dispose(); } public function stopSound():void{ soundOn = false; if (flareChannel){ flareChannel.stop(); }; } } }//package effects
Section 93
//Flame (effects.Flame) package effects { import flash.display.*; import flash.geom.*; import flash.filters.*; public class Flame extends Bitmap { private const DEST:Point; private const MATRIX_3x5; private var screenBuffer:BitmapData; private var backBuffer:BitmapData; private var palette:Array; private var frontBuffer:BitmapData; private var cFilter:ConvolutionFilter; private var FLAME_HEIGHT:int; private var SPARKS:int; private var FLAME_WIDTH:int; private var SOURCE:Rectangle; public function Flame(_arg1:int, _arg2:int){ DEST = new Point(0, 0); MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.56, -1, false, false, 4278190335, 0); palette = new Array(); super(null, "auto", true); FLAME_WIDTH = _arg1; FLAME_HEIGHT = _arg2; SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); backBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); frontBuffer = backBuffer.clone(); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, true, 0); bitmapData = screenBuffer; initpalette(); } private function initpalette(){ var _local1:Sprite = new TransparentFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 1)); _local3++; }; _local2.dispose(); } public function update(_arg1:int){ var _local5:uint; var _local2:uint = (FLAME_HEIGHT - 10); SPARKS = (_arg1 / 2); FLAME_WIDTH = _arg1; frontBuffer.lock(); var _local3:uint; while (_local3 < SPARKS) { _local5 = 0; while (_local5 < 7) { frontBuffer.setPixel(uint((Math.random() * FLAME_WIDTH)), (_local2 + _local5), (Math.random() * 25)); _local5++; }; _local3++; }; frontBuffer.unlock(); backBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(backBuffer, SOURCE, DEST, null, null, palette, null); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); var _local4:BitmapData = frontBuffer; frontBuffer = backBuffer.clone(); _local4.dispose(); } } }//package effects
Section 94
//MaskedFlame (effects.MaskedFlame) package effects { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.filters.*; public class MaskedFlame extends Bitmap { const DEST:Point; const MATRIX_3x5; private var tfm:ColorTransform; private var noiseSeed:uint; private var frontBuffer:BitmapData; private var palette:Array; var noiseBmp:Bitmap; private var screenBuffer:BitmapData; private var dir:Array; private var offset:Array; private var perlin:BitmapData; private var noiseGenerator:BitmapData; private var SOURCE:Rectangle; private var masker:BitmapData; var noise:Sprite; private var perlinSeed:uint; private var FLAME_HEIGHT:int; private var mtx:Matrix; private var FLAME_WIDTH:int; private var cFilter:ConvolutionFilter; private var skipper:int;// = 0 public function MaskedFlame(_arg1:MovieClip, _arg2:int, _arg3:int){ DEST = new Point(0, 0); MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); offset = new Array(new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0), new Point(0, 0)); dir = new Array(new Point(rnd(), rnd()), new Point(rnd(), rnd()), new Point(rnd(), rnd()), new Point(rnd(), rnd()), new Point(rnd(), rnd())); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4, -2, false, false, 0xFF, 0); palette = new Array(); noiseSeed = (Math.random() * uint.MAX_VALUE); perlinSeed = (Math.random() * uint.MAX_VALUE); super(null, "always", true); FLAME_WIDTH = _arg2; FLAME_HEIGHT = _arg3; noiseGenerator = new BitmapData(_arg1.flameMask.width, _arg1.flameMask.height, false); masker = new BitmapData(_arg1.flameMask.width, _arg1.flameMask.height, false); perlin = new BitmapData(_arg1.flameMask.width, _arg1.flameMask.height, false); masker.draw(_arg1.flameMask); _arg1.flameMask.visible = false; mtx = new Matrix(1, 0, 0, 1, _arg1.flameMask.x, _arg1.flameMask.y); tfm = new ColorTransform(0.2, 0.2, 0.2); perlin.perlinNoise(5, 30, offset.length, perlinSeed, false, false, 7, true, offset); SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); frontBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, true, 0); bitmapData = perlin; bitmapData = screenBuffer; initPalette(); this.addEventListener(Event.ADDED_TO_STAGE, startFlame); this.addEventListener(Event.REMOVED_FROM_STAGE, stopFlame); _arg1.addChild(this); } private function update(_arg1:Event):void{ noiseSeed++; var _local2:int = offset.length; var _local3:int; while (_local3 < _local2) { offset[_local3] = offset[_local3].add(dir[_local3]); _local3++; }; perlin.perlinNoise(5, 30, offset.length, perlinSeed, false, false, 7, true, offset); noiseGenerator.noise(noiseSeed, 80, 0xFF, 7, true); noiseGenerator.draw(masker, null, null, BlendMode.ADD); noiseGenerator.draw(perlin, null, tfm, BlendMode.ADD); frontBuffer.draw(noiseGenerator, mtx, null, BlendMode.MULTIPLY); frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(frontBuffer, SOURCE, DEST, null, null, palette); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); } private function stopFlame(_arg1:Event){ dispose(); } private function dispose():void{ this.removeEventListener(Event.ENTER_FRAME, update); perlin.dispose(); noiseGenerator.dispose(); frontBuffer.dispose(); screenBuffer.dispose(); palette.length = 0; perlin = null; noiseGenerator = null; frontBuffer = null; screenBuffer = null; } private function initPalette(){ var _local1:Sprite = new TransparentFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 1)); _local3++; }; _local2.dispose(); } private function rnd():Number{ return ((Math.random() - 0.5)); } private function startFlame(_arg1:Event){ this.addEventListener(Event.ENTER_FRAME, update); } } }//package effects
Section 95
//BounceUpPowerUp (game.BounceUpPowerUp) package game { import flash.display.*; public class BounceUpPowerUp extends PowerUpBase { public var powerUpHitArea:MovieClip; public function BounceUpPowerUp():void{ } override protected function applyEffect():void{ owner.bounceBonus(); } override protected function initPalette():void{ var _local1:Sprite = new TransparentGreenFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 2)); _local3++; }; _local2.dispose(); } override protected function hideHitArea():void{ powerUpHitArea.visible = false; } } }//package game
Section 96
//Burnable (game.Burnable) package game { import flash.events.*; import flash.display.*; import flash.geom.*; import Box2D.Dynamics.*; import flash.utils.*; import flash.media.*; import flash.filters.*; public class Burnable extends Sprite implements IFireEmitter { protected const PT_ZERO:Point; protected const MATRIX_3x5; protected const FLAME_HEIGHT:int = 35; protected const SCREEN_RECT:Rectangle; protected const FLAME_WIDTH:int = 20; protected var dissolveRandom:int; protected var disintegrateCounter:int; protected var SOURCE:Rectangle; protected var neighbour:Array; protected var DEST:Point; protected var targetBitmap:BitmapData; public var dummy:MovieClip; protected var DISSOLVE_SOURCE:Rectangle; protected var noiseSeed:uint;// = 0 protected var mtx:Matrix; protected var burning:Boolean; protected var cFilter:ConvolutionFilter; public var burnTime:int; protected var fire:Bitmap; protected var display:Bitmap; protected var timer:Timer; protected var frontBuffer:BitmapData; protected var dissolveCounter:int; protected var screenBuffer:BitmapData; protected var alive:Boolean; public var blockBody:b2Body; protected var owner:GameLevel; protected var origBitmap:BitmapData; protected var noiseMin:int; protected var spark:BitmapData; public var spreadTime:int; protected var lastListener:Function; protected var dissolving:Boolean; protected var palette:Array; protected static var burnCount:int; protected static var crackleTfm:SoundTransform; protected static var targetVol:Number; protected static var isPlaying:Boolean; protected static var crackleChannel:SoundChannel; protected static var crackle:Sound; public function Burnable():void{ MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); SCREEN_RECT = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); PT_ZERO = new Point(0, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.35, -2, true, false, 0xFF, 1); frontBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, true, 0); palette = new Array(); DISSOLVE_SOURCE = new Rectangle(0, 0, 20, 20); super(); neighbour = new Array(); burning = false; alive = true; disintegrateCounter = -1; } public function drawSpark():void{ if (!burning){ return; }; if (alive){ noiseSeed++; spark.noise(noiseSeed, noiseMin, 0xFF, BitmapDataChannel.BLUE, true); frontBuffer.draw(spark, mtx, null, BlendMode.MULTIPLY); }; frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(frontBuffer, SOURCE, PT_ZERO, null, null, palette); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); if (dissolveCounter > 0){ dissolveCounter--; dissolveRandom = origBitmap.pixelDissolve(targetBitmap, DISSOLVE_SOURCE, DEST, dissolveRandom, 30); } else { if (disintegrateCounter > 0){ disintegrateCounter--; dissolveRandom = origBitmap.pixelDissolve(origBitmap, DISSOLVE_SOURCE, DEST, dissolveRandom, 30, 0); } else { if (disintegrateCounter == 0){ removeChild(display); }; }; }; updateSound(); } public function init(_arg1:BitmapData, _arg2:BitmapData):void{ var _local4:Array; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:DisplayObjectContainer; var _local12:DisplayObjectContainer; var _local3:DisplayObjectContainer = DisplayObjectContainer(owner); var _local5:Point = new Point(x, y); var _local6:Point = new Point(); _local5 = this.localToGlobal(_local5); _local7 = 0; while (_local7 < 3) { _local6.y = ((y - 20) + (_local7 * 20)); _local8 = 0; while (_local8 < 3) { _local6.x = ((x - 20) + (_local8 * 20)); _local4 = _local3.getObjectsUnderPoint(_local6); _local9 = _local4.length; if (_local9 > 0){ _local10 = 0; while (_local10 < _local9) { _local11 = _local4[_local10].parent; _local12 = _local4[_local10].parent.parent; if ((((_local11 is Burnable)) && (!((_local11 == this))))){ neighbour.push(_local11); }; if ((((_local12 is Burnable)) && (!((_local12 == this))))){ neighbour.push(_local12); }; _local10++; }; }; _local8++; }; _local7++; }; origBitmap = new BitmapData(20, 20); origBitmap.copyPixels(_arg1, DISSOLVE_SOURCE, DEST, null, null, true); targetBitmap = _arg2; display = new Bitmap(origBitmap); display.x = dummy.x; display.y = dummy.y; addChild(display); removeChild(dummy); dummy = null; _local3.addChild(fire); } protected function updateFireDeath(_arg1:Event):void{ frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(frontBuffer, SOURCE, PT_ZERO, null, null, palette); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); if (disintegrateCounter > 0){ disintegrateCounter--; dissolveRandom = origBitmap.pixelDissolve(origBitmap, DISSOLVE_SOURCE, DEST, dissolveRandom, 30, 0); } else { removeChild(display); }; updateSound(); } public function dispose(_arg1:Event=null):void{ var e = _arg1; try { owner.removeFire(this); } catch(e:Error) { }; this.visible = false; if (lastListener != null){ timer.removeEventListener(TimerEvent.TIMER, lastListener); }; if (timer){ timer.stop(); timer = null; }; burnCount--; if (burnCount < 0){ burnCount = 0; }; if (burnCount < 12){ targetVol = (burnCount / 12); }; if (crackleChannel){ updateSound(); }; try { fire.parent.removeChild(fire); } catch(e:Error) { }; try { removeChild(display); } catch(e:Error) { }; display = null; frontBuffer.dispose(); screenBuffer.dispose(); spark.dispose(); origBitmap.dispose(); targetBitmap.dispose(); frontBuffer = null; screenBuffer = null; spark = null; origBitmap = null; targetBitmap = null; cFilter = null; palette.length = 0; try { parent.removeChild(this); } catch(e:Error) { }; owner.reportBurnStop(); } public function initSpark(_arg1:GameLevel):void{ owner = _arg1; noiseSeed = (Math.random() * 50000); noiseMin = ((Math.random() * 10) + 160); dissolveRandom = (Math.random() * int.MAX_VALUE); dissolveCounter = 50; spark = new BitmapData(20, 20, false, 0); mtx = new Matrix(1, 0, 0, 1, 0, (FLAME_HEIGHT - 20)); fire = new Bitmap(screenBuffer); fire.x = (x - (width / 2)); fire.y = ((y - FLAME_HEIGHT) + (height / 2)); SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); DEST = new Point(); initPalette(); if (!crackle){ crackle = new Crackle(); crackleTfm = new SoundTransform(0, 0); isPlaying = false; targetVol = 0; burnCount = 0; }; } protected function updateSound():void{ var _local1:Number = crackleTfm.volume; _local1 = (_local1 + ((targetVol - _local1) * 0.05)); if (_local1 < 0.0001){ _local1 = 0; }; crackleTfm.volume = _local1; if (((_local1) && (!(isPlaying)))){ isPlaying = true; crackleChannel = crackle.play(0, int.MAX_VALUE, crackleTfm); } else { if (_local1){ crackleChannel.soundTransform = crackleTfm; } else { crackleChannel.stop(); isPlaying = false; }; }; } protected function stopBurning(_arg1:TimerEvent):void{ timer.removeEventListener(TimerEvent.TIMER, stopBurning); blockBody.m_world.DestroyBody(blockBody); alive = false; dissolveRandom = (Math.random() * int.MAX_VALUE); disintegrateCounter = 50; timer.delay = 1200; timer.reset(); timer.addEventListener(TimerEvent.TIMER, dispose); lastListener = dispose; timer.start(); } protected function initPalette():void{ var _local1:Sprite = new TransparentFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 2)); _local3++; }; _local2.dispose(); } protected function spreadFire(_arg1:TimerEvent):void{ var _local2:int; timer.removeEventListener(TimerEvent.TIMER, spreadFire); var _local3:int = neighbour.length; _local2 = 0; while (_local2 < _local3) { neighbour[_local2].burn(); _local2++; }; timer.delay = (burnTime - spreadTime); timer.reset(); timer.addEventListener(TimerEvent.TIMER, stopBurning); lastListener = stopBurning; timer.start(); } public function burn():void{ if (!burning){ burning = true; burnCount++; if (burnCount < 12){ targetVol = (burnCount / 12); }; timer = new Timer((Math.random() * 500), 1); timer.addEventListener(TimerEvent.TIMER, startBurning); lastListener = startBurning; timer.start(); owner.reportBurnStart(); }; } protected function startBurning(_arg1:TimerEvent):void{ timer.removeEventListener(TimerEvent.TIMER, startBurning); timer.delay = spreadTime; timer.reset(); timer.addEventListener(TimerEvent.TIMER, spreadFire); lastListener = spreadFire; timer.start(); } public function addNeighbour(_arg1:DisplayObjectContainer):void{ neighbour.push(_arg1); } public static function stopSound():void{ if (crackleChannel){ crackleChannel.stop(); isPlaying = false; }; } } }//package game
Section 97
//ButtonContainer (game.ButtonContainer) package game { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.media.*; import flash.text.*; public class ButtonContainer extends MovieClip { public var btn_Sponsor:SimpleButton; public var button_02:LevelButton; public var button_03:LevelButton; public var button_04:LevelButton; public var button_05:LevelButton; public var button_06:LevelButton; public var button_07:LevelButton; public var button_08:LevelButton; public var button_09:LevelButton; protected var snd_click:Sound; public var btn_mainMenu:SimpleButton; public var button_01:LevelButton; protected var snd_playOver:Sound; public var aced:MovieClip; protected var buttonArray:Array; public var button_10:LevelButton; public var button_11:LevelButton; public var button_12:LevelButton; public var button_13:LevelButton; public var button_14:LevelButton; public var button_15:LevelButton; public var button_16:LevelButton; public var button_17:LevelButton; public var button_18:LevelButton; public var button_19:LevelButton; public var btn_Play:SimpleButton; protected var lastSelected:LevelButton; protected var previewPane:Bitmap; protected var snd_playClick:Sound; public var button_20:LevelButton; public var button_21:LevelButton; public var button_22:LevelButton; public var button_23:LevelButton; public var button_24:LevelButton; public var button_25:LevelButton; public var button_26:LevelButton; public var button_27:LevelButton; public var button_28:LevelButton; public var button_A:BonusLevelButton; public var button_B:BonusLevelButton; public var button_C:BonusLevelButton; public var button_D:BonusLevelButton; public var button_E:BonusLevelButton; public var button_F:BonusLevelButton; public var button_G:BonusLevelButton; public var button_29:LevelButton; public var button_30:LevelButton; public var button_31:LevelButton; public var button_32:LevelButton; public var button_33:LevelButton; public var button_34:LevelButton; public var button_35:LevelButton; public var button_36:LevelButton; public var button_37:LevelButton; public var button_38:LevelButton; public var button_39:LevelButton; public var button_H:BonusLevelButton; public var button_40:LevelButton; protected var snd_playOut:Sound; protected var gameData:SaveFile; public var time:TextField; protected var snd_over:Sound; public function ButtonContainer():void{ snd_over = new Thunk_0(); snd_click = new Thunk_2(); snd_playOver = new Play_Over(); snd_playOut = new Play_Out(); snd_playClick = new Play_Click(); super(); buttonArray = new Array(); previewPane = new Bitmap(); previewPane.x = 190; previewPane.y = 15; var _local1:int = numChildren; addChildAt(previewPane, (_local1 - 2)); aced.visible = false; } protected function handleMainMenu(_arg1:MouseEvent):void{ snd_playClick.play(); dispose(); MovieClip(parent).screenDestination = "menuFrame"; MovieClip(parent).play(); } protected function showPreview(_arg1:LevelButton):void{ var _local2:Class = (getDefinitionByName(("LevelPreview" + _arg1.index)) as Class); var _local3:BitmapData = new _local2(180, 230); var _local4:BitmapData = previewPane.bitmapData; previewPane.bitmapData = _local3; if (_local4){ _local4.dispose(); _local4 = null; }; time.text = ("Best Time: " + convertTime(gameData.levelData[_arg1.arrIndex].time)); var _local5:Boolean = gameData.levelData[_arg1.arrIndex].aced; aced.visible = _local5; if (_local5){ time.appendText("\nA C E D !"); }; } public function init():void{ var _local2:int; var _local3:DisplayObject; var _local4:String; var _local5:int; var _local6:int; var _local7:LevelButton; var _local1:int = numChildren; _local2 = 0; while (_local2 < _local1) { _local3 = getChildAt(_local2); if ((_local3 is BonusLevelButton)){ _local4 = _local3.name.substr(-1); _local5 = (_local4.charCodeAt(0) - 24); _local6 = (_local4.charCodeAt(0) - 65); if (gameData.bonusArray[_local6].unlock){ buttonArray[_local5] = _local3; _local7 = LevelButton(_local3); _local7.arrIndex = _local5; _local7.index = _local4; _local7.text = _local4; _local7.enable(); _local7.addEventListener(MouseEvent.CLICK, handleLevelButton); } else { _local3.visible = false; }; } else { if ((_local3 is LevelButton)){ _local4 = _local3.name.substr(-2); _local5 = int(_local4); buttonArray[_local5] = _local3; _local7 = LevelButton(_local3); _local7.arrIndex = _local5; _local7.index = _local4; _local7.text = _local4; _local7.addEventListener(MouseEvent.CLICK, handleLevelButton); }; }; _local2++; }; btn_Play.addEventListener(MouseEvent.CLICK, handlePlay); btn_Play.addEventListener(MouseEvent.ROLL_OVER, handlePlayOver); btn_Play.addEventListener(MouseEvent.ROLL_OUT, handlePlayOut); btn_mainMenu.addEventListener(MouseEvent.CLICK, handleMainMenu); btn_mainMenu.addEventListener(MouseEvent.ROLL_OVER, handlePlayOver); btn_mainMenu.addEventListener(MouseEvent.ROLL_OUT, handlePlayOut); btn_Sponsor.addEventListener(MouseEvent.CLICK, handleSponsor); btn_Sponsor.addEventListener(MouseEvent.ROLL_OVER, handlePlayOver); btn_Sponsor.addEventListener(MouseEvent.ROLL_OUT, handlePlayOut); } protected function dispose():void{ var _local1:int; var _local3:LevelButton; var _local2:int = buttonArray.length; _local1 = 0; while (_local1 < _local2) { if (buttonArray[_local1]){ _local3 = LevelButton(buttonArray[_local1]); _local3.removeEventListener(MouseEvent.CLICK, handleLevelButton); }; _local1++; }; btn_Play.removeEventListener(MouseEvent.CLICK, handlePlay); buttonArray.length = 0; } protected function convertTime(_arg1:int):String{ var _local2:int = (_arg1 / 1000); var _local3:int = (_local2 / 60); var _local4:int = (_arg1 - (_local2 * 1000)); _local2 = (_local2 - (_local3 * 60)); var _local5:String = ((_local4 < 100)) ? ((_local4 < 10)) ? ("00" + _local4) : ("0" + _local4) : _local4.toString(); var _local6:String = ((_local2 < 10)) ? ("0" + _local2) : _local2.toString(); var _local7:String = ((_local3 < 10)) ? ("0" + _local3) : _local3.toString(); return (((((_local7 + ":") + _local6) + ":") + _local5)); } public function setLevel(_arg1:int):void{ var _local2:LevelButton; var _local3:int; var _local4:int; var _local5:int; if (_arg1 < 40){ _arg1++; } else { _arg1 = 40; }; _local3 = buttonArray.length; if (_local3 > 41){ _local3 = 41; }; _local4 = 1; while (_local4 < _local3) { _local2 = buttonArray[_local4]; if (_local2.arrIndex <= _arg1){ _local2.enable(); _local5 = _local4; } else { _local2.disable(); }; _local4++; }; lastSelected = buttonArray[_local5]; buttonArray[_local5].toggle(); showPreview(buttonArray[_local5]); } protected function handlePlayOut(_arg1:MouseEvent):void{ snd_playOut.play(); } protected function handlePlayOver(_arg1:MouseEvent):void{ snd_playOver.play(); } protected function handlePlay(_arg1:MouseEvent):void{ snd_playClick.play(); dispose(); MovieClip(parent).playLevel(lastSelected.index); } public function set saveData(_arg1:SaveFile):void{ gameData = _arg1; } protected function handleLevelButton(_arg1:MouseEvent):void{ var _local2:LevelButton = LevelButton(_arg1.target); if (_local2.disabled){ return; }; if (lastSelected){ if (lastSelected == _local2){ return; }; lastSelected.toggle(); }; snd_click.play(); lastSelected = _local2; lastSelected.toggle(); showPreview(_local2); } protected function handleSponsor(_arg1:MouseEvent):void{ snd_playClick.play(); Protection.toKong(); } } }//package game
Section 98
//ContactListener (game.ContactListener) package game { import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.media.*; public class ContactListener extends b2ContactListener { private const NEG:uint; private var thunks:Array; private var mParent:MovieClip; private var thocks:Array; public function ContactListener(_arg1:MovieClip):void{ NEG = (1 << 31); super(); mParent = _arg1; thocks = new Array(2); thocks[0] = new Thock_0(); thocks[1] = new Thock_1(); thunks = new Array(4); thunks[0] = new Thunk_0(); thunks[1] = new Thunk_1(); thunks[2] = new Thunk_2(); thunks[3] = new Thunk_3(); } override public function Add(_arg1:b2ContactPoint):void{ var _local4:DisplayObject; var _local5:DisplayObject; var _local6:b2Body; var _local7:b2Vec2; var _local8:Number; var _local2:b2Shape = _arg1.shape1; var _local3:b2Shape = _arg1.shape2; if (_local2.m_isSensor){ _local4 = _local3.GetBody().m_userData; if ((_local4 is DummyBody)){ return; }; _local5 = _local2.GetBody().m_userData; if ((_local5 is TorchBase)){ TorchBase(_local5).touch(); } else { if ((_local5 is PowerUpBase)){ PowerUpBase(_local5).touch(); }; }; } else { _local6 = _local3.GetBody(); _local7 = _local6.GetLinearVelocity(); _local8 = _local7.x; if ((((_local8 > -0.3)) && ((_local8 < 0.3)))){ if (_local8 > 0){ _local7.x = 0.3; _local6.SetLinearVelocity(_local7); } else { if (_local8 <= 0){ _local7.x = -0.3; _local6.SetLinearVelocity(_local7); }; }; }; }; } override public function Result(_arg1:b2ContactResult):void{ var _local4:Number; var _local5:int; var _local2:DisplayObject = _arg1.shape2.GetBody().m_userData; if ((_local2 is DummyBody)){ return; }; var _local3:DisplayObject = _arg1.shape1.GetBody().m_userData; if ((_local3 is Burnable)){ _local4 = _arg1.normalImpulse; Burnable(_local3).burn(); if (_local4 > 0.1){ _local5 = (((_local4 - 0.1) * 0.5) * 4); if (_local5 > 3){ _local5 = 3; }; thunks[_local5].play(); }; } else { if ((_local3 is Block)){ _local4 = _arg1.normalImpulse; if (_local4 > 0.1){ _local5 = (_local4 - 0.1); if (_local5 > 1){ _local5 = 1; }; thocks[_local5].play(); }; }; }; } } }//package game
Section 99
//GameLevel (game.GameLevel) package game { import flash.events.*; import flash.display.*; import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import flash.geom.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import flash.utils.*; import flash.media.*; import effects.*; import flash.text.*; import flash.system.*; public class GameLevel extends MovieClip { protected const SCALE:int = 60; protected var isPulling:Boolean; protected var crateSpreadTime:Number;// = 0.75 protected var fireballBouncinessBonus:Number;// = 0.8 protected var contactListener:ContactListener; protected var bonuses:Array; protected var lifes:int; protected var crates:Array; protected var maxPrevLineLength:int; protected var instructionOn:Boolean; protected var fireballRadius:uint;// = 9 protected var winReport:Boolean; protected var fireballBounciness:Number;// = 0.7 protected var fireball:b2Body; protected var fireballRadiusBonus:Number;// = 6 protected var m_world:b2World; protected var m_iterations:int;// = 10 protected var fireballStopDeathTime:int;// = 500 protected var soundOn:Boolean; protected var previewLineLengthBonus:uint;// = 25 protected var waitingForCrates:Boolean; protected var currLevel:String; protected var winTimeStarted:Boolean; protected var fireballView:Fireball; protected var dragHandle:DragHandle; public var _bonusTrigger:String; protected var previewBody:b2Body; public var instruction:MovieClip; protected var isDragging:Boolean; protected var burningCrates:int; protected var won:Boolean; protected var previewContainer:Sprite; protected var crateBurnOutTime:Number;// = 7.5 protected var torches:Array; protected var oY:Number;// = 0 public var fSprite:FireballInit; protected var alive:Boolean; protected var oX:Number;// = 0 protected var torchNeeded:int; protected var m_timeStep:Number;// = 0.025 public var winTime:int; protected var previewLineLength:uint;// = 15 protected var dragArea:Rectangle; protected var torchNum:int; protected var winTimer:Timer; protected var stopTime:int; protected var fireballDensity:Number;// = 1 protected var hud:HUD; protected var simulating:Boolean; protected var torchLit:int; public var shotTaken:int; protected var fires:Array; protected var gameOver:Boolean; public static const WIN:String = "win"; public static const LOOSE:String = "gameOver"; public function GameLevel():void{ previewContainer = new Sprite(); burningCrates = 0; soundOn = true; instructionOn = true; alive = true; waitingForCrates = false; winReport = false; winTimeStarted = false; gameOver = false; maxPrevLineLength = previewLineLength; bonuses = new Array(); currLevel = ""; _bonusTrigger = ""; } protected function handleSuicide(_arg1:MouseEvent):void{ if (waitingForCrates){ waitingForCrates = false; burningCrates = 0; }; if (lifes == 1){ waitingForCrates = false; burningCrates = 0; }; handleReset(); } public function handleReset(_arg1:String="death"):void{ var _local2:b2CircleShape; var _local4:int; simulating = false; if ((((_arg1 == "death")) && (!(won)))){ lifes--; if (lifes < 1){ lifes = 0; hud.lifeText.text = ("x" + lifes); alive = false; fireball.PutToSleep(); previewBody.PutToSleep(); if (burningCrates < 1){ fireballView.stopSound(); Burnable.stopSound(); dispatchEvent(new Event(LOOSE, true, false)); } else { waitingForCrates = true; }; return; }; hud.lifeText.text = ("x" + lifes); } else { if ((((_arg1 == "death")) && (won))){ fireball.PutToSleep(); previewBody.PutToSleep(); alive = false; simulating = false; return; }; if (_arg1 == "win"){ if (fireball){ fireball.PutToSleep(); }; if (previewBody){ previewBody.PutToSleep(); }; simulating = false; if (fireballView){ fireballView.stopSound(); }; Burnable.stopSound(); if (!winReport){ winReport = true; dispatchEvent(new Event(WIN, true, false)); }; alive = false; return; }; }; maxPrevLineLength = previewLineLength; _local2 = b2CircleShape(fireball.m_shapeList); _local2.m_radius = (fireballRadius / SCALE); _local2.m_restitution = fireballBounciness; _local2 = b2CircleShape(previewBody.m_shapeList); _local2.m_radius = (fireballRadius / SCALE); _local2.m_restitution = fireballBounciness; fireballView.scale(1); fireballView.switchPalette(new FlamePalette()); var _local3:int = bonuses.length; _local4 = 0; while (_local4 < _local3) { bonuses[_local4].call(this); _local4++; }; bonuses.length = 0; if (instructionOn){ instruction.visible = true; }; oX = fSprite.x; oY = fSprite.y; fireball.SetXForm(new b2Vec2((fSprite.x / SCALE), (fSprite.y / SCALE)), 0); fireball.SetLinearVelocity(new b2Vec2(0, 0)); fireball.SetAngularVelocity(0); fireball.PutToSleep(); previewBody.PutToSleep(); } public function set level(_arg1:String):void{ if (hud){ hud.level.text = ("Level " + _arg1); } else { currLevel = _arg1; }; } public function dispose(_arg1:Event=null):void{ stage.removeEventListener(KeyboardEvent.KEY_UP, handleKeyboard); stage.removeEventListener(MouseEvent.MOUSE_UP, handleStopDrag); fSprite.removeEventListener(MouseEvent.MOUSE_DOWN, handleStartDrag); hud.btn_Suicide.removeEventListener(MouseEvent.MOUSE_UP, handleSuicide); hud.btn_Mute.removeEventListener(MouseEvent.MOUSE_UP, handleMute); removeEventListener(Event.ENTER_FRAME, Update); removeEventListener(Event.REMOVED_FROM_STAGE, dispose); while (fires.length) { fires[0].dispose(); }; var _local2:b2Body = m_world.GetBodyList(); m_world.DestroyBody(_local2); m_world = null; removeChild(fireballView); fireballView.dispose(); fireballView = null; previewContainer = null; fires = null; fireball = null; previewBody = null; contactListener = null; Burnable.stopSound(); System.gc(); } public function init(_arg1:int, _arg2:int):void{ var _local7:Crate; var _local8:TorchBase; var _local9:int; var _local10:int; var _local13:Rectangle; var _local14:Rectangle; lifes = _arg1; torchNeeded = _arg2; hud = new HUD(); hud.percentText.text = ("0/" + torchNeeded); hud.lifeText.text = ("x" + lifes); if (currLevel != ""){ hud.level.text = ("Level " + currLevel); }; hud.btn_Suicide.addEventListener(MouseEvent.MOUSE_UP, handleSuicide); hud.btn_Mute.addEventListener(MouseEvent.MOUSE_UP, handleMute); fireballView = new Fireball(); stage.addEventListener(KeyboardEvent.KEY_UP, handleKeyboard); stage.addEventListener(MouseEvent.MOUSE_UP, handleStopDrag); fSprite.addEventListener(MouseEvent.MOUSE_DOWN, handleStartDrag); fSprite.hitArea = fSprite.buttonHitArea; fSprite.buttonHitArea.visible = false; fSprite.display.visible = false; fSprite.useHandCursor = false; isDragging = false; dragHandle = hud.dragHandle; dragHandle.visible = false; simulating = false; torchNum = 0; torchLit = 0; var _local3:b2AABB = new b2AABB(); _local3.lowerBound.Set(-100, -100); _local3.upperBound.Set(100, 100); var _local4:b2Vec2 = new b2Vec2(0, 10); var _local5:Boolean; m_world = new b2World(_local3, _local4, _local5); var _local6:* = new ContactListener(MovieClip(this)); m_world.SetContactListener(_local6); torches = new Array(); crates = new Array(); fires = new Array(); createObjects(this); var _local11:int = torches.length; var _local12:int = crates.length; _local9 = 0; while (_local9 < _local12) { _local7 = crates[_local9]; _local13 = _local7.getBounds(this); _local10 = 0; while (_local10 < _local11) { _local8 = torches[_local10]; _local14 = _local8.torchHitArea.getBounds(this); if (_local13.intersects(_local14)){ _local7.addNeighbour(_local8); }; _local10++; }; _local9++; }; crates.length = 0; torches.length = 0; crates = null; torches = null; addChild(instruction); addChildAt(fireballView, 0); addChild(hud); this.visible = true; winTime = 0; addEventListener(Event.ENTER_FRAME, Update, false, 0, true); addEventListener(Event.REMOVED_FROM_STAGE, dispose); } public function applyBounceBonus():void{ var _local1:b2Shape; _local1 = fireball.m_shapeList; _local1.m_restitution = fireballBouncinessBonus; _local1 = previewBody.m_shapeList; _local1.m_restitution = fireballBouncinessBonus; fireballView.switchPalette(new GreenFlamePalette()); } protected function handleKeyboard(_arg1:KeyboardEvent){ if ((((_arg1.keyCode == 27)) && (isPulling))){ stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleDrag); isPulling = false; dragHandle.visible = false; instruction.visible = true; removeChild(previewContainer); } else { if (_arg1.keyCode == 73){ if (instructionOn){ instructionOn = false; if (!simulating){ instruction.visible = false; }; } else { instructionOn = true; if (!simulating){ instruction.visible = true; }; }; } else { if (_arg1.keyCode == 83){ handleSuicide(null); }; }; }; } public function previewBonus():void{ lifes++; hud.lifeText.text = ("x" + lifes); bonuses.push(applyPreviewBonus); } public function set bonusTrigger(_arg1:String):void{ _bonusTrigger = _arg1; } public function reportBurnStart():void{ burningCrates++; } protected function handleMute(_arg1:MouseEvent):void{ var _local2:SoundTransform = SoundMixer.soundTransform; if (_local2.volume == 1){ _local2.volume = 0; SoundMixer.soundTransform = _local2; } else { _local2.volume = 1; SoundMixer.soundTransform = _local2; }; } protected function handleStartDrag(_arg1:MouseEvent){ var _local2:Number; var _local3:Number; if (((simulating) || (!(alive)))){ return; }; if (_arg1.shiftKey){ if (dragArea){ isDragging = true; fSprite.display.visible = true; fSprite.startDrag(false, dragArea); }; } else { if (!winTimeStarted){ winTimeStarted = true; winTime = 0; }; isPulling = true; dragHandle.gauge.scaleX = 0.01; dragHandle.x = fSprite.x; dragHandle.y = fSprite.y; _local2 = (mouseX - dragHandle.x); _local3 = (mouseY - dragHandle.y); dragHandle.rotation = Math.atan2(_local3, _local2); dragHandle.visible = true; previewContainer.graphics.clear(); addChild(previewContainer); }; stage.addEventListener(MouseEvent.MOUSE_MOVE, handleDrag); } public function bounceBonus():void{ lifes++; hud.lifeText.text = ("x" + lifes); bonuses.push(applyBounceBonus); } protected function handleDrag(_arg1:MouseEvent){ var _local2:int; var _local3:int; var _local4:Number; var _local5:Number; var _local6:Point; var _local7:int; var _local8:b2Vec2; if (isPulling){ _local2 = (mouseX - dragHandle.x); _local3 = (mouseY - dragHandle.y); _local4 = Math.atan2(_local3, _local2); dragHandle.rotation = (_local4 * (180 / Math.PI)); _local5 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); _local5 = Math.min(69.6, _local5); _local5 = Math.max(0.1, _local5); _local5 = (_local5 / 69.6); dragHandle.gauge.scaleX = _local5; _local5 = (_local5 * 13); _local6 = Point.polar(_local5, _local4); previewBody.SetXForm(new b2Vec2((fSprite.x / SCALE), (fSprite.y / SCALE)), 0); previewBody.SetAngularVelocity(0); previewBody.SetLinearVelocity(new b2Vec2(_local6.x, _local6.y)); previewBody.WakeUp(); fireball.PutToSleep(); previewContainer.graphics.clear(); previewContainer.graphics.lineStyle(1, 0xFF0000); previewContainer.graphics.moveTo(fSprite.x, fSprite.y); _local7 = 0; while (_local7 < maxPrevLineLength) { m_world.Step(m_timeStep, m_iterations); _local8 = previewBody.GetPosition(); previewContainer.graphics.lineTo((_local8.x * SCALE), (_local8.y * SCALE)); if ((_local8.y * SCALE) > 600){ break; }; _local7++; }; previewBody.PutToSleep(); } else { if (isDragging){ fireball.SetXForm(new b2Vec2((fSprite.x / SCALE), (fSprite.y / SCALE)), 0); fireball.PutToSleep(); previewBody.PutToSleep(); }; }; } protected function createObjects(_arg1:DisplayObjectContainer):void{ var _local2:b2Body; var _local3:b2BodyDef; var _local4:b2PolygonDef; var _local5:b2CircleDef; var _local8:int; var _local9:DisplayObject; var _local10:Number; var _local11:Number; var _local12:TorchBase; var _local13:Rectangle; var _local14:Crate; var _local15:PowerUpBase; var _local6:Array = new Array(); var _local7:int = _arg1.numChildren; _local8 = 0; while (_local8 < _local7) { _local9 = _arg1.getChildAt(_local8); if ((_local9 is Block)){ _local3 = new b2BodyDef(); _local3.position.x = (_local9.x / SCALE); _local3.position.y = (_local9.y / SCALE); _local10 = (_local9.width / (SCALE * 2)); _local11 = (_local9.height / (SCALE * 2)); _local3.scale = SCALE; _local4 = new b2PolygonDef(); _local4.SetAsBox(_local10, _local11); _local4.friction = 0; _local4.restitution = 0.7; _local4.isSensor = false; _local3.userData = _local9; _local2 = m_world.CreateBody(_local3); _local4.filter.categoryBits = 1; _local4.filter.maskBits = 7; _local2.CreateShape(_local4); _local2.SetMassFromShapes(); _local6.push(_local9); _local9.visible = false; } else { if ((_local9 is FireballInit)){ _local3 = new b2BodyDef(); _local3.position.x = (_local9.x / SCALE); _local3.position.y = (_local9.y / SCALE); _local10 = (fireballRadius / SCALE); _local3.scale = SCALE; oX = _local9.x; oY = _local9.y; _local5 = new b2CircleDef(); _local5.radius = _local10; _local5.density = fireballDensity; _local5.friction = 0; _local5.restitution = fireballBounciness; _local3.userData = _local9; _local3.isBullet = true; _local2 = m_world.CreateBody(_local3); _local5.filter.categoryBits = 2; _local5.filter.maskBits = 3; _local2.CreateShape(_local5); fireball = _local2; _local2.SetMassFromShapes(); _local2.PutToSleep(); _local3.userData = new DummyBody(); _local3.isBullet = true; _local2 = m_world.CreateBody(_local3); _local5.filter.categoryBits = 4; _local5.filter.maskBits = 5; _local2.CreateShape(_local5); previewBody = _local2; _local2.SetMassFromShapes(); _local2.PutToSleep(); } else { if ((_local9 is TorchBase)){ _local12 = TorchBase(_local9); _local13 = _local12.torchHitArea.getBounds(this); fires.push(_local9); torches.push(_local12); _local12.torchHitArea.visible = false; _local12.initSpark(this); torchNum++; _local3 = new b2BodyDef(); _local3.position.x = (_local13.x / SCALE); _local3.position.y = (_local13.y / SCALE); _local10 = (_local13.width / (SCALE * 2)); _local11 = (_local13.height / (SCALE * 2)); _local3.scale = SCALE; _local4 = new b2PolygonDef(); _local4.SetAsBox(_local10, _local11); _local4.isSensor = true; _local3.userData = _local9; _local2 = m_world.CreateBody(_local3); _local2.CreateShape(_local4); _local2.SetMassFromShapes(); } else { if ((_local9 is Crate)){ fires.push(_local9); crates.push(_local9); _local3 = new b2BodyDef(); _local3.position.x = (_local9.x / SCALE); _local3.position.y = (_local9.y / SCALE); _local10 = (_local9.width / (SCALE * 2)); _local11 = (_local9.height / (SCALE * 2)); _local3.scale = SCALE; _local4 = new b2PolygonDef(); _local4.SetAsBox(_local10, _local11); _local4.friction = 0; _local4.restitution = 0.6; _local4.isSensor = false; _local3.userData = _local9; _local2 = m_world.CreateBody(_local3); _local14 = Crate(_local9); _local14.blockBody = _local2; _local14.spreadTime = (crateSpreadTime * 1000); _local14.burnTime = (crateBurnOutTime * 1000); _local14.initSpark(this); _local14.init(new CrateBitmap(20, 20), new CrateBurnBitmap(20, 20)); _local4.filter.categoryBits = 1; _local4.filter.maskBits = 7; _local2.CreateShape(_local4); _local2.SetMassFromShapes(); } else { if ((_local9 is PowerUpBase)){ fires.push(_local9); _local3 = new b2BodyDef(); _local3.position.x = (_local9.x / SCALE); _local3.position.y = (_local9.y / SCALE); _local10 = (_local9.width / (SCALE * 2)); _local3.scale = SCALE; _local5 = new b2CircleDef(); _local5.radius = _local10; _local5.isSensor = true; _local3.userData = _local9; _local2 = m_world.CreateBody(_local3); _local2.CreateShape(_local5); _local2.SetMassFromShapes(); _local15 = PowerUpBase(_local9); _local15.initSpark(this); } else { if ((_local9 is FireballDragArea)){ dragArea = _local9.getBounds(this); _local9.visible = false; _local6.push(_local9); } else { if ((_local9 is DisplayObjectContainer)){ if (DisplayObjectContainer(_local9).numChildren > 0){ createObjects(DisplayObjectContainer(_local9)); }; }; }; }; }; }; }; }; _local8++; }; if (dragArea){ if (!dragArea.contains(fSprite.x, fSprite.y)){ fSprite.x = (dragArea.x + (dragArea.width / 2)); fSprite.y = (dragArea.y + (dragArea.height / 2)); }; }; _local7 = _local6.length; _local8 = _local7; while (_local8--) { _local6[_local8].parent.removeChild(_local6[_local8]); }; _local6.length = 0; } protected function handleStopDrag(_arg1:MouseEvent){ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Point; if (isPulling){ stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleDrag); isPulling = false; shotTaken++; dragHandle.visible = false; _local2 = (mouseX - dragHandle.x); _local3 = (mouseY - dragHandle.y); _local4 = Math.atan2(_local3, _local2); _local5 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); _local5 = Math.min(69.6, _local5); _local5 = Math.max(0.1, _local5); _local5 = ((_local5 / 69.6) * 13); _local6 = Point.polar(_local5, _local4); removeChild(previewContainer); fireball.WakeUp(); fireball.SetLinearVelocity(new b2Vec2(_local6.x, _local6.y)); instruction.visible = false; simulating = true; } else { if (isDragging){ stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleDrag); isDragging = false; fSprite.stopDrag(); fSprite.display.visible = false; fireball.SetXForm(new b2Vec2((fSprite.x / SCALE), (fSprite.y / SCALE)), 0); fireball.PutToSleep(); previewBody.PutToSleep(); }; }; } public function halfSizeBonus():void{ lifes++; hud.lifeText.text = ("x" + lifes); bonuses.push(applyHalfSizeBonus); } protected function handleWin(_arg1:TimerEvent):void{ if (winTimer){ winTimer.removeEventListener(TimerEvent.TIMER, handleWin); winTimer.stop(); winTimer = null; }; handleReset("win"); } public function lifeBonus():void{ lifes++; hud.lifeText.text = ("x" + lifes); } public function score(){ torchLit++; hud.percentText.text = ((torchLit + "/") + torchNeeded); } public function reportBurnStop():void{ burningCrates--; } protected function applyPreviewBonus():void{ maxPrevLineLength = previewLineLengthBonus; fireballView.switchPalette(new RedFlamePalette()); } protected function Update(_arg1:Event):void{ var _local9:int; if (gameOver){ return; }; if (simulating){ previewBody.PutToSleep(); m_world.Step(m_timeStep, m_iterations); }; var _local2:Matrix = fireball.GetTransform(); var _local3:Number = _local2.tx; var _local4:Number = _local2.ty; var _local5:Number = (_local3 - oX); var _local6:Number = (_local4 - oY); oX = _local3; oY = _local4; var _local7:Number = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); fireballView.update(_local2, _local7); var _local8:int = fires.length; _local9 = 0; while (_local9 < _local8) { fires[_local9].drawSpark(); _local9++; }; if (((!(_local7)) && (simulating))){ stopTime++; if (stopTime > fireballStopDeathTime){ handleReset(); return; }; } else { stopTime = 0; }; if ((((((((((oY < -500)) || ((oY > 600)))) || ((oX < -100)))) || ((oX > 500)))) && (alive))){ handleReset(); return; }; if (((((!(alive)) && (waitingForCrates))) && ((burningCrates < 1)))){ handleReset(); return; }; if (torchLit >= torchNeeded){ won = true; if (!winTimer){ winTimer = new Timer(1000, 1); winTimer.addEventListener(TimerEvent.TIMER, handleWin); winTimer.start(); }; return; }; winTime++; } public function applyHalfSizeBonus():void{ var _local1:b2CircleShape; _local1 = b2CircleShape(fireball.m_shapeList); _local1.m_radius = (fireballRadiusBonus / SCALE); _local1 = b2CircleShape(previewBody.m_shapeList); _local1.m_radius = (fireballRadiusBonus / SCALE); fireballView.scale((fireballRadiusBonus / fireballRadius)); fireballView.switchPalette(new BlueFlamePalette()); } public function removeFire(_arg1:IFireEmitter):void{ var _local2:int; _local2 = fires.indexOf(_arg1); fires.splice(_local2, 1); } } }//package game
Section 100
//HalfSizePowerUp (game.HalfSizePowerUp) package game { import flash.display.*; public class HalfSizePowerUp extends PowerUpBase { public var powerUpHitArea:MovieClip; public function HalfSizePowerUp():void{ } override protected function applyEffect():void{ owner.halfSizeBonus(); } override protected function initPalette():void{ var _local1:Sprite = new TransparentBlueFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 2)); _local3++; }; _local2.dispose(); } override protected function hideHitArea():void{ powerUpHitArea.visible = false; } } }//package game
Section 101
//IFireEmitter (game.IFireEmitter) package game { public interface IFireEmitter { function drawSpark():void; function initSpark(_arg1:GameLevel):void; } }//package game
Section 102
//LevelButton (game.LevelButton) package game { import flash.events.*; import flash.display.*; import flash.text.*; public class LevelButton extends Sprite { protected const enabledColor:uint = 0xFF3300; protected const disabledColor:uint = 10040115; public var numTxt:TextField; public var buttonUp:MovieClip; public var arrIndex:int; public var index:String; protected var selected:Boolean; public var buttonDown:MovieClip; public var cover:MovieClip; public function LevelButton():void{ selected = false; mouseChildren = false; useHandCursor = true; numTxt.textColor = disabledColor; } public function set text(_arg1:String):void{ numTxt.text = _arg1; } public function enable():void{ cover.visible = false; numTxt.textColor = enabledColor; } public function toggle(_arg1:MouseEvent=null):void{ selected = !(selected); if (selected){ buttonUp.visible = false; buttonDown.visible = true; } else { buttonUp.visible = true; buttonDown.visible = false; }; } public function disable():void{ cover.visible = true; numTxt.textColor = disabledColor; } public function get disabled():Boolean{ return (cover.visible); } } }//package game
Section 103
//LongLinePowerUp (game.LongLinePowerUp) package game { import flash.display.*; public class LongLinePowerUp extends PowerUpBase { public var powerUpHitArea:MovieClip; public function LongLinePowerUp():void{ } override protected function applyEffect():void{ owner.previewBonus(); } override protected function initPalette():void{ var _local1:Sprite = new TransparentRedFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 2)); _local3++; }; _local2.dispose(); } override protected function hideHitArea():void{ powerUpHitArea.visible = false; } } }//package game
Section 104
//PlusOnePowerUp (game.PlusOnePowerUp) package game { import flash.display.*; public class PlusOnePowerUp extends PowerUpBase { public var powerUpHitArea:MovieClip; public function PlusOnePowerUp():void{ } override protected function applyEffect():void{ owner.lifeBonus(); } override protected function hideHitArea():void{ powerUpHitArea.visible = false; } } }//package game
Section 105
//PowerUpBase (game.PowerUpBase) package game { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.filters.*; public class PowerUpBase extends Sprite implements IFireEmitter { protected const PT_ZERO:Point; protected const FLAME_HEIGHT:int = 35; protected const MATRIX_3x5; protected var cFilter:ConvolutionFilter; protected var frontBuffer:BitmapData; protected var screenBuffer:BitmapData; protected var alive:Boolean; protected var fire:Bitmap; protected var timer:Timer; protected var masker:BitmapData; protected var SOURCE:Rectangle; protected var spark:BitmapData; protected var DEST:Point; protected var noiseSeed:uint;// = 0 protected var mtx:Matrix; protected var owner:GameLevel; protected var palette:Array; protected static var sounds:Array; public function PowerUpBase():void{ MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); PT_ZERO = new Point(0, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.35, -2, true, false, 0xFF, 1); palette = new Array(); super(); alive = true; if (!sounds){ sounds = new Array(4); sounds[0] = new Torch_0(); sounds[1] = new Torch_1(); sounds[2] = new Torch_2(); sounds[3] = new Torch_3(); }; } public function drawSpark():void{ if (alive){ noiseSeed++; spark.noise(noiseSeed, 163, 0xFF, BitmapDataChannel.BLUE, true); spark.draw(masker, null, null, BlendMode.ADD); frontBuffer.draw(spark, mtx, null, BlendMode.MULTIPLY); }; frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(frontBuffer, SOURCE, PT_ZERO, null, null, palette); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); } protected function hideHitArea():void{ } public function dispose(_arg1:TimerEvent=null):void{ owner.removeChild(fire); this.parent.removeChild(this); owner.removeFire(this); if (timer){ timer.stop(); timer.removeEventListener(TimerEvent.TIMER, dispose); }; screenBuffer.dispose(); frontBuffer.dispose(); spark.dispose(); masker.dispose(); palette.length = 0; fire = null; screenBuffer = null; frontBuffer = null; spark = null; masker = null; palette = null; mtx = null; SOURCE = null; DEST = null; timer = null; } protected function initPalette():void{ var _local1:Sprite = new TransparentFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 2)); _local3++; }; _local2.dispose(); } protected function applyEffect():void{ } public function initSpark(_arg1:GameLevel):void{ var _local2:DisplayObjectContainer = DisplayObjectContainer(_arg1); owner = _arg1; hideHitArea(); noiseSeed = (Math.random() * uint.MAX_VALUE); var _local3:Sprite = new NoiseGenerator(); spark = new BitmapData(_local3.width, _local3.height, false, 0); masker = new BitmapData(_local3.width, _local3.height, false, 0); frontBuffer = new BitmapData(_local3.width, FLAME_HEIGHT, false, 0xFF); screenBuffer = new BitmapData(_local3.width, FLAME_HEIGHT, true, 0); masker.draw(_local3); mtx = new Matrix(1, 0, 0, 1, 0, (FLAME_HEIGHT - _local3.height)); fire = new Bitmap(screenBuffer); fire.x = (this.x - (_local3.width / 2)); fire.y = ((this.y - FLAME_HEIGHT) + (_local3.height / 2)); _local2.addChild(fire); SOURCE = new Rectangle(0, 0, frontBuffer.width, frontBuffer.height); DEST = new Point(0, 0); initPalette(); } public function touch():void{ if (!alive){ return; }; alive = false; applyEffect(); var _local1:int = (Math.random() * 4); sounds[_local1].play(); timer = new Timer(1500, 1); timer.addEventListener(TimerEvent.TIMER, dispose); timer.start(); } } }//package game
Section 106
//Protection (game.Protection) package game { import flash.net.*; public class Protection { public static const MIKE_URL:String = "http://www.kongregate.com/accounts/damijin?gamereferral=pyro"; public static const KONG_URL:String = "http://www.kongregate.com/?gamereferral=pyro"; public function Protection():void{ } public static function isLOCAL():Boolean{ return ((new LocalConnection().domain.toLowerCase() == "localhost")); } public static function NavigateToURL(_arg1:String, _arg2:String="_blank"):void{ navigateToURL(new URLRequest(_arg1), "_BLANK"); } public static function isKONGREGATE():Boolean{ var _local1:String = new LocalConnection().domain.toLowerCase(); switch (_local1){ case "a.kongregate.com": case "chat.kongregate.com": case "www.kongregate.com": case "a.kongregatestage.com": case "chat.kongregatestage.com": case "www.kongregatestage.com": case "a.kongregatetrunk.com": case "chat.kongregatetrunk.com": case "www.kongregatetrunk.com": return (true); }; return (false); } public static function GetDomain():String{ return (new LocalConnection().domain.toLowerCase()); } public static function isCMG():Boolean{ var _local1:String = new LocalConnection().domain.toLowerCase(); return ((((_local1 == "www.crazymonkeygames.com")) || ((_local1 == "crazymonkeygames.com")))); } public static function isARMORGAMES():Boolean{ var _local1:String = new LocalConnection().domain.toLowerCase(); switch (_local1){ case "games.armorgames.com": case "armorgames.com": case "www.games.armorgames.com": case "www.armorgames.com": return (true); }; return (false); } public static function toMike():void{ navigateToURL(new URLRequest(MIKE_URL), "_BLANK"); } public static function get mSHOWAD():Boolean{ if (isKONGREGATE()){ return (false); }; if (isARMORGAMES()){ return (false); }; if (isCMG()){ return (false); }; if (isLOCAL()){ return (false); }; if (isMINE()){ return (false); }; return (true); } public static function toKong():void{ navigateToURL(new URLRequest(KONG_URL), "_BLANK"); } public static function isMINE():Boolean{ var _local1:String = new LocalConnection().domain.toLowerCase(); return ((((_local1 == "www.samplerinfo.com")) || ((_local1 == "samplerinfo.com")))); } } }//package game
Section 107
//SaveFile (game.SaveFile) package game { import flash.utils.*; import flash.net.*; import com.hurlant.util.*; import com.hurlant.crypto.hash.*; public class SaveFile { public var bonusUnlocked:int; public var levelAced:int; public var gameWon:Boolean; public var levelData:Array; public var lastLevel:int; public var bonusArray:Array; private var so:SharedObject; public function SaveFile():void{ so = SharedObject.getLocal("Pyro"); if (!readSaveFile()){ createNewFile(); }; } private function createNewFile():void{ var _local1:int; var _local2:Object; lastLevel = 0; levelAced = 0; bonusUnlocked = -1; gameWon = false; levelData = new Array(50); bonusArray = new Array(8); _local1 = 1; while (_local1 < 49) { _local2 = {aced:false, time:600000}; levelData[_local1] = _local2; _local1++; }; _local1 = 0; while (_local1 < 8) { bonusArray[_local1] = {unlock:false, complete:false}; _local1++; }; writeSaveFile(); } public function flush():void{ writeSaveFile(); } public function get levelCompleted():int{ var _local2:int; var _local1:int = lastLevel; _local2 = 0; while (_local2 < 8) { if (bonusArray[_local2].complete){ _local1++; }; _local2++; }; return (_local1); } private function readSaveFile():Boolean{ var i:int; var aced:Boolean; var time:int; var unlock:Boolean; var complete:Boolean; if (((!(so.data.gameData)) || (!(so.data.signature)))){ return (false); }; if (!so.data.version){ if (readOldSaveFile()){ writeSaveFile(); return (true); }; } else { if (so.data.version != "009"){ return (false); }; }; var data:ByteArray = so.data.gameData; var hash:ByteArray = so.data.signature; var md5:MD5 = new MD5(); var rehash:ByteArray = md5.hash(data); if (!ArrayUtil.equals(hash, rehash)){ return (false); }; data.position = 0; lastLevel = data.readUnsignedShort(); levelAced = data.readUnsignedShort(); bonusUnlocked = data.readShort(); gameWon = data.readBoolean(); levelData = new Array(49); bonusArray = new Array(8); i = 1; while (i < 49) { try { aced = data.readBoolean(); time = data.readInt(); levelData[i] = {aced:aced, time:time}; } catch(e:Error) { return (false); }; i = (i + 1); }; i = 0; while (i < 8) { try { unlock = data.readBoolean(); complete = data.readBoolean(); bonusArray[i] = {unlock:unlock, complete:complete}; } catch(e:Error) { return (false); }; i = (i + 1); }; return (true); } public function get totalTime():int{ var _local2:int; var _local1:int; _local2 = 1; while (_local2 < 41) { _local1 = (_local1 + levelData[_local2].time); _local2++; }; return ((_local1 / 1000)); } private function readOldSaveFile():Boolean{ var i:int; var aced:Boolean; var time:int; var unlock:Boolean; var complete:Boolean; var data:ByteArray = so.data.gameData; var hash:ByteArray = so.data.signature; try { data.uncompress(); } catch(e:Error) { return (false); }; var md5:MD5 = new MD5(); var rehash:ByteArray = md5.hash(data); if (!ArrayUtil.equals(hash, rehash)){ return (false); }; data.position = 0; lastLevel = data.readUnsignedShort(); levelAced = data.readUnsignedShort(); bonusUnlocked = data.readShort(); gameWon = data.readBoolean(); if (!levelData){ levelData = new Array(49); }; if (!bonusArray){ bonusArray = new Array(8); }; i = 1; while (i < 49) { try { aced = data.readBoolean(); time = data.readInt(); levelData[i] = {aced:aced, time:time}; } catch(e:Error) { return (false); }; i = (i + 1); }; i = 0; while (i < 8) { try { unlock = data.readBoolean(); complete = data.readBoolean(); bonusArray[i] = {unlock:unlock, complete:complete}; } catch(e:Error) { return (false); }; i = (i + 1); }; return (true); } public function writeSaveFile():void{ var _local2:int; var _local1:ByteArray = new ByteArray(); _local1.writeShort(lastLevel); _local1.writeShort(levelAced); _local1.writeShort(bonusUnlocked); _local1.writeBoolean(gameWon); _local2 = 1; while (_local2 < 49) { _local1.writeBoolean(levelData[_local2].aced); _local1.writeInt(levelData[_local2].time); _local2++; }; _local2 = 0; while (_local2 < 8) { _local1.writeBoolean(bonusArray[_local2].unlock); _local1.writeBoolean(bonusArray[_local2].complete); _local2++; }; var _local3:MD5 = new MD5(); var _local4:ByteArray = _local3.hash(_local1); so.data.gameData = _local1; so.data.signature = _local4; so.data.version = "009"; so.flush(); } } }//package game
Section 108
//TorchBase (game.TorchBase) package game { import flash.display.*; import flash.geom.*; import flash.filters.*; public class TorchBase extends Sprite implements IFireEmitter { private const FLAME_WIDTH:int = 16; private const PT_ZERO:Point; private const FLAME_HEIGHT:int = 35; private const SCREEN_RECT:Rectangle; private const MATRIX_3x5; private var cFilter:ConvolutionFilter; private var frontBuffer:BitmapData; private var burning:Boolean; private var screenBuffer:BitmapData; private var fire:Bitmap; private var SOURCE:Rectangle; private var spark:BitmapData; private var DEST:Point; public var torchHitArea:TorchHitArea; private var mtx:Matrix; private var noiseSeed:uint;// = 0 private var owner:GameLevel; private var palette:Array; protected static var sounds:Array; public function TorchBase(){ MATRIX_3x5 = new Array(0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0); SCREEN_RECT = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); PT_ZERO = new Point(0, 0); cFilter = new ConvolutionFilter(3, 5, MATRIX_3x5, 4.35, -2, true, false, 0xFF, 1); frontBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, false, 0xFF); screenBuffer = new BitmapData(FLAME_WIDTH, FLAME_HEIGHT, true, 0); palette = new Array(); super(); burning = false; if (!sounds){ sounds = new Array(4); sounds[0] = new Torch_0(); sounds[1] = new Torch_1(); sounds[2] = new Torch_2(); sounds[3] = new Torch_3(); }; } public function drawSpark():void{ if (!burning){ return; }; noiseSeed++; spark.noise(noiseSeed, 90, 0xFF, BitmapDataChannel.BLUE, true); frontBuffer.draw(spark, mtx, null, BlendMode.MULTIPLY); frontBuffer.applyFilter(frontBuffer, SOURCE, DEST, cFilter); screenBuffer.paletteMap(frontBuffer, SOURCE, PT_ZERO, null, null, palette); screenBuffer.threshold(screenBuffer, SOURCE, DEST, "==", 4278190080, 0, 4278190080, true); } private function initPalette():void{ var _local1:Sprite = new TransparentFlamePalette(); var _local2:BitmapData = new BitmapData(0x0100, 10, true, 0); _local2.draw(_local1); var _local3:uint; while (_local3 < 0x0100) { palette[_local3] = uint(_local2.getPixel32(_local3, 2)); _local3++; }; _local2.dispose(); } public function burn():void{ touch(); } public function dispose():void{ owner.removeFire(this); removeChild(fire); fire = null; spark.dispose(); frontBuffer.dispose(); screenBuffer.dispose(); palette.length = 0; spark = null; frontBuffer = null; screenBuffer = null; palette = null; } public function initSpark(_arg1:GameLevel):void{ owner = _arg1; noiseSeed = 0; spark = new BitmapData(FLAME_WIDTH, 8, false, 0); mtx = new Matrix(1, 0, 0, 1, 0, (FLAME_HEIGHT - 8)); fire = new Bitmap(screenBuffer); fire.x = (torchHitArea.x - (FLAME_WIDTH / 2)); fire.y = ((torchHitArea.y - FLAME_HEIGHT) + (torchHitArea.height / 2)); addChildAt(fire, 0); SOURCE = new Rectangle(0, 0, FLAME_WIDTH, FLAME_HEIGHT); DEST = new Point(); initPalette(); } public function touch():void{ if (burning){ return; }; burning = true; owner.score(); var _local1:int = (Math.random() * 4); sounds[_local1].play(); } } }//package game
Section 109
//AcedScreen_141 (Pyro_fla.AcedScreen_141) package Pyro_fla { import flash.events.*; import flash.display.*; public dynamic class AcedScreen_141 extends MovieClip { public var unlockText:MovieClip; public var unlockBackground:MovieClip; public function AcedScreen_141(){ addFrameScript(0, frame1, 44, frame45); } function frame1(){ stop(); } function frame45(){ dispatchEvent(new Event(Event.COMPLETE)); } } }//package Pyro_fla
Section 110
//AssetsHolder_20 (Pyro_fla.AssetsHolder_20) package Pyro_fla { import flash.display.*; public dynamic class AssetsHolder_20 extends MovieClip { public function AssetsHolder_20(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package Pyro_fla
Section 111
//Button_Credits_127 (Pyro_fla.Button_Credits_127) package Pyro_fla { import flash.events.*; import flash.display.*; import effects.*; public dynamic class Button_Credits_127 extends MovieClip { public var hitArea150:MovieClip; public var flame:ButtonFlame; public var flameContainer:MovieClip; public var btn_Over:MovieClip; public var btn_Up:MovieClip; public function Button_Credits_127(){ addFrameScript(0, frame1); } public function upAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 + 0.1); if (_local2 > 1){ _local2 = 1; removeEventListener(Event.ENTER_FRAME, upAnim); }; btn_Up.alpha = _local2; } public function overAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 - 0.1); if (_local2 < 0){ _local2 = 0; btn_Up.visible = false; removeEventListener(Event.ENTER_FRAME, overAnim); }; btn_Up.alpha = _local2; } function frame1(){ flame = new ButtonFlame(200, 38); this.hitArea = hitArea150; hitArea150.visible = false; flameContainer.addChild(flame); } public function over():void{ removeEventListener(Event.ENTER_FRAME, upAnim); addEventListener(Event.ENTER_FRAME, overAnim); } public function up():void{ btn_Up.visible = true; addEventListener(Event.ENTER_FRAME, upAnim); removeEventListener(Event.ENTER_FRAME, overAnim); } } }//package Pyro_fla
Section 112
//Button_Instruction_120 (Pyro_fla.Button_Instruction_120) package Pyro_fla { import flash.events.*; import flash.display.*; import effects.*; public dynamic class Button_Instruction_120 extends MovieClip { public var hitArea150:MovieClip; public var flame:ButtonFlame; public var flameContainer:MovieClip; public var btn_Over:MovieClip; public var btn_Up:MovieClip; public function Button_Instruction_120(){ addFrameScript(0, frame1); } public function upAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 + 0.1); if (_local2 > 1){ _local2 = 1; removeEventListener(Event.ENTER_FRAME, upAnim); }; btn_Up.alpha = _local2; } public function overAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 - 0.1); if (_local2 < 0){ _local2 = 0; btn_Up.visible = false; removeEventListener(Event.ENTER_FRAME, overAnim); }; btn_Up.alpha = _local2; } function frame1(){ flame = new ButtonFlame(200, 38); this.hitArea = hitArea150; hitArea150.visible = false; flameContainer.addChild(flame); } public function over():void{ removeEventListener(Event.ENTER_FRAME, upAnim); addEventListener(Event.ENTER_FRAME, overAnim); } public function up():void{ btn_Up.visible = true; addEventListener(Event.ENTER_FRAME, upAnim); removeEventListener(Event.ENTER_FRAME, overAnim); } } }//package Pyro_fla
Section 113
//Button_MoreGames_Main_129 (Pyro_fla.Button_MoreGames_Main_129) package Pyro_fla { import flash.events.*; import flash.display.*; import effects.*; public dynamic class Button_MoreGames_Main_129 extends MovieClip { public var hitArea150:MovieClip; public var flame:ButtonFlame; public var flameContainer:MovieClip; public var btn_Over:MovieClip; public var btn_Up:MovieClip; public function Button_MoreGames_Main_129(){ addFrameScript(0, frame1); } public function upAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 + 0.1); if (_local2 > 1){ _local2 = 1; removeEventListener(Event.ENTER_FRAME, upAnim); }; btn_Up.alpha = _local2; } public function overAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 - 0.1); if (_local2 < 0){ _local2 = 0; btn_Up.visible = false; removeEventListener(Event.ENTER_FRAME, overAnim); }; btn_Up.alpha = _local2; } function frame1(){ flame = new ButtonFlame(200, 38); this.hitArea = hitArea150; hitArea150.visible = false; flameContainer.addChild(flame); } public function over():void{ removeEventListener(Event.ENTER_FRAME, upAnim); addEventListener(Event.ENTER_FRAME, overAnim); } public function up():void{ btn_Up.visible = true; addEventListener(Event.ENTER_FRAME, upAnim); removeEventListener(Event.ENTER_FRAME, overAnim); } } }//package Pyro_fla
Section 114
//Button_NewGame_125 (Pyro_fla.Button_NewGame_125) package Pyro_fla { import flash.events.*; import flash.display.*; import effects.*; public dynamic class Button_NewGame_125 extends MovieClip { public var hitArea150:MovieClip; public var flame:ButtonFlame; public var flameContainer:MovieClip; public var btn_Over:MovieClip; public var btn_Up:MovieClip; public function Button_NewGame_125(){ addFrameScript(0, frame1); } public function upAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 + 0.1); if (_local2 > 1){ _local2 = 1; removeEventListener(Event.ENTER_FRAME, upAnim); }; btn_Up.alpha = _local2; } public function overAnim(_arg1:Event){ var _local2:Number = btn_Up.alpha; _local2 = (_local2 - 0.1); if (_local2 < 0){ _local2 = 0; btn_Up.visible = false; removeEventListener(Event.ENTER_FRAME, overAnim); }; btn_Up.alpha = _local2; } function frame1(){ flame = new ButtonFlame(200, 38); this.hitArea = hitArea150; hitArea150.visible = false; flameContainer.addChild(flame); } public function over():void{ removeEventListener(Event.ENTER_FRAME, upAnim); addEventListener(Event.ENTER_FRAME, overAnim); } public function up():void{ btn_Up.visible = true; addEventListener(Event.ENTER_FRAME, upAnim); removeEventListener(Event.ENTER_FRAME, overAnim); } } }//package Pyro_fla
Section 115
//GregLogo_Screen_115 (Pyro_fla.GregLogo_Screen_115) package Pyro_fla { import flash.display.*; public dynamic class GregLogo_Screen_115 extends MovieClip { public function GregLogo_Screen_115(){ addFrameScript(9, frame10, 10, frame11); } function frame10(){ stop(); } function frame11(){ stop(); MovieClip(this.parent).play(); } } }//package Pyro_fla
Section 116
//GregLogo_Texts_117 (Pyro_fla.GregLogo_Texts_117) package Pyro_fla { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.net.*; import flash.media.*; import flash.filters.*; import flash.text.*; import flash.system.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.external.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class GregLogo_Texts_117 extends MovieClip { public var spaceSound:Array; public var minType:int; public var keyType:String; public var maxType:int; public var timer:Timer; public var typeSound:Array; public function GregLogo_Texts_117(){ addFrameScript(0, frame1, 11, frame12, 12, frame13, 13, frame14, 14, frame15, 15, frame16, 16, frame17, 17, frame18, 18, frame19, 19, frame20, 20, frame21, 21, frame22, 22, frame23, 23, frame24, 24, frame25, 25, frame26, 26, frame27, 27, frame28, 28, frame29, 29, frame30, 30, frame31, 31, frame32, 32, frame33, 40, frame41, 41, frame42, 42, frame43, 43, frame44, 52, frame53, 53, frame54, 54, frame55, 55, frame56, 56, frame57, 57, frame58, 58, frame59, 59, frame60, 60, frame61, 61, frame62, 62, frame63, 63, frame64, 64, frame65, 65, frame66, 81, frame82, 82, frame83, 83, frame84, 84, frame85, 85, frame86, 86, frame87, 87, frame88, 88, frame89, 89, frame90, 90, frame91, 91, frame92, 92, frame93, 93, frame94, 94, frame95, 95, frame96, 96, frame97, 97, frame98, 98, frame99, 99, frame100, 100, frame101, 101, frame102, 102, frame103, 103, frame104, 104, frame105, 168, frame169); } function frame63(){ playsound(); delay(); } public function delay():void{ timer.delay = randomTime(); timer.start(); } function frame66(){ play(); } function frame100(){ playsound(); delay(); } function frame31(){ playsound(); delay(); } function frame32(){ playsound(); delay(); } function frame33(){ playsound(); play(); } function frame30(){ playsound(); delay(); } function frame98(){ playsound(); delay(); } function frame82(){ stop(); keyType = "normal"; playsound(); delay(); } function frame83(){ playsound(); delay(); } function frame41(){ stop(); playsound(); delay(); } function frame42(){ playsound(); delay(); } function frame44(){ playsound(); play(); } function frame89(){ playsound(); delay(); } public function randomTime():int{ return (((Math.random() * (maxType - minType)) + minType)); } function frame85(){ playsound(); delay(); } function frame86(){ playsound(); delay(); } function frame43(){ playsound(); delay(); } function frame88(){ playsound(); delay(); } function frame169(){ stop(); MovieClip(this.parent).play(); } function frame84(){ playsound(); delay(); } function frame87(){ playsound(); delay(); } function frame90(){ playsound(); delay(); } function frame92(){ playsound(); delay(); } function frame93(){ playsound(); delay(); } function frame94(){ playsound(); delay(); } function frame95(){ playsound(); delay(); } function frame96(){ playsound(); delay(); } function frame53(){ stop(); playsound(); delay(); } function frame54(){ playsound(); delay(); } function frame55(){ playsound(); delay(); } function frame12(){ stop(); keyType = "normal"; playsound(); delay(); } function frame13(){ playsound(); delay(); } function frame14(){ playsound(); delay(); } function frame15(){ playsound(); delay(); } function frame17(){ keyType = "normal"; playsound(); delay(); } function frame18(){ playsound(); delay(); } function frame19(){ playsound(); delay(); } function frame57(){ playsound(); delay(); } function frame58(){ playsound(); delay(); } function frame16(){ keyType = "space"; playsound(); delay(); } function frame97(){ playsound(); delay(); } public function playsound():void{ var _local1:int = (Math.random() * 3); if (keyType == "normal"){ typeSound[_local1].play(0, 0); } else { if (keyType == "space"){ spaceSound[_local1].play(0, 0); }; }; } function frame99(){ playsound(); delay(); } function frame56(){ playsound(); delay(); } function frame59(){ playsound(); delay(); } function frame1(){ minType = 40; maxType = 80; typeSound = new Array(3); spaceSound = new Array(3); timer = new Timer(randomTime(), 1); typeSound[0] = new Keyboard_Click_0(); typeSound[1] = new Keyboard_Click_1(); typeSound[2] = new Keyboard_Click_2(); spaceSound[0] = new Keyboard_Spacebar_0(); spaceSound[1] = new Keyboard_Spacebar_1(); spaceSound[2] = new Keyboard_Spacebar_2(); timer.addEventListener(TimerEvent.TIMER, handleTimer); } function frame101(){ playsound(); delay(); } function frame102(){ playsound(); delay(); } function frame60(){ playsound(); delay(); } function frame61(){ playsound(); delay(); } function frame62(){ playsound(); delay(); } function frame20(){ keyType = "space"; playsound(); delay(); } function frame21(){ keyType = "normal"; playsound(); delay(); } function frame22(){ playsound(); delay(); } function frame23(){ playsound(); delay(); } function frame24(){ playsound(); delay(); } function frame25(){ playsound(); delay(); } function frame26(){ playsound(); delay(); } function frame27(){ playsound(); delay(); } function frame28(){ keyType = "space"; playsound(); delay(); } function frame29(){ keyType = "normal"; playsound(); delay(); } function frame103(){ playsound(); delay(); } function frame104(){ playsound(); delay(); } function frame105(){ play(); } function frame64(){ playsound(); delay(); } function frame65(){ playsound(); delay(); } public function handleTimer(_arg1:TimerEvent):void{ this.nextFrame(); } function frame91(){ playsound(); delay(); } } }//package Pyro_fla
Section 117
//MainTimeline (Pyro_fla.MainTimeline) package Pyro_fla { import game.*; import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import com.kongregate.as3.client.*; import flash.net.*; import flash.media.*; import effects.*; import flash.filters.*; import flash.text.*; import flash.system.*; import flash.errors.*; import adobe.utils.*; import flash.accessibility.*; import flash.external.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.ui.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public const MAXLEVEL:int = 40; public var mainClickSound:Sound; public var screenDestination:String; public var isFading:Boolean; public var btn_Back:SimpleButton; public var btn_Instruction:MovieClip; public var acedScreen:MovieClip; public var loader:FlameLoader; public var initTimer:Timer; public var btn_Sponsor:MovieClip; public var isBonus:Boolean; public var creditScroll:MovieClip; public var dLogo:DamijinLogo; public var mochiClip:MovieClip; public var mapFadeOut:Bitmap; public var flame:CreditFlame; public var mapFadeIn:Bitmap; public var btn_Kong:SimpleButton; public var timer:Timer; public var debug:Boolean; public var _mochiads_game_id:String; public var scrollMax:int; public var levelClass:Class; public var maskedFlame:MovieClip; public var kongLogo:Kong_Logo_Pyro; public var mainAmbientChannel:SoundChannel; public var fadeContainer:MovieClip; public var deathScene:MovieClip; public var btn_skip:SimpleButton; public var levelSelector:ButtonContainer; public var level:MovieClip; public var targetLevel:String; public var instruction:MovieClip; public var winSound:Sound; public var btn_Credits:MovieClip; public var mainAmbientSoundTransform:SoundTransform; public var btn_NewGame:MovieClip; public var mainAmbientSound:Sound; public var gLogo:GregLogo; public var titleFlame:MaskedFlame; public var gameData:SaveFile; public var creditTimer:Timer; public var kongregate:KongregateAPI; public function MainTimeline(){ addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 11, frame12, 12, frame13, 13, frame14, 16, frame17, 17, frame18, 20, frame21, 30, frame31, 39, frame40, 40, frame41, 50, frame51, 51, frame52, 59, frame60, 60, frame61, 70, frame71, 71, frame72, 80, frame81, 81, frame82, 90, frame91, 110, frame111, 130, frame131, 150, frame151, 160, frame161, 170, frame171, 179, frame180, 180, frame181, 190, frame191, 200, frame201); } function frame71(){ if (!winSound){ winSound = new Win(); }; level.addEventListener(GameLevel.WIN, handleWin); level.addEventListener(GameLevel.LOOSE, handleLoose); removeChild(deathScene); removeChild(acedScreen); acedScreen.addEventListener(Event.COMPLETE, handleAceComplete); level.visible = true; deathScene.btn_Retry.addEventListener(MouseEvent.CLICK, handleRetry); deathScene.btn_MainMenu.addEventListener(MouseEvent.CLICK, handleMenu); deathScene.btn_Kong.addEventListener(MouseEvent.CLICK, handleKong); stop(); } public function mochiProgress(_arg1:Number):void{ if (_arg1 >= 100){ play(); }; } function frame151(){ stop(); } public function calcFadeOut(){ var _local1:BitmapData = new BitmapData(400, 500, false); _local1.draw(level); removeChild(level); level = null; if (!mapFadeOut){ mapFadeOut = new Bitmap(_local1); } else { mapFadeOut.bitmapData = _local1; }; fadeContainer.addChild(mapFadeOut); } function frame161(){ if (Protection.isKONGREGATE()){ btn_Kong.visible = false; }; } function frame72(){ calcFadeOut(); } function frame82(){ timer = new Timer(6500, 5); timer.addEventListener(TimerEvent.TIMER, handleTimer); timer.start(); } public function onDelayedInit(_arg1:Event):void{ initTimer.stop(); initTimer.removeEventListener("timer", onDelayedInit); initTimer = null; initAPI(); } public function kongregateComplete(_arg1:Event):void{ kongregate = _arg1.target.content; kongregate.services.connect(); } public function handleInstruction(_arg1:MouseEvent):void{ mainClickSound.play(); mainAmbientChannel.stop(); screenDestination = "instructionScreen"; play(); } function frame81(){ gotoAndPlay(screenDestination); } public function topGameParams():Object{ var param:Object; var topLoader:Object; try { topLoader = LoaderInfo(MovieClip(root).loaderInfo).loader; param = LoaderInfo(topLoader.loaderInfo).parameters; } catch(e:Error) { }; return (param); } function frame12(){ loader.stopPreloader(); gotoAndPlay("damijinLogo"); } function frame13(){ btn_skip.addEventListener(MouseEvent.CLICK, handleSkip); if (debug){ gotoAndPlay("menuFrame"); } else { dLogo.addEventListener(Event.COMPLETE, handleDamijinComplete); }; } function frame14(){ stop(); dLogo.play(); } public function initButtons():void{ btn_Instruction.addEventListener(MouseEvent.CLICK, handleInstruction); btn_Instruction.addEventListener(MouseEvent.ROLL_OVER, handleButtonOver); btn_Instruction.addEventListener(MouseEvent.ROLL_OUT, handleButtonOut); btn_NewGame.addEventListener(MouseEvent.CLICK, handleNewGame); btn_NewGame.addEventListener(MouseEvent.ROLL_OVER, handleButtonOver); btn_NewGame.addEventListener(MouseEvent.ROLL_OUT, handleButtonOut); btn_Credits.addEventListener(MouseEvent.CLICK, handleCredits); btn_Credits.addEventListener(MouseEvent.ROLL_OVER, handleButtonOver); btn_Credits.addEventListener(MouseEvent.ROLL_OUT, handleButtonOut); btn_Sponsor.addEventListener(MouseEvent.CLICK, handleSponsor); btn_Sponsor.addEventListener(MouseEvent.ROLL_OVER, handleButtonOver); btn_Sponsor.addEventListener(MouseEvent.ROLL_OUT, handleButtonOut); } public function handleCredits(_arg1:MouseEvent):void{ mainClickSound.play(); mainAmbientChannel.stop(); screenDestination = "creditsScreen"; play(); } public function mochiFinished():void{ play(); } function frame17(){ gLogo.addEventListener(Event.COMPLETE, handleGregComplete); } public function handleBack(_arg1:MouseEvent):void{ btn_Back.removeEventListener(MouseEvent.CLICK, handleBack); flame.running = false; isFading = true; creditTimer.start(); } public function handleLoose(_arg1:Event):void{ if (deathScene){ addChild(deathScene); }; level.removeEventListener(GameLevel.WIN, handleWin); level.removeEventListener(GameLevel.LOOSE, handleLoose); } function frame201(){ gotoAndPlay("menuFrame"); } public function handleMute(_arg1:KeyboardEvent){ var _local2:SoundTransform; if (_arg1.keyCode == 77){ _local2 = SoundMixer.soundTransform; if (_local2.volume == 1){ _local2.volume = 0; SoundMixer.soundTransform = _local2; } else { _local2.volume = 1; SoundMixer.soundTransform = _local2; }; }; } function frame18(){ stop(); gLogo.play(); } public function handleRetry(_arg1:MouseEvent):void{ removeChild(deathScene); play(); } public function handleNewGame(_arg1:MouseEvent):void{ mainClickSound.play(); mainAmbientChannel.stop(); screenDestination = "levelSelect"; play(); } function frame3(){ } public function handleGregComplete(_arg1:Event):void{ gLogo.removeEventListener(Event.COMPLETE, handleGregComplete); gLogo = null; screenDestination = "menuFrame"; gotoAndPlay("menuFrame"); } function frame91(){ stop(); } public function handleButtonOver(_arg1:MouseEvent):void{ var _local2:MovieClip = (_arg1.target as MovieClip); _local2.flame.flameOn(); _local2.over(); } public function calcFadeIn(){ var _local1:BitmapData = new BitmapData(400, 500, true); _local1.draw(level); if (!mapFadeIn){ mapFadeIn = new Bitmap(_local1); } else { mapFadeIn.bitmapData = _local1; }; fadeContainer.addChild(mapFadeIn); } function frame171(){ screenDestination = "menuFrame"; if (!Protection.isKONGREGATE()){ timer.stop(); btn_Kong.addEventListener(MouseEvent.CLICK, handleKong); }; stop(); } public function handleButtonOut(_arg1:MouseEvent):void{ var _local2:MovieClip = (_arg1.target as MovieClip); _local2.flame.flameOff(); _local2.up(); } function frame1(){ debug = false; _mochiads_game_id = "db7801094352da5d"; if (((!(Protection.isKONGREGATE())) && (!(debug)))){ MochiAd.showPreGameAd({id:_mochiads_game_id, res:"400x500", clip:mochiClip, no_bg:true, ad_finished:mochiFinished}); stop(); }; } public function handleKong(_arg1:MouseEvent):void{ Protection.toKong(); } function frame180(){ timer.removeEventListener(TimerEvent.TIMER, handleTimer); timer.stop(); timer = null; System.gc(); gotoAndPlay(screenDestination); } function frame2(){ loader.debug = debug; kongLogo.addEventListener(MouseEvent.CLICK, handleKong); stop(); kongregate = new KongregateAPI(); this.addChild(kongregate); } function frame4(){ stop(); if (root.loaderInfo.bytesLoaded >= root.loaderInfo.bytesTotal){ play(); }; } public function delayedInit():void{ initTimer = new Timer(1000, 1); initTimer.addEventListener("timer", onDelayedInit); initTimer.start(); } public function handleWin(_arg1:Event):void{ var _local5:int; var _local6:int; var _local7:int; var _local8:Boolean; var _local9:String; var _local10:String; var _local11:int; var _local2:Array = new Array(); level.removeEventListener(GameLevel.WIN, handleWin); level.removeEventListener(GameLevel.LOOSE, handleLoose); acedScreen.unlockBackground.visible = false; acedScreen.unlockText.text.visible = false; var _local3:int = level.shotTaken; var _local4:Number = int((level.winTime / 40)); _local4 = (_local4 + ((level.winTime - (_local4 * 40)) / 40)); _local4 = int((_local4 * 1000)); if (isBonus){ _local5 = (targetLevel.charCodeAt(0) - 24); _local6 = (targetLevel.charCodeAt(0) - 65); gameData.bonusArray[_local6].complete = true; screenDestination = "levelSelect"; } else { _local5 = int(targetLevel); }; if (_local3 == 1){ if (!gameData.levelData[_local5].aced){ gameData.levelData[_local5].aced = true; _local7 = gameData.levelAced; _local8 = false; _local7++; gameData.levelAced = _local7; if (_local7 >= 27){ gameData.bonusUnlocked = 4; _local8 = true; } else { if (_local7 > 17){ gameData.bonusUnlocked = 3; } else { if (_local7 == 17){ gameData.bonusUnlocked = 3; _local8 = true; } else { if (_local7 > 10){ gameData.bonusUnlocked = 2; } else { if (_local7 == 10){ gameData.bonusUnlocked = 2; _local8 = true; } else { if (_local7 > 5){ gameData.bonusUnlocked = 1; } else { if (_local7 == 5){ gameData.bonusUnlocked = 1; _local8 = true; } else { if (_local7 < 5){ gameData.bonusUnlocked = 0; }; }; }; }; }; }; }; }; if (_local8){ gameData.bonusArray[(gameData.bonusUnlocked - 1)].unlock = true; _local9 = String.fromCharCode((gameData.bonusUnlocked + 64)); acedScreen.unlockBackground.visible = true; acedScreen.unlockText.text.visible = true; _local10 = (("- Secret level " + _local9) + "! "); acedScreen.unlockText.text.text = (((_local10 + _local10) + _local10) + _local10); }; }; }; if (_local4 < gameData.levelData[_local5].time){ gameData.levelData[_local5].time = _local4; }; if (!isBonus){ _local5++; targetLevel = ((_local5 < 10)) ? ("0" + _local5) : _local5.toString(); if ((_local5 - 1) > gameData.lastLevel){ gameData.lastLevel = (_local5 - 1); }; if (gameData.lastLevel > 40){ gameData.lastLevel = 40; }; }; if ((((_local5 > MAXLEVEL)) && (!(isBonus)))){ gameData.gameWon = true; screenDestination = "totallyWon"; }; gameData.flush(); if (isBonus){ _local2.push({name:(("BonusLevel" + targetLevel) + "Won"), value:1}); }; _local2.push({name:"AcedLevels", value:gameData.levelAced}); if (gameData.levelAced >= 34){ _local2.push({name:"PerfectAces", value:"1"}); }; if (gameData.gameWon){ _local2.push({name:"GameWon", value:"1"}); _local2.push({name:"TotalTime", value:gameData.totalTime}); }; _local2.push({name:"BonusLevelUnlocked", value:gameData.bonusUnlocked}); _local2.push({name:"LevelCompleted", value:gameData.levelCompleted}); if (debug){ _local11 = 0; while (_local11 < _local2.length) { _local11++; }; }; if (_local2.length){ if (kongregate){ kongregate.stats.submitArray(_local2); }; }; if (_local3 == 1){ addChild(acedScreen); winSound.play(0, 0); acedScreen.play(); } else { winSound.play(0, 0); play(); }; } public function updateScreen(_arg1:Event):void{ var _local2:Number; if (isFading){ _local2 = creditScroll.alpha; _local2 = (_local2 - 0.1); if (_local2 < 0){ _local2 = 0; }; creditScroll.alpha = _local2; }; if (creditScroll.y > scrollMax){ creditScroll.y = (creditScroll.y + -1); }; flame.update(); } function frame181(){ scrollMax = (-(creditScroll.height) + 250); creditTimer = new Timer(2000, 1); isFading = false; if (!flame){ flame = new CreditFlame(408, 50); }; stop(); flame.x = -4; flame.y = 458; flame.smoothing = false; addChild(flame); btn_Back.addEventListener(MouseEvent.CLICK, handleBack); creditTimer.addEventListener(TimerEvent.TIMER, handleEndCredit); stage.addEventListener(Event.ENTER_FRAME, updateScreen); creditScroll.btn_Kong.addEventListener(MouseEvent.CLICK, handleKong); } public function handleEndCredit(_arg1:TimerEvent):void{ creditTimer.removeEventListener(TimerEvent.TIMER, handleEndCredit); stage.removeEventListener(Event.ENTER_FRAME, updateScreen); flame.dispose(); creditTimer.stop(); creditTimer = null; flame = null; gotoAndPlay("menuFrame"); } function frame31(){ mainClickSound = new Torch_1(); mainAmbientSound = new Crackle(); mainAmbientSoundTransform = new SoundTransform(0.06, 0); stop(); if (!gameData){ gameData = new SaveFile(); }; mainAmbientChannel = mainAmbientSound.play(0, int.MAX_VALUE, mainAmbientSoundTransform); btn_Instruction.mouseChildren = false; btn_NewGame.mouseChildren = false; btn_Credits.mouseChildren = false; btn_Sponsor.mouseChildren = false; initButtons(); } public function handleAceComplete(_arg1:Event):void{ removeChild(acedScreen); play(); } function frame191(){ stop(); instruction.btn_Back.addEventListener(MouseEvent.CLICK, handleInstBack); } public function handleInstBack(_arg1:MouseEvent):void{ play(); } function frame21(){ if (titleFlame == null){ titleFlame = new MaskedFlame(maskedFlame, 250, 115); }; stage.addEventListener(KeyboardEvent.KEY_UP, handleMute); } public function handleDamijinComplete(_arg1:Event):void{ dLogo.removeEventListener(Event.COMPLETE, handleDamijinComplete); gotoAndPlay("gregLogo"); } function frame40(){ titleFlame = null; gotoAndPlay(screenDestination); } function frame41(){ levelSelector.saveData = gameData; levelSelector.init(); levelSelector.setLevel(gameData.lastLevel); } public function handleMenu(_arg1:MouseEvent):void{ screenDestination = "levelSelect"; removeChild(deathScene); play(); } function frame111(){ stop(); } public function playLevel(_arg1:String):void{ screenDestination = "startGame"; targetLevel = _arg1; play(); } function frame131(){ stop(); } public function handleSkip(_arg1:MouseEvent):void{ if (gLogo){ gLogo.stopSound(); }; gotoAndPlay("menuFrame"); } function frame51(){ targetLevel = "01"; stop(); } function frame52(){ } public function handleSponsor(_arg1:MouseEvent):void{ mainClickSound.play(); Protection.toKong(); } function frame60(){ gotoAndPlay(screenDestination); } function frame61(){ levelClass = (getDefinitionByName(("Level" + targetLevel)) as Class); level = new levelClass(); isBonus = isNaN(Number(targetLevel)); level.level = targetLevel; addChild(level); level.initialize(); calcFadeIn(); level.visible = false; } public function initAPI():void{ var _local1:Object = LoaderInfo(MovieClip(root).loaderInfo).parameters; if (_local1.api_url == null){ _local1 = topGameParams(); if ((((_local1 == null)) || ((_local1.api_url == null)))){ delayedInit(); return; }; }; var _local2:String = _local1.api_path; var _local3:Loader = new Loader(); _local3.contentLoaderInfo.addEventListener(Event.COMPLETE, kongregateComplete); _local3.load(new URLRequest(_local2)); (root as MovieClip).addChild(_local3); } public function handleTimer(_arg1:TimerEvent){ play(); } } }//package Pyro_fla
Section 118
//Block (Block) package { import flash.display.*; public dynamic class Block extends Sprite { } }//package
Section 119
//BlueFlamePalette (BlueFlamePalette) package { import flash.display.*; public dynamic class BlueFlamePalette extends Sprite { } }//package
Section 120
//BonusLevelButton (BonusLevelButton) package { import game.*; public dynamic class BonusLevelButton extends LevelButton { } }//package
Section 121
//BounceUpZone (BounceUpZone) package { import game.*; public dynamic class BounceUpZone extends BounceUpPowerUp { } }//package
Section 122
//ButtonHitArea (ButtonHitArea) package { import flash.display.*; public dynamic class ButtonHitArea extends Sprite { } }//package
Section 123
//Crackle (Crackle) package { import flash.media.*; public dynamic class Crackle extends Sound { } }//package
Section 124
//Crate (Crate) package { import game.*; public dynamic class Crate extends Burnable { } }//package
Section 125
//CrateBitmap (CrateBitmap) package { import flash.display.*; public dynamic class CrateBitmap extends BitmapData { public function CrateBitmap(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 126
//CrateBurnBitmap (CrateBurnBitmap) package { import flash.display.*; public dynamic class CrateBurnBitmap extends BitmapData { public function CrateBurnBitmap(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 127
//DamijinLogo (DamijinLogo) package { import flash.events.*; import flash.display.*; public dynamic class DamijinLogo extends MovieClip { public function DamijinLogo(){ addFrameScript(0, frame1, 184, frame185); } function frame185(){ dispatchEvent(new Event(Event.COMPLETE)); } function frame1(){ stop(); } } }//package
Section 128
//DragHandle (DragHandle) package { import flash.display.*; public dynamic class DragHandle extends Sprite { public var gauge:MovieClip; } }//package
Section 129
//DummyBody (DummyBody) package { import flash.display.*; public dynamic class DummyBody extends Sprite { } }//package
Section 130
//FireballDragArea (FireballDragArea) package { import flash.display.*; public dynamic class FireballDragArea extends Sprite { } }//package
Section 131
//FireballInit (FireballInit) package { import flash.display.*; public dynamic class FireballInit extends Sprite { public var display:MovieClip; public var buttonHitArea:ButtonHitArea; } }//package
Section 132
//FlameLoader (FlameLoader) package { import flash.events.*; import flash.display.*; import effects.*; public dynamic class FlameLoader extends MovieClip { public var debug:Boolean; public var delay:int; public var percent:Number; public var flameContainer:MovieClip; public var waiting:Boolean; public var flame:Flame; public var currWidth:Number; public var targetWidth:Number; public function FlameLoader(){ addFrameScript(0, frame1); } function frame1(){ flame = new Flame(305, 45); currWidth = 3; targetWidth = 3; waiting = true; flameContainer.addChild(flame); flame.x = -3; addEventListener(Event.ENTER_FRAME, update); } public function update(_arg1:Event):void{ var _local2:LoaderInfo = root.loaderInfo; percent = (_local2.bytesLoaded / _local2.bytesTotal); targetWidth = ((percent * 302) + 3); if (currWidth < targetWidth){ if (debug){ currWidth = targetWidth; } else { currWidth = (currWidth + 1); }; }; if ((((((currWidth > 302)) && ((percent == 1)))) && (waiting))){ delay++; if (delay > 120){ waiting = false; (parent as MovieClip).play(); }; }; flame.update(currWidth); } public function stopPreloader():void{ removeEventListener(Event.ENTER_FRAME, update); flame = null; } } }//package
Section 133
//FlamePalette (FlamePalette) package { import flash.display.*; public dynamic class FlamePalette extends Sprite { } }//package
Section 134
//Flare (Flare) package { import flash.media.*; public dynamic class Flare extends Sound { } }//package
Section 135
//GreenFlamePalette (GreenFlamePalette) package { import flash.display.*; public dynamic class GreenFlamePalette extends Sprite { } }//package
Section 136
//GregLogo (GregLogo) package { import flash.events.*; import flash.display.*; import flash.media.*; public dynamic class GregLogo extends MovieClip { public var hummTfm:SoundTransform; public var turnOff:Sound; public var humm:Sound; public var hummChan:SoundChannel; public function GregLogo(){ addFrameScript(0, frame1, 1, frame2, 10, frame11, 14, frame15, 34, frame35); } function frame2(){ humm = new Humm(); turnOff = new MonitorOff(); hummTfm = new SoundTransform(0); hummChan = humm.play(0, int.MAX_VALUE, hummTfm); addEventListener(Event.ENTER_FRAME, handleFadeIn); } public function handleFadeIn(_arg1:Event):void{ var _local2:Number = hummTfm.volume; _local2 = (_local2 + 0.1); if (_local2 >= 1){ _local2 = 1; removeEventListener(Event.ENTER_FRAME, handleFadeIn); }; hummTfm.volume = _local2; hummChan.soundTransform = hummTfm; } public function handleFadeOut(_arg1:Event):void{ var _local2:Number = hummTfm.volume; _local2 = (_local2 - 0.1); if (_local2 <= 0){ _local2 = 0; removeEventListener(Event.ENTER_FRAME, handleFadeOut); }; hummTfm.volume = _local2; hummChan.soundTransform = hummTfm; } function frame1(){ stop(); } public function stopSound():void{ hummChan.stop(); } function frame11(){ stop(); } function frame15(){ addEventListener(Event.ENTER_FRAME, handleFadeOut); } function frame35(){ stop(); dispatchEvent(new Event(Event.COMPLETE)); } } }//package
Section 137
//HalfSizeZone (HalfSizeZone) package { import game.*; public dynamic class HalfSizeZone extends HalfSizePowerUp { } }//package
Section 138
//HUD (HUD) package { import flash.display.*; import flash.text.*; public dynamic class HUD extends Sprite { public var btn_Mute:SimpleButton; public var lifeText:TextField; public var btn_Suicide:SimpleButton; public var percentText:TextField; public var level:TextField; public var dragHandle:DragHandle; } }//package
Section 139
//Humm (Humm) package { import flash.media.*; public dynamic class Humm extends Sound { } }//package
Section 140
//Keyboard_Click_0 (Keyboard_Click_0) package { import flash.media.*; public dynamic class Keyboard_Click_0 extends Sound { } }//package
Section 141
//Keyboard_Click_1 (Keyboard_Click_1) package { import flash.media.*; public dynamic class Keyboard_Click_1 extends Sound { } }//package
Section 142
//Keyboard_Click_2 (Keyboard_Click_2) package { import flash.media.*; public dynamic class Keyboard_Click_2 extends Sound { } }//package
Section 143
//Keyboard_Spacebar_0 (Keyboard_Spacebar_0) package { import flash.media.*; public dynamic class Keyboard_Spacebar_0 extends Sound { } }//package
Section 144
//Keyboard_Spacebar_1 (Keyboard_Spacebar_1) package { import flash.media.*; public dynamic class Keyboard_Spacebar_1 extends Sound { } }//package
Section 145
//Keyboard_Spacebar_2 (Keyboard_Spacebar_2) package { import flash.media.*; public dynamic class Keyboard_Spacebar_2 extends Sound { } }//package
Section 146
//Kong_Logo (Kong_Logo) package { import flash.display.*; public dynamic class Kong_Logo extends MovieClip { public function Kong_Logo(){ addFrameScript(128, frame129); } function frame129(){ stop(); } } }//package
Section 147
//Kong_Logo_Pyro (Kong_Logo_Pyro) package { import flash.display.*; public dynamic class Kong_Logo_Pyro extends MovieClip { public function Kong_Logo_Pyro(){ addFrameScript(6, frame7); } function frame7(){ stop(); } } }//package
Section 148
//Level01 (Level01) package { import game.*; public dynamic class Level01 extends GameLevel { public function Level01(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 5); } function frame1(){ } } }//package
Section 149
//Level02 (Level02) package { import game.*; public dynamic class Level02 extends GameLevel { public function Level02(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 150
//Level03 (Level03) package { import game.*; public dynamic class Level03 extends GameLevel { public function Level03(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 6); } function frame1(){ } } }//package
Section 151
//Level04 (Level04) package { import game.*; public dynamic class Level04 extends GameLevel { public function Level04(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 2); } function frame1(){ } } }//package
Section 152
//Level05 (Level05) package { import game.*; public dynamic class Level05 extends GameLevel { public function Level05(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 6); super.bonusTrigger = "A"; } function frame1(){ } } }//package
Section 153
//Level06 (Level06) package { import game.*; public dynamic class Level06 extends GameLevel { public function Level06(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(3, 2); } function frame1(){ } } }//package
Section 154
//Level07 (Level07) package { import game.*; public dynamic class Level07 extends GameLevel { public function Level07(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 155
//Level08 (Level08) package { import game.*; public dynamic class Level08 extends GameLevel { public function Level08(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 3); } function frame1(){ } } }//package
Section 156
//Level09 (Level09) package { import game.*; public dynamic class Level09 extends GameLevel { public function Level09(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 1); } function frame1(){ } } }//package
Section 157
//Level10 (Level10) package { import game.*; public dynamic class Level10 extends GameLevel { public function Level10(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 4); } function frame1(){ } } }//package
Section 158
//Level11 (Level11) package { import game.*; public dynamic class Level11 extends GameLevel { public function Level11(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 3); } function frame1(){ } } }//package
Section 159
//Level12 (Level12) package { import game.*; public dynamic class Level12 extends GameLevel { public function Level12(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 5); } function frame1(){ } } }//package
Section 160
//Level13 (Level13) package { import game.*; public dynamic class Level13 extends GameLevel { public function Level13(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 1); } function frame1(){ } } }//package
Section 161
//Level14 (Level14) package { import game.*; public dynamic class Level14 extends GameLevel { public function Level14(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 162
//Level15 (Level15) package { import game.*; public dynamic class Level15 extends GameLevel { public function Level15(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 8); } function frame1(){ } } }//package
Section 163
//Level16 (Level16) package { import game.*; public dynamic class Level16 extends GameLevel { public function Level16(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(3, 14); } function frame1(){ } } }//package
Section 164
//Level17 (Level17) package { import game.*; public dynamic class Level17 extends GameLevel { public function Level17(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 3); } function frame1(){ } } }//package
Section 165
//Level18 (Level18) package { import game.*; public dynamic class Level18 extends GameLevel { public function Level18(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(3, 9); } function frame1(){ } } }//package
Section 166
//Level19 (Level19) package { import game.*; public dynamic class Level19 extends GameLevel { public function Level19(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(3, 3); } function frame1(){ } } }//package
Section 167
//Level20 (Level20) package { import game.*; public dynamic class Level20 extends GameLevel { public function Level20(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 2); } function frame1(){ } } }//package
Section 168
//Level21 (Level21) package { import game.*; public dynamic class Level21 extends GameLevel { public function Level21(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 10); } function frame1(){ } } }//package
Section 169
//Level22 (Level22) package { import game.*; public dynamic class Level22 extends GameLevel { public function Level22(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 3); super.bonusTrigger = "C"; } function frame1(){ } } }//package
Section 170
//Level23 (Level23) package { import game.*; public dynamic class Level23 extends GameLevel { public function Level23(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(3, 5); } function frame1(){ } } }//package
Section 171
//Level24 (Level24) package { import game.*; public dynamic class Level24 extends GameLevel { public function Level24(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 3); } function frame1(){ } } }//package
Section 172
//Level25 (Level25) package { import game.*; public dynamic class Level25 extends GameLevel { public function Level25(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 3); } function frame1(){ } } }//package
Section 173
//Level26 (Level26) package { import game.*; public dynamic class Level26 extends GameLevel { public function Level26(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 4); } function frame1(){ } } }//package
Section 174
//Level27 (Level27) package { import game.*; public dynamic class Level27 extends GameLevel { public function Level27(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 1); } function frame1(){ } } }//package
Section 175
//Level28 (Level28) package { import game.*; public dynamic class Level28 extends GameLevel { public function Level28(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(3, 10); } function frame1(){ } } }//package
Section 176
//Level29 (Level29) package { import game.*; public dynamic class Level29 extends GameLevel { public function Level29(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 3); super.bonusTrigger = "D"; } function frame1(){ } } }//package
Section 177
//Level30 (Level30) package { import game.*; public dynamic class Level30 extends GameLevel { public function Level30(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 3); } function frame1(){ } } }//package
Section 178
//Level31 (Level31) package { import game.*; public dynamic class Level31 extends GameLevel { public function Level31(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 5); } function frame1(){ } } }//package
Section 179
//Level32 (Level32) package { import game.*; public dynamic class Level32 extends GameLevel { public function Level32(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 180
//Level33 (Level33) package { import game.*; public dynamic class Level33 extends GameLevel { public function Level33(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 181
//Level34 (Level34) package { import game.*; public dynamic class Level34 extends GameLevel { public function Level34(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 3); } function frame1(){ } } }//package
Section 182
//Level35 (Level35) package { import game.*; public dynamic class Level35 extends GameLevel { public function Level35(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 2); } function frame1(){ } } }//package
Section 183
//Level36 (Level36) package { import game.*; public dynamic class Level36 extends GameLevel { public function Level36(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 3); } function frame1(){ } } }//package
Section 184
//Level37 (Level37) package { import game.*; public dynamic class Level37 extends GameLevel { public function Level37(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 3); } function frame1(){ } } }//package
Section 185
//Level38 (Level38) package { import game.*; public dynamic class Level38 extends GameLevel { public function Level38(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 4); } function frame1(){ } } }//package
Section 186
//Level39 (Level39) package { import game.*; public dynamic class Level39 extends GameLevel { public function Level39(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(2, 2); super.bonusTrigger = "B"; } function frame1(){ } } }//package
Section 187
//Level40 (Level40) package { import game.*; public dynamic class Level40 extends GameLevel { public function Level40(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 11); } function frame1(){ } } }//package
Section 188
//LevelA (LevelA) package { import game.*; public dynamic class LevelA extends GameLevel { public function LevelA(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 189
//LevelB (LevelB) package { import game.*; public dynamic class LevelB extends GameLevel { public function LevelB(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 3); } function frame1(){ } } }//package
Section 190
//LevelC (LevelC) package { import game.*; public dynamic class LevelC extends GameLevel { public function LevelC(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 2); } function frame1(){ } } }//package
Section 191
//LevelD (LevelD) package { import game.*; public dynamic class LevelD extends GameLevel { public function LevelD(){ addFrameScript(0, frame1); } public function initialize():void{ super.init(1, 4); } function frame1(){ } } }//package
Section 192
//LevelPreview01 (LevelPreview01) package { import flash.display.*; public dynamic class LevelPreview01 extends BitmapData { public function LevelPreview01(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 193
//LevelPreview02 (LevelPreview02) package { import flash.display.*; public dynamic class LevelPreview02 extends BitmapData { public function LevelPreview02(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 194
//LevelPreview03 (LevelPreview03) package { import flash.display.*; public dynamic class LevelPreview03 extends BitmapData { public function LevelPreview03(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 195
//LevelPreview04 (LevelPreview04) package { import flash.display.*; public dynamic class LevelPreview04 extends BitmapData { public function LevelPreview04(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 196
//LevelPreview05 (LevelPreview05) package { import flash.display.*; public dynamic class LevelPreview05 extends BitmapData { public function LevelPreview05(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 197
//LevelPreview06 (LevelPreview06) package { import flash.display.*; public dynamic class LevelPreview06 extends BitmapData { public function LevelPreview06(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 198
//LevelPreview07 (LevelPreview07) package { import flash.display.*; public dynamic class LevelPreview07 extends BitmapData { public function LevelPreview07(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 199
//LevelPreview08 (LevelPreview08) package { import flash.display.*; public dynamic class LevelPreview08 extends BitmapData { public function LevelPreview08(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 200
//LevelPreview09 (LevelPreview09) package { import flash.display.*; public dynamic class LevelPreview09 extends BitmapData { public function LevelPreview09(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 201
//LevelPreview10 (LevelPreview10) package { import flash.display.*; public dynamic class LevelPreview10 extends BitmapData { public function LevelPreview10(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 202
//LevelPreview11 (LevelPreview11) package { import flash.display.*; public dynamic class LevelPreview11 extends BitmapData { public function LevelPreview11(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 203
//LevelPreview12 (LevelPreview12) package { import flash.display.*; public dynamic class LevelPreview12 extends BitmapData { public function LevelPreview12(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 204
//LevelPreview13 (LevelPreview13) package { import flash.display.*; public dynamic class LevelPreview13 extends BitmapData { public function LevelPreview13(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 205
//LevelPreview14 (LevelPreview14) package { import flash.display.*; public dynamic class LevelPreview14 extends BitmapData { public function LevelPreview14(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 206
//LevelPreview15 (LevelPreview15) package { import flash.display.*; public dynamic class LevelPreview15 extends BitmapData { public function LevelPreview15(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 207
//LevelPreview16 (LevelPreview16) package { import flash.display.*; public dynamic class LevelPreview16 extends BitmapData { public function LevelPreview16(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 208
//LevelPreview17 (LevelPreview17) package { import flash.display.*; public dynamic class LevelPreview17 extends BitmapData { public function LevelPreview17(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 209
//LevelPreview18 (LevelPreview18) package { import flash.display.*; public dynamic class LevelPreview18 extends BitmapData { public function LevelPreview18(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 210
//LevelPreview19 (LevelPreview19) package { import flash.display.*; public dynamic class LevelPreview19 extends BitmapData { public function LevelPreview19(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 211
//LevelPreview20 (LevelPreview20) package { import flash.display.*; public dynamic class LevelPreview20 extends BitmapData { public function LevelPreview20(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 212
//LevelPreview21 (LevelPreview21) package { import flash.display.*; public dynamic class LevelPreview21 extends BitmapData { public function LevelPreview21(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 213
//LevelPreview22 (LevelPreview22) package { import flash.display.*; public dynamic class LevelPreview22 extends BitmapData { public function LevelPreview22(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 214
//LevelPreview23 (LevelPreview23) package { import flash.display.*; public dynamic class LevelPreview23 extends BitmapData { public function LevelPreview23(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 215
//LevelPreview24 (LevelPreview24) package { import flash.display.*; public dynamic class LevelPreview24 extends BitmapData { public function LevelPreview24(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 216
//LevelPreview25 (LevelPreview25) package { import flash.display.*; public dynamic class LevelPreview25 extends BitmapData { public function LevelPreview25(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 217
//LevelPreview26 (LevelPreview26) package { import flash.display.*; public dynamic class LevelPreview26 extends BitmapData { public function LevelPreview26(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 218
//LevelPreview27 (LevelPreview27) package { import flash.display.*; public dynamic class LevelPreview27 extends BitmapData { public function LevelPreview27(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 219
//LevelPreview28 (LevelPreview28) package { import flash.display.*; public dynamic class LevelPreview28 extends BitmapData { public function LevelPreview28(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 220
//LevelPreview29 (LevelPreview29) package { import flash.display.*; public dynamic class LevelPreview29 extends BitmapData { public function LevelPreview29(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 221
//LevelPreview30 (LevelPreview30) package { import flash.display.*; public dynamic class LevelPreview30 extends BitmapData { public function LevelPreview30(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 222
//LevelPreview31 (LevelPreview31) package { import flash.display.*; public dynamic class LevelPreview31 extends BitmapData { public function LevelPreview31(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 223
//LevelPreview32 (LevelPreview32) package { import flash.display.*; public dynamic class LevelPreview32 extends BitmapData { public function LevelPreview32(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 224
//LevelPreview33 (LevelPreview33) package { import flash.display.*; public dynamic class LevelPreview33 extends BitmapData { public function LevelPreview33(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 225
//LevelPreview34 (LevelPreview34) package { import flash.display.*; public dynamic class LevelPreview34 extends BitmapData { public function LevelPreview34(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 226
//LevelPreview35 (LevelPreview35) package { import flash.display.*; public dynamic class LevelPreview35 extends BitmapData { public function LevelPreview35(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 227
//LevelPreview36 (LevelPreview36) package { import flash.display.*; public dynamic class LevelPreview36 extends BitmapData { public function LevelPreview36(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 228
//LevelPreview37 (LevelPreview37) package { import flash.display.*; public dynamic class LevelPreview37 extends BitmapData { public function LevelPreview37(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 229
//LevelPreview38 (LevelPreview38) package { import flash.display.*; public dynamic class LevelPreview38 extends BitmapData { public function LevelPreview38(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 230
//LevelPreview39 (LevelPreview39) package { import flash.display.*; public dynamic class LevelPreview39 extends BitmapData { public function LevelPreview39(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 231
//LevelPreview40 (LevelPreview40) package { import flash.display.*; public dynamic class LevelPreview40 extends BitmapData { public function LevelPreview40(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 232
//LevelPreviewA (LevelPreviewA) package { import flash.display.*; public dynamic class LevelPreviewA extends BitmapData { public function LevelPreviewA(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 233
//LevelPreviewB (LevelPreviewB) package { import flash.display.*; public dynamic class LevelPreviewB extends BitmapData { public function LevelPreviewB(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 234
//LevelPreviewC (LevelPreviewC) package { import flash.display.*; public dynamic class LevelPreviewC extends BitmapData { public function LevelPreviewC(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 235
//LevelPreviewD (LevelPreviewD) package { import flash.display.*; public dynamic class LevelPreviewD extends BitmapData { public function LevelPreviewD(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 236
//LongLineZone (LongLineZone) package { import game.*; public dynamic class LongLineZone extends LongLinePowerUp { } }//package
Section 237
//LTorch (LTorch) package { import game.*; public dynamic class LTorch extends TorchBase { } }//package
Section 238
//MainButton_Loop (MainButton_Loop) package { import flash.media.*; public dynamic class MainButton_Loop extends Sound { } }//package
Section 239
//MainButton_Start (MainButton_Start) package { import flash.media.*; public dynamic class MainButton_Start extends Sound { } }//package
Section 240
//MainButton_Stop (MainButton_Stop) package { import flash.media.*; public dynamic class MainButton_Stop extends Sound { } }//package
Section 241
//MochiAd (MochiAd) package { import flash.events.*; import flash.display.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiAd { public static function getVersion():String{ return ("2.7"); } public static function showClickAwayAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var options = _arg1; var DEFAULTS:Object = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{ }, ad_finished:function ():void{ }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; var wh:Array = MochiAd._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; var sendHostProgress:Boolean; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; chk["onEnterFrame"] = function ():void{ var _local4:Number; if (!this.parent){ delete this.onEnterFrame; return; }; var _local1:Object = this.parent._mochiad_ctr; var _local2:Number = (getTimer() - this.started); var _local3:Boolean; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; _local3 = true; chk.started = getTimer(); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (this.root == null){ _local3 = true; }; if (_local3){ delete this.onEnterFrame; }; }; doOnEnterFrame(chk); } public static function _isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function _allowDomains(_arg1:String):String{ var _local2:String = _arg1.split("/")[2].split(":")[0]; Security.allowDomain("*"); Security.allowDomain(_local2); Security.allowInsecureDomain("*"); Security.allowInsecureDomain(_local2); return (_local2); } public static function unload(_arg1:Object):Boolean{ if (((_arg1.clip) && (_arg1.clip._mochiad))){ _arg1 = _arg1.clip; }; if (_arg1.origFrameRate != undefined){ _arg1.stage.frameRate = _arg1.origFrameRate; }; if (!_arg1._mochiad){ return (false); }; if (_arg1._mochiad._containerLCName != undefined){ _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"}); }; if (_arg1._mochiad.onUnload){ _arg1._mochiad.onUnload(); }; delete _arg1._mochiad_loaded; delete _arg1._mochiad; return (true); } public static function showInterLevelAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var options = _arg1; var DEFAULTS:Object = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ }, ad_skipped:function ():void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); clip = options.clip; var ad_msec:Number = 11000; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; var fadeout_time:Number = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); options.ad_finished(); }; var wh:Array = MochiAd._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; mc.unloadAd = function ():void{ MochiAd.unload(clip); }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = (_arg1 - 250); }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; chk["onEnterFrame"] = function ():void{ var _local4:Number; if (!this.parent){ delete this.onEnterFrame; delete this.fadeFunction; return; }; var _local1:Object = this.parent._mochiad_ctr; var _local2:Number = (getTimer() - this.started); var _local3:Boolean; if (!chk.showing){ _local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local4 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if (_local2 > chk.ad_timeout){ options.ad_failed(); _local3 = true; }; }; }; if (_local2 > chk.ad_msec){ _local3 = true; }; if (_local3){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = this.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function _parseOptions(_arg1:Object, _arg2:Object):Object{ var _local4:String; var _local5:Array; var _local6:Number; var _local7:Array; var _local3:Object = {}; for (_local4 in _arg2) { _local3[_local4] = _arg2[_local4]; }; if (_arg1){ for (_local4 in _arg1) { _local3[_local4] = _arg1[_local4]; }; }; if (_local3.clip == undefined){ throw (new Error("MochiAd is missing the 'clip' parameter. This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite.")); }; _arg1 = _local3.clip.loaderInfo.parameters.mochiad_options; if (_arg1){ _local5 = _arg1.split("&"); _local6 = 0; while (_local6 < _local5.length) { _local7 = _local5[_local6].split("="); _local3[unescape(_local7[0])] = unescape(_local7[1]); _local6++; }; }; if (_local3.id == "test"){ }; return (_local3); } public static function _cleanup(_arg1:Object):void{ var k:String; var lc:LocalConnection; var f:Function; var mc = _arg1; if (("lc" in mc)){ lc = mc.lc; f = function ():void{ try { lc.client = null; lc.close(); } catch(e:Error) { }; }; setTimeout(f, 0); }; var idx:Number = DisplayObjectContainer(mc).numChildren; while (idx > 0) { idx = (idx - 1); DisplayObjectContainer(mc).removeChildAt(idx); }; for (k in mc) { delete mc[k]; }; } public static function load(_arg1:Object):MovieClip{ var clip:Object; var k:String; var server:String; var hostname:String; var lc:LocalConnection; var name:String; var loader:Loader; var g:Function; var req:URLRequest; var v:Object; var options = _arg1; var DEFAULTS:Object = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"}; options = MochiAd._parseOptions(options, DEFAULTS); options.swfv = 9; options.mav = MochiAd.getVersion(); clip = options.clip; if (!MochiAd._isNetworkAvailable()){ return (null); }; try { if (clip._mochiad_loaded){ return (null); }; } catch(e:Error) { throw (new Error("MochiAd requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; var depth:Number = options.depth; delete options.depth; var mc:MovieClip = createEmptyMovieClip(clip, "_mochiad", depth); var wh:Array = MochiAd._getRes(options, clip); options.res = ((wh[0] + "x") + wh[1]); options.server = (options.server + options.id); delete options.id; clip._mochiad_loaded = true; if (clip.loaderInfo.loaderURL.indexOf("http") == 0){ options.as3_swf = clip.loaderInfo.loaderURL; }; var lv:URLVariables = new URLVariables(); for (k in options) { v = options[k]; if (!(v is Function)){ lv[k] = v; }; }; server = lv.server; delete lv.server; hostname = _allowDomains(server); lc = new LocalConnection(); lc.client = mc; name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_"); lc.allowDomain("*", "localhost"); lc.allowInsecureDomain("*", "localhost"); lc.connect(name); mc.lc = lc; mc.lcName = name; lv.lc = name; lv.st = getTimer(); loader = new Loader(); g = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); MochiAd.unload(clip); }; loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g); req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime())); req.contentType = "application/x-www-form-urlencoded"; req.method = URLRequestMethod.POST; req.data = lv; loader.load(req); mc.addChild(loader); mc._mochiad_ctr = loader; return (mc); } public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{ var _local4:Array = _arg2.split("."); var _local5:Number = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return (undefined); }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; if (typeof(_arg1[_local4[_local5]]) == "function"){ return (_arg1[_local4[_local5]].apply(_arg1, _arg3)); }; return (undefined); } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{ var _local4:MovieClip = new MovieClip(); if (((false) && (_arg3))){ _arg1.addChildAt(_local4, _arg3); } else { _arg1.addChild(_local4); }; _arg1[_arg2] = _local4; _local4["_name"] = _arg2; return (_local4); } public static function _getRes(_arg1:Object, _arg2:Object):Array{ var _local6:Array; var _local3:Object = _arg2.getBounds(_arg2.root); var _local4:Number = 0; var _local5:Number = 0; if (typeof(_arg1.res) != "undefined"){ _local6 = _arg1.res.split("x"); _local4 = parseFloat(_local6[0]); _local5 = parseFloat(_local6[1]); } else { _local4 = (_local3.xMax - _local3.xMin); _local5 = (_local3.yMax - _local3.yMin); }; if ((((_local4 == 0)) || ((_local5 == 0)))){ _local4 = _arg2.stage.stageWidth; _local5 = _arg2.stage.stageHeight; }; return ([_local4, _local5]); } public static function adShowing(_arg1:Object):void{ _arg1.origFrameRate = _arg1.stage.frameRate; _arg1.stage.frameRate = 30; } public static function getValue(_arg1:Object, _arg2:String):Object{ var _local3:Array = _arg2.split("."); var _local4:Number = 0; while (_local4 < (_local3.length - 1)) { if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){ return (undefined); }; _arg1 = _arg1[_local3[_local4]]; _local4++; }; return (_arg1[_local3[_local4]]); } public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{ var _local4:Object; var _local5:Object; switch (_arg3.id){ case "setValue": MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value); break; case "getValue": _local4 = MochiAd.getValue(_arg1, _arg3.objectName); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4); break; case "runMethod": _local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args); _arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5); break; }; } public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Array = _arg2.split("."); var _local5:Number = 0; while (_local5 < (_local4.length - 1)) { if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){ return; }; _arg1 = _arg1[_local4[_local5]]; _local5++; }; _arg1[_local4[_local5]] = _arg3; } public static function showPreGameAd(_arg1:Object):void{ var clip:Object; var mc:MovieClip; var chk:MovieClip; var complete:Boolean; var unloaded:Boolean; var sendHostProgress:Boolean; var fn:Function; var r:MovieClip; var options = _arg1; var DEFAULTS:Object = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{ if ((this.clip is MovieClip)){ this.clip.stop(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_finished:function ():void{ if ((this.clip is MovieClip)){ this.clip.play(); } else { throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip. If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers.")); }; }, ad_loaded:function (_arg1:Number, _arg2:Number):void{ }, ad_failed:function ():void{ }, ad_skipped:function ():void{ }, ad_progress:function (_arg1:Number):void{ }}; options = MochiAd._parseOptions(options, DEFAULTS); if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){ options.ad_started(); fn = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); return; }; clip = options.clip; var ad_msec:Number = 11000; var ad_timeout:Number = options.ad_timeout; delete options.ad_timeout; var fadeout_time:Number = options.fadeout_time; delete options.fadeout_time; if (!MochiAd.load(options)){ options.ad_failed(); options.ad_finished(); return; }; options.ad_started(); mc = clip._mochiad; mc["onUnload"] = function ():void{ MochiAd._cleanup(mc); var fn:Function = function ():void{ options.ad_finished(); }; setTimeout(fn, 100); }; var wh:Array = MochiAd._getRes(options, clip); var w:Number = wh[0]; var h:Number = wh[1]; mc.x = (w * 0.5); mc.y = (h * 0.5); chk = createEmptyMovieClip(mc, "_mochiad_wait", 3); chk.x = (w * -0.5); chk.y = (h * -0.5); var bar:MovieClip = createEmptyMovieClip(chk, "_mochiad_bar", 4); if (options.no_progress_bar){ bar.visible = false; delete options.no_progress_bar; } else { bar.x = 10; bar.y = (h - 20); }; var bar_color:Number = options.color; delete options.color; var bar_background:Number = options.background; delete options.background; var bar_outline:Number = options.outline; delete options.outline; var backing_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 1); var backing:Object = backing_mc.graphics; backing.beginFill(bar_background); backing.moveTo(0, 0); backing.lineTo((w - 20), 0); backing.lineTo((w - 20), 10); backing.lineTo(0, 10); backing.lineTo(0, 0); backing.endFill(); var inside_mc:MovieClip = createEmptyMovieClip(bar, "_inside", 2); var inside:Object = inside_mc.graphics; inside.beginFill(bar_color); inside.moveTo(0, 0); inside.lineTo((w - 20), 0); inside.lineTo((w - 20), 10); inside.lineTo(0, 10); inside.lineTo(0, 0); inside.endFill(); inside_mc.scaleX = 0; var outline_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 3); var outline:Object = outline_mc.graphics; outline.lineStyle(0, bar_outline, 100); outline.moveTo(0, 0); outline.lineTo((w - 20), 0); outline.lineTo((w - 20), 10); outline.lineTo(0, 10); outline.lineTo(0, 0); chk.ad_msec = ad_msec; chk.ad_timeout = ad_timeout; chk.started = getTimer(); chk.showing = false; chk.last_pcnt = 0; chk.fadeout_time = fadeout_time; chk.fadeFunction = function ():void{ var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time))); if (_local1 > 0){ this.parent.alpha = (_local1 * 0.01); } else { MochiAd.unload(clip); delete this["onEnterFrame"]; }; }; complete = false; unloaded = false; var f:Function = function (_arg1:Event):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); complete = true; if (unloaded){ MochiAd.unload(clip); }; }; clip.loaderInfo.addEventListener(Event.COMPLETE, f); if ((clip.root is MovieClip)){ r = (clip.root as MovieClip); if (r.framesLoaded >= r.totalFrames){ complete = true; }; }; mc.unloadAd = function ():void{ unloaded = true; if (complete){ MochiAd.unload(clip); }; }; mc.adLoaded = options.ad_loaded; mc.adSkipped = options.ad_skipped; mc.adjustProgress = function (_arg1:Number):void{ var _local2:Object = mc._mochiad_wait; _local2.server_control = true; _local2.showing = true; _local2.started = getTimer(); _local2.ad_msec = _arg1; }; mc.rpc = function (_arg1:Number, _arg2:Object):void{ MochiAd.rpc(clip, _arg1, _arg2); }; mc.rpcTestFn = function (_arg1:String):Object{ return (_arg1); }; mc.regContLC = function (_arg1:String):void{ mc._containerLCName = _arg1; }; sendHostProgress = false; mc.sendHostLoadProgress = function (_arg1:String):void{ sendHostProgress = true; }; chk["onEnterFrame"] = function ():void{ var _local11:Number; if (((!(this.parent)) || (!(this.parent.parent)))){ delete this["onEnterFrame"]; return; }; var _local1:Object = this.parent.parent.root; var _local2:Object = this.parent._mochiad_ctr; var _local3:Number = (getTimer() - this.started); var _local4:Boolean; var _local5:Number = _local1.loaderInfo.bytesTotal; var _local6:Number = _local1.loaderInfo.bytesLoaded; if (complete){ _local6 = Math.max(1, _local6); _local5 = _local6; }; var _local7:Number = ((100 * _local6) / _local5); var _local8:Number = ((100 * _local3) / chk.ad_msec); var _local9:Object = this._mochiad_bar._inside; var _local10:Number = Math.min(100, Math.min(((_local7) || (0)), _local8)); _local10 = Math.max(this.last_pcnt, _local10); this.last_pcnt = _local10; _local9.scaleX = (_local10 * 0.01); options.ad_progress(_local10); if (sendHostProgress){ clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local7}); if (_local7 == 100){ sendHostProgress = false; }; }; if (!chk.showing){ _local11 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal; if (_local11 > 0){ chk.showing = true; chk.started = getTimer(); MochiAd.adShowing(clip); } else { if ((((_local3 > chk.ad_timeout)) && ((_local7 == 100)))){ options.ad_failed(); _local4 = true; }; }; }; if (_local3 > chk.ad_msec){ _local4 = true; }; if (((complete) && (_local4))){ if (this.server_control){ delete this.onEnterFrame; } else { this.fadeout_start = getTimer(); this.onEnterFrame = chk.fadeFunction; }; }; }; doOnEnterFrame(chk); } public static function showPreloaderAd(_arg1:Object):void{ MochiAd.showPreGameAd(_arg1); } public static function showTimedAd(_arg1:Object):void{ MochiAd.showInterLevelAd(_arg1); } public static function doOnEnterFrame(_arg1:MovieClip):void{ var mc = _arg1; var f:Function = function (_arg1:Object):void{ if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){ mc.onEnterFrame(); } else { _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; }; mc.addEventListener(Event.ENTER_FRAME, f); } } }//package
Section 242
//MonitorOff (MonitorOff) package { import flash.media.*; public dynamic class MonitorOff extends Sound { } }//package
Section 243
//NoiseGenerator (NoiseGenerator) package { import flash.display.*; public dynamic class NoiseGenerator extends Sprite { } }//package
Section 244
//Play_Click (Play_Click) package { import flash.media.*; public dynamic class Play_Click extends Sound { } }//package
Section 245
//Play_Out (Play_Out) package { import flash.media.*; public dynamic class Play_Out extends Sound { } }//package
Section 246
//Play_Over (Play_Over) package { import flash.media.*; public dynamic class Play_Over extends Sound { } }//package
Section 247
//PlusOneZone (PlusOneZone) package { import game.*; public dynamic class PlusOneZone extends PlusOnePowerUp { } }//package
Section 248
//RedFlamePalette (RedFlamePalette) package { import flash.display.*; public dynamic class RedFlamePalette extends Sprite { } }//package
Section 249
//RTorch (RTorch) package { import game.*; public dynamic class RTorch extends TorchBase { } }//package
Section 250
//TextMask (TextMask) package { import flash.display.*; public dynamic class TextMask extends Sprite { } }//package
Section 251
//Thock_0 (Thock_0) package { import flash.media.*; public dynamic class Thock_0 extends Sound { } }//package
Section 252
//Thock_1 (Thock_1) package { import flash.media.*; public dynamic class Thock_1 extends Sound { } }//package
Section 253
//Thunk_0 (Thunk_0) package { import flash.media.*; public dynamic class Thunk_0 extends Sound { } }//package
Section 254
//Thunk_1 (Thunk_1) package { import flash.media.*; public dynamic class Thunk_1 extends Sound { } }//package
Section 255
//Thunk_2 (Thunk_2) package { import flash.media.*; public dynamic class Thunk_2 extends Sound { } }//package
Section 256
//Thunk_3 (Thunk_3) package { import flash.media.*; public dynamic class Thunk_3 extends Sound { } }//package
Section 257
//TitleFlamePalette (TitleFlamePalette) package { import flash.display.*; public dynamic class TitleFlamePalette extends Sprite { } }//package
Section 258
//Torch (Torch) package { import game.*; public dynamic class Torch extends TorchBase { } }//package
Section 259
//Torch_0 (Torch_0) package { import flash.media.*; public dynamic class Torch_0 extends Sound { } }//package
Section 260
//Torch_1 (Torch_1) package { import flash.media.*; public dynamic class Torch_1 extends Sound { } }//package
Section 261
//Torch_2 (Torch_2) package { import flash.media.*; public dynamic class Torch_2 extends Sound { } }//package
Section 262
//Torch_3 (Torch_3) package { import flash.media.*; public dynamic class Torch_3 extends Sound { } }//package
Section 263
//TorchHitArea (TorchHitArea) package { import flash.display.*; public dynamic class TorchHitArea extends Sprite { } }//package
Section 264
//TransparentBlueFlamePalette (TransparentBlueFlamePalette) package { import flash.display.*; public dynamic class TransparentBlueFlamePalette extends Sprite { } }//package
Section 265
//TransparentCreditFlamePalette (TransparentCreditFlamePalette) package { import flash.display.*; public dynamic class TransparentCreditFlamePalette extends Sprite { } }//package
Section 266
//TransparentFlamePalette (TransparentFlamePalette) package { import flash.display.*; public dynamic class TransparentFlamePalette extends Sprite { } }//package
Section 267
//TransparentGreenFlamePalette (TransparentGreenFlamePalette) package { import flash.display.*; public dynamic class TransparentGreenFlamePalette extends Sprite { } }//package
Section 268
//TransparentRedFlamePalette (TransparentRedFlamePalette) package { import flash.display.*; public dynamic class TransparentRedFlamePalette extends Sprite { } }//package
Section 269
//Win (Win) package { import flash.media.*; public dynamic class Win extends Sound { } }//package

Library Items

Symbol 1 GraphicUsed by:2
Symbol 2 MovieClip {TransparentCreditFlamePalette}Uses:1Used by:303
Symbol 3 MovieClip {com.kongregate.as3.client.KongregateAPI}
Symbol 4 GraphicUsed by:5
Symbol 5 MovieClipUses:4Used by:Timeline
Symbol 6 MovieClipUsed by:Timeline
Symbol 7 GraphicUsed by:8
Symbol 8 MovieClip {TransparentFlamePalette}Uses:7Used by:Timeline
Symbol 9 GraphicUsed by:14
Symbol 10 FontUsed by:11 51 471 472 473 474 489 490 491 493 494 495 496 504 513 514 515 516 518 519 520 522 523 524 529 536 537 538 539 540
Symbol 11 TextUses:10Used by:14
Symbol 12 GraphicUsed by:14
Symbol 13 MovieClipUsed by:14
Symbol 14 MovieClip {FlameLoader}Uses:9 11 12 13Used by:Timeline
Symbol 15 GraphicUsed by:41
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClipUses:16Used by:34 41
Symbol 18 GraphicUsed by:19
Symbol 19 MovieClipUses:18Used by:33 41
Symbol 20 GraphicUsed by:21
Symbol 21 MovieClipUses:20Used by:28 33 34 41
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClipUses:22Used by:28 33 34 41
Symbol 24 GraphicUsed by:25
Symbol 25 MovieClipUses:24Used by:28 33 34 41
Symbol 26 GraphicUsed by:27
Symbol 27 MovieClipUses:26Used by:28 33 34 41
Symbol 28 MovieClipUses:21 23 25 27Used by:41
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClipUses:29Used by:41
Symbol 31 GraphicUsed by:34
Symbol 32 GraphicUsed by:34
Symbol 33 MovieClipUses:19 21 23 25 27Used by:34
Symbol 34 MovieClipUses:31 17 32 33 21 23 25 27Used by:41
Symbol 35 GraphicUsed by:36
Symbol 36 MovieClipUses:35Used by:41
Symbol 37 FontUsed by:39
Symbol 38 FontUsed by:39
Symbol 39 TextUses:37 38Used by:40
Symbol 40 MovieClipUses:39Used by:41
Symbol 41 MovieClip {Kong_Logo}Uses:15 17 19 28 30 21 23 25 27 34 36 40Used by:42
Symbol 42 MovieClip {Kong_Logo_Pyro}Uses:41Used by:Timeline
Symbol 43 GraphicUsed by:68 100 303 435 476 481 483 485 486 492 497 517 521 525
Symbol 44 Bitmap {CrateBurnBitmap}Used by:45 303
Symbol 45 MovieClipUses:44Used by:52 505
Symbol 46 Bitmap {CrateBitmap}Used by:47 74 303
Symbol 47 MovieClipUses:46Used by:52 505
Symbol 48 BitmapUsed by:49 109
Symbol 49 GraphicUses:48Used by:50
Symbol 50 MovieClipUses:49Used by:52 505
Symbol 51 EditableTextUses:10Used by:52
Symbol 52 MovieClip {game.LevelButton}Uses:45 47 50 51Used by:303 510
Symbol 53 GraphicUsed by:54
Symbol 54 MovieClipUses:53Used by:55
Symbol 55 MovieClip {BounceUpZone}Uses:54Used by:284 290 303
Symbol 56 GraphicUsed by:57
Symbol 57 MovieClipUses:56Used by:58
Symbol 58 MovieClip {HalfSizeZone}Uses:57Used by:283 296 303
Symbol 59 GraphicUsed by:60
Symbol 60 MovieClipUses:59Used by:61
Symbol 61 MovieClip {LongLineZone}Uses:60Used by:256 261 278 280 303
Symbol 62 GraphicUsed by:65 92
Symbol 63 FontUsed by:64 112 115 116 118 120 122 125 127 129 203 208 244 253 254 432 433 434 475 487 498 554 555 556
Symbol 64 TextUses:63Used by:65
Symbol 65 MovieClipUses:62 64Used by:66
Symbol 66 MovieClip {PlusOneZone}Uses:65Used by:268 278 303
Symbol 67 GraphicUsed by:69
Symbol 68 MovieClip {TorchHitArea}Uses:43Used by:69 71 73 303
Symbol 69 MovieClip {LTorch}Uses:67 68Used by:205 210 218 222 224 226 228 230 232 249 251 261 263 265 273 274 276 280 284 286 289 290 302 303
Symbol 70 GraphicUsed by:71
Symbol 71 MovieClip {RTorch}Uses:70 68Used by:205 216 218 224 226 228 230 232 249 251 256 263 265 274 276 280 283 284 286 289 290 294 302 303
Symbol 72 GraphicUsed by:73
Symbol 73 MovieClip {Torch}Uses:72 68Used by:205 210 213 216 220 222 224 228 232 234 236 238 240 242 246 247 249 261 266 268 276 278 283 284 286 288 289 290 292 294 296 298 300 303
Symbol 74 MovieClipUses:46Used by:75 303
Symbol 75 MovieClip {Crate}Uses:74Used by:210 216 218 220 222 224 228 232 234 236 240 246 247 249 251 266 274 280 284 288 289 290 292 294 300 302 303
Symbol 76 GraphicUsed by:77
Symbol 77 MovieClip {NoiseGenerator}Uses:76Used by:303
Symbol 78 GraphicUsed by:79
Symbol 79 MovieClip {BlueFlamePalette}Uses:78Used by:303
Symbol 80 GraphicUsed by:81
Symbol 81 MovieClip {FlamePalette}Uses:80Used by:303
Symbol 82 GraphicUsed by:83
Symbol 83 MovieClip {GreenFlamePalette}Uses:82Used by:303
Symbol 84 GraphicUsed by:85
Symbol 85 MovieClip {RedFlamePalette}Uses:84Used by:303
Symbol 86 GraphicUsed by:87
Symbol 87 MovieClip {TransparentBlueFlamePalette}Uses:86Used by:303
Symbol 88 GraphicUsed by:89
Symbol 89 MovieClip {TransparentGreenFlamePalette}Uses:88Used by:303
Symbol 90 GraphicUsed by:91
Symbol 91 MovieClip {TransparentRedFlamePalette}Uses:90Used by:303
Symbol 92 MovieClip {ButtonHitArea}Uses:62Used by:95 303
Symbol 93 GraphicUsed by:94
Symbol 94 MovieClipUses:93Used by:95
Symbol 95 MovieClip {FireballInit}Uses:92 94Used by:205 210 213 216 218 220 222 224 226 228 230 232 234 236 238 240 242 246 247 249 251 256 261 263 265 266 268 273 274 276 278 280 283 284 286 288 289 290 292 294 296 298 300 302 303
Symbol 96 GraphicUsed by:97
Symbol 97 MovieClip {Block}Uses:96Used by:205 210 213 216 218 220 222 224 226 228 230 232 234 236 238 240 242 246 247 249 251 256 261 263 265 266 268 273 274 276 278 280 283 284 286 288 289 290 292 294 296 298 300 302 303
Symbol 98 GraphicUsed by:99
Symbol 99 MovieClip {FireballDragArea}Uses:98Used by:303
Symbol 100 MovieClipUses:43Used by:103
Symbol 101 GraphicUsed by:103
Symbol 102 GraphicUsed by:103
Symbol 103 MovieClip {DragHandle}Uses:100 101 102Used by:131 303
Symbol 104 MovieClip {DummyBody}Used by:303
Symbol 105 GraphicUsed by:106
Symbol 106 MovieClip {TitleFlamePalette}Uses:105Used by:303
Symbol 107 BitmapUsed by:109 201 207 212 215 217 219 221 223 225 227 229 231 233 235 237 239 241 243 248 250 252 262 264 267 269 270 272 275 277 279 281 282 285 287 291 293 295 297 299 301
Symbol 108 BitmapUsed by:109 217 248 257 258 259 260
Symbol 109 GraphicUses:48 107 108Used by:303
Symbol 110 GraphicUsed by:131
Symbol 111 FontUsed by:112 556
Symbol 112 EditableTextUses:63 111Used by:131
Symbol 113 GraphicUsed by:114
Symbol 114 MovieClipUses:113Used by:131
Symbol 115 EditableTextUses:63Used by:131
Symbol 116 EditableTextUses:63Used by:131
Symbol 117 GraphicUsed by:123
Symbol 118 TextUses:63Used by:123
Symbol 119 GraphicUsed by:123
Symbol 120 TextUses:63Used by:123
Symbol 121 GraphicUsed by:123
Symbol 122 TextUses:63Used by:123
Symbol 123 ButtonUses:117 118 119 120 121 122Used by:131
Symbol 124 GraphicUsed by:130
Symbol 125 TextUses:63Used by:130
Symbol 126 GraphicUsed by:130
Symbol 127 TextUses:63Used by:130
Symbol 128 GraphicUsed by:130
Symbol 129 TextUses:63Used by:130
Symbol 130 ButtonUses:124 125 126 127 128 129Used by:131
Symbol 131 MovieClip {HUD}Uses:110 112 114 115 116 103 123 130Used by:303
Symbol 132 GraphicUsed by:133
Symbol 133 MovieClip {TextMask}Uses:132Used by:303 470
Symbol 134 Sound {Crackle}Used by:303
Symbol 135 Sound {Flare}Used by:303
Symbol 136 Sound {Thock_0}Used by:303
Symbol 137 Sound {Thock_1}Used by:303
Symbol 138 Sound {Thunk_0}Used by:303
Symbol 139 Sound {Thunk_1}Used by:303
Symbol 140 Sound {Thunk_2}Used by:303
Symbol 141 Sound {Thunk_3}Used by:303
Symbol 142 Sound {Torch_0}Used by:303
Symbol 143 Sound {Torch_1}Used by:303
Symbol 144 Sound {Torch_2}Used by:303
Symbol 145 Sound {Torch_3}Used by:303
Symbol 146 Sound {Win}Used by:303
Symbol 147 Sound {MainButton_Start}Used by:303
Symbol 148 Sound {MainButton_Loop}Used by:303
Symbol 149 Sound {MainButton_Stop}Used by:303
Symbol 150 Sound {Keyboard_Click_0}Used by:303
Symbol 151 Sound {Keyboard_Click_1}Used by:303
Symbol 152 Sound {Keyboard_Click_2}Used by:303
Symbol 153 Sound {Keyboard_Spacebar_0}Used by:303
Symbol 154 Sound {Keyboard_Spacebar_1}Used by:303
Symbol 155 Sound {Keyboard_Spacebar_2}Used by:303
Symbol 156 Sound {Humm}Used by:303
Symbol 157 Sound {Play_Click}Used by:303
Symbol 158 Sound {Play_Out}Used by:303
Symbol 159 Sound {Play_Over}Used by:303
Symbol 160 Bitmap {LevelPreview01}Used by:303
Symbol 161 Bitmap {LevelPreview02}Used by:303
Symbol 162 Bitmap {LevelPreview03}Used by:303
Symbol 163 Bitmap {LevelPreview04}Used by:303
Symbol 164 Bitmap {LevelPreview05}Used by:303
Symbol 165 Bitmap {LevelPreview06}Used by:303
Symbol 166 Bitmap {LevelPreview07}Used by:303
Symbol 167 Bitmap {LevelPreview08}Used by:303
Symbol 168 Bitmap {LevelPreview09}Used by:303
Symbol 169 Bitmap {LevelPreview10}Used by:303
Symbol 170 Bitmap {LevelPreview11}Used by:303
Symbol 171 Bitmap {LevelPreview12}Used by:303
Symbol 172 Bitmap {LevelPreview13}Used by:303
Symbol 173 Bitmap {LevelPreview14}Used by:303
Symbol 174 Bitmap {LevelPreview15}Used by:303
Symbol 175 Bitmap {LevelPreview16}Used by:303
Symbol 176 Bitmap {LevelPreview17}Used by:303
Symbol 177 Bitmap {LevelPreview18}Used by:303
Symbol 178 Bitmap {LevelPreview27}Used by:303
Symbol 179 Bitmap {LevelPreview19}Used by:303
Symbol 180 Bitmap {LevelPreview20}Used by:303
Symbol 181 Bitmap {LevelPreview21}Used by:303
Symbol 182 Bitmap {LevelPreview22}Used by:303
Symbol 183 Bitmap {LevelPreview23}Used by:303
Symbol 184 Bitmap {LevelPreview24}Used by:303
Symbol 185 Bitmap {LevelPreview25}Used by:303
Symbol 186 Bitmap {LevelPreview26}Used by:303
Symbol 187 Bitmap {LevelPreview28}Used by:303
Symbol 188 Bitmap {LevelPreview29}Used by:303
Symbol 189 Bitmap {LevelPreview30}Used by:303
Symbol 190 Bitmap {LevelPreview31}Used by:303
Symbol 191 Bitmap {LevelPreview32}Used by:303
Symbol 192 Bitmap {LevelPreview33}Used by:303
Symbol 193 Bitmap {LevelPreview34}Used by:303
Symbol 194 Bitmap {LevelPreview35}Used by:303
Symbol 195 Bitmap {LevelPreview36}Used by:303
Symbol 196 Bitmap {LevelPreview37}Used by:303
Symbol 197 Bitmap {LevelPreview38}Used by:303
Symbol 198 Bitmap {LevelPreview39}Used by:303
Symbol 199 Bitmap {LevelPreview40}Used by:303
Symbol 200 Bitmap {LevelPreviewA}Used by:303
Symbol 201 GraphicUses:107Used by:205
Symbol 202 MovieClipUsed by:205 213 216 218 220 222 224 226 228 230 232 234 236 238 240 242 247 249 251 261 263 265 266 268 273 274 276 278 280 283 284 286 288 289 290 292 294 296 298 300 302
Symbol 203 TextUses:63Used by:204
Symbol 204 MovieClipUses:203Used by:205
Symbol 205 MovieClip {Level01}Uses:201 69 71 73 202 204 95 97Used by:303
Symbol 206 Bitmap {LevelPreviewB}Used by:303
Symbol 207 GraphicUses:107Used by:210
Symbol 208 TextUses:63Used by:209
Symbol 209 MovieClipUses:208Used by:210
Symbol 210 MovieClip {Level02}Uses:207 75 73 69 209 95 97Used by:303
Symbol 211 Bitmap {LevelPreviewC}Used by:303
Symbol 212 GraphicUses:107Used by:213
Symbol 213 MovieClip {Level12}Uses:212 73 202 95 97Used by:303
Symbol 214 Bitmap {LevelPreviewD}Used by:303
Symbol 215 GraphicUses:107Used by:216
Symbol 216 MovieClip {Level25}Uses:215 75 71 73 202 95 97Used by:303
Symbol 217 GraphicUses:107 108Used by:218
Symbol 218 MovieClip {Level04}Uses:217 75 69 71 202 95 97Used by:303
Symbol 219 GraphicUses:107Used by:220
Symbol 220 MovieClip {Level27}Uses:219 75 73 202 95 97Used by:303
Symbol 221 GraphicUses:107Used by:222
Symbol 222 MovieClip {Level39}Uses:221 75 69 73 202 95 97Used by:303
Symbol 223 GraphicUses:107Used by:224
Symbol 224 MovieClip {Level17}Uses:223 75 69 71 73 202 95 97Used by:303
Symbol 225 GraphicUses:107Used by:226
Symbol 226 MovieClip {Level14}Uses:225 69 71 202 95 97Used by:303
Symbol 227 GraphicUses:107Used by:228
Symbol 228 MovieClip {Level38}Uses:227 75 73 71 69 202 95 97Used by:303
Symbol 229 GraphicUses:107Used by:230
Symbol 230 MovieClip {Level36}Uses:229 69 71 202 95 97Used by:303
Symbol 231 GraphicUses:107Used by:232
Symbol 232 MovieClip {Level26}Uses:231 75 73 71 69 202 95 97Used by:303
Symbol 233 GraphicUses:107Used by:234
Symbol 234 MovieClip {Level13}Uses:233 75 73 202 95 97Used by:303
Symbol 235 GraphicUses:107Used by:236
Symbol 236 MovieClip {Level08}Uses:235 75 73 202 95 97Used by:303
Symbol 237 GraphicUses:107Used by:238
Symbol 238 MovieClip {Level32}Uses:237 73 202 95 97Used by:303
Symbol 239 GraphicUses:107Used by:240 247 261 266 274 284 289 290
Symbol 240 MovieClip {Level28}Uses:239 75 73 202 95 97Used by:303
Symbol 241 GraphicUses:107Used by:242
Symbol 242 MovieClip {Level16}Uses:241 73 202 95 97Used by:303
Symbol 243 GraphicUses:107Used by:246
Symbol 244 TextUses:63Used by:245
Symbol 245 MovieClipUses:244Used by:246
Symbol 246 MovieClip {Level03}Uses:243 75 73 245 95 97Used by:303
Symbol 247 MovieClip {Level10}Uses:239 75 73 202 95 97Used by:303
Symbol 248 GraphicUses:108 107Used by:249
Symbol 249 MovieClip {Level19}Uses:248 75 71 69 73 202 95 97Used by:303
Symbol 250 GraphicUses:107Used by:251
Symbol 251 MovieClip {Level35}Uses:250 75 71 69 202 95 97Used by:303
Symbol 252 GraphicUses:107Used by:256
Symbol 253 TextUses:63Used by:255
Symbol 254 TextUses:63Used by:255
Symbol 255 MovieClipUses:253 254Used by:256
Symbol 256 MovieClip {Level09}Uses:252 71 61 255 95 97Used by:303
Symbol 257 GraphicUses:108Used by:261
Symbol 258 GraphicUses:108Used by:261
Symbol 259 GraphicUses:108Used by:261
Symbol 260 GraphicUses:108Used by:261
Symbol 261 MovieClip {Level34}Uses:239 202 257 73 258 259 61 69 260 95 97Used by:303
Symbol 262 GraphicUses:107Used by:263
Symbol 263 MovieClip {Level22}Uses:262 71 69 202 95 97Used by:303
Symbol 264 GraphicUses:107Used by:265
Symbol 265 MovieClip {Level06}Uses:264 71 69 202 95 97Used by:303
Symbol 266 MovieClip {Level18}Uses:239 75 73 202 95 97Used by:303
Symbol 267 GraphicUses:107Used by:268
Symbol 268 MovieClip {Level07}Uses:267 73 66 202 95 97Used by:303
Symbol 269 GraphicUses:107Used by:273
Symbol 270 GraphicUses:107Used by:271
Symbol 271 MovieClipUses:270Used by:273 283
Symbol 272 GraphicUses:107Used by:273
Symbol 273 MovieClip {Level05}Uses:269 271 272 69 202 95 97Used by:303
Symbol 274 MovieClip {Level24}Uses:239 75 71 69 202 95 97Used by:303
Symbol 275 GraphicUses:107Used by:276
Symbol 276 MovieClip {Level23}Uses:275 69 71 73 202 95 97Used by:303
Symbol 277 GraphicUses:107Used by:278
Symbol 278 MovieClip {Level21}Uses:277 73 66 61 202 95 97Used by:303
Symbol 279 GraphicUses:107Used by:280
Symbol 280 MovieClip {Level20}Uses:279 75 69 71 61 202 95 97Used by:303
Symbol 281 GraphicUses:107Used by:283
Symbol 282 GraphicUses:107Used by:283
Symbol 283 MovieClip {Level33}Uses:281 271 282 73 71 58 202 95 97Used by:303
Symbol 284 MovieClip {Level15}Uses:239 75 73 71 69 55 202 95 97Used by:303
Symbol 285 GraphicUses:107Used by:286
Symbol 286 MovieClip {Level29}Uses:285 69 71 73 202 95 97Used by:303
Symbol 287 GraphicUses:107Used by:288
Symbol 288 MovieClip {Level11}Uses:287 75 73 202 95 97Used by:303
Symbol 289 MovieClip {Level30}Uses:239 75 69 71 73 202 95 97Used by:303
Symbol 290 MovieClip {Level37}Uses:239 75 71 69 73 55 202 95 97Used by:303
Symbol 291 GraphicUses:107Used by:292
Symbol 292 MovieClip {Level31}Uses:291 202 75 73 95 97Used by:303
Symbol 293 GraphicUses:107Used by:294
Symbol 294 MovieClip {Level40}Uses:293 75 71 73 202 95 97Used by:303
Symbol 295 GraphicUses:107Used by:296
Symbol 296 MovieClip {LevelA}Uses:295 73 58 202 95 97Used by:303
Symbol 297 GraphicUses:107Used by:298
Symbol 298 MovieClip {LevelB}Uses:297 73 202 95 97Used by:303
Symbol 299 GraphicUses:107Used by:300
Symbol 300 MovieClip {LevelC}Uses:299 75 73 202 95 97Used by:303
Symbol 301 GraphicUses:107Used by:302
Symbol 302 MovieClip {LevelD}Uses:301 75 71 69 202 95 97Used by:303
Symbol 303 MovieClip {Pyro_fla.AssetsHolder_20}Uses:43 52 55 58 61 66 69 71 73 75 44 77 46 74 79 81 83 85 87 89 91 92 95 68 97 99 103 104 106 109 2 131 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 205 206 210 211 213 214 216 218 220 222 224 226 228 230 232 234 236 238 240 242 246 247 249 251 256 261 263 265 266 268 273 274 276 278 280 283 284 286 288 289 290 292 294 296 298 300 302Used by:Timeline
Symbol 304 GraphicUsed by:431 480
Symbol 305 FontUsed by:306 307
Symbol 306 TextUses:305Used by:431
Symbol 307 TextUses:305Used by:431
Symbol 308 SoundUsed by:431
Symbol 309 BitmapUsed by:310
Symbol 310 GraphicUses:309Used by:431
Symbol 311 BitmapUsed by:312
Symbol 312 GraphicUses:311Used by:431
Symbol 313 BitmapUsed by:314
Symbol 314 GraphicUses:313Used by:431
Symbol 315 BitmapUsed by:316
Symbol 316 GraphicUses:315Used by:431
Symbol 317 BitmapUsed by:318
Symbol 318 GraphicUses:317Used by:431
Symbol 319 BitmapUsed by:320
Symbol 320 GraphicUses:319Used by:431
Symbol 321 BitmapUsed by:322
Symbol 322 GraphicUses:321Used by:431
Symbol 323 BitmapUsed by:324
Symbol 324 GraphicUses:323Used by:431
Symbol 325 BitmapUsed by:326
Symbol 326 GraphicUses:325Used by:431
Symbol 327 BitmapUsed by:328
Symbol 328 GraphicUses:327Used by:431
Symbol 329 BitmapUsed by:330
Symbol 330 GraphicUses:329Used by:431
Symbol 331 BitmapUsed by:332
Symbol 332 GraphicUses:331Used by:431
Symbol 333 BitmapUsed by:334
Symbol 334 GraphicUses:333Used by:431
Symbol 335 BitmapUsed by:336
Symbol 336 GraphicUses:335Used by:431
Symbol 337 BitmapUsed by:338
Symbol 338 GraphicUses:337Used by:431
Symbol 339 BitmapUsed by:340
Symbol 340 GraphicUses:339Used by:431
Symbol 341 BitmapUsed by:342
Symbol 342 GraphicUses:341Used by:431
Symbol 343 BitmapUsed by:344
Symbol 344 GraphicUses:343Used by:431
Symbol 345 BitmapUsed by:346
Symbol 346 GraphicUses:345Used by:431
Symbol 347 BitmapUsed by:348
Symbol 348 GraphicUses:347Used by:431
Symbol 349 BitmapUsed by:350
Symbol 350 GraphicUses:349Used by:431
Symbol 351 BitmapUsed by:352
Symbol 352 GraphicUses:351Used by:431
Symbol 353 BitmapUsed by:354
Symbol 354 GraphicUses:353Used by:431
Symbol 355 BitmapUsed by:356
Symbol 356 GraphicUses:355Used by:431
Symbol 357 BitmapUsed by:358
Symbol 358 GraphicUses:357Used by:431
Symbol 359 BitmapUsed by:360
Symbol 360 GraphicUses:359Used by:431
Symbol 361 BitmapUsed by:362
Symbol 362 GraphicUses:361Used by:431
Symbol 363 BitmapUsed by:364
Symbol 364 GraphicUses:363Used by:431
Symbol 365 BitmapUsed by:366
Symbol 366 GraphicUses:365Used by:431
Symbol 367 BitmapUsed by:368
Symbol 368 GraphicUses:367Used by:431
Symbol 369 BitmapUsed by:370
Symbol 370 GraphicUses:369Used by:431
Symbol 371 BitmapUsed by:372
Symbol 372 GraphicUses:371Used by:431
Symbol 373 BitmapUsed by:374
Symbol 374 GraphicUses:373Used by:431
Symbol 375 BitmapUsed by:376
Symbol 376 GraphicUses:375Used by:431
Symbol 377 BitmapUsed by:378
Symbol 378 GraphicUses:377Used by:431
Symbol 379 BitmapUsed by:380
Symbol 380 GraphicUses:379Used by:431
Symbol 381 BitmapUsed by:382
Symbol 382 GraphicUses:381Used by:431
Symbol 383 BitmapUsed by:384
Symbol 384 GraphicUses:383Used by:431
Symbol 385 BitmapUsed by:386
Symbol 386 GraphicUses:385Used by:431
Symbol 387 BitmapUsed by:388
Symbol 388 GraphicUses:387Used by:431
Symbol 389 BitmapUsed by:390
Symbol 390 GraphicUses:389Used by:431
Symbol 391 BitmapUsed by:392
Symbol 392 GraphicUses:391Used by:431
Symbol 393 BitmapUsed by:394
Symbol 394 GraphicUses:393Used by:431
Symbol 395 BitmapUsed by:396
Symbol 396 GraphicUses:395Used by:431
Symbol 397 BitmapUsed by:398
Symbol 398 GraphicUses:397Used by:431
Symbol 399 BitmapUsed by:400
Symbol 400 GraphicUses:399Used by:431
Symbol 401 BitmapUsed by:402
Symbol 402 GraphicUses:401Used by:431
Symbol 403 BitmapUsed by:404
Symbol 404 GraphicUses:403Used by:431
Symbol 405 BitmapUsed by:406
Symbol 406 GraphicUses:405Used by:431
Symbol 407 BitmapUsed by:408
Symbol 408 GraphicUses:407Used by:431
Symbol 409 BitmapUsed by:410
Symbol 410 GraphicUses:409Used by:431
Symbol 411 BitmapUsed by:412
Symbol 412 GraphicUses:411Used by:431
Symbol 413 BitmapUsed by:414
Symbol 414 GraphicUses:413Used by:431
Symbol 415 BitmapUsed by:416
Symbol 416 GraphicUses:415Used by:431
Symbol 417 BitmapUsed by:418
Symbol 418 GraphicUses:417Used by:431
Symbol 419 BitmapUsed by:420
Symbol 420 GraphicUses:419Used by:431
Symbol 421 BitmapUsed by:422
Symbol 422 GraphicUses:421Used by:431
Symbol 423 BitmapUsed by:424
Symbol 424 GraphicUses:423Used by:431
Symbol 425 BitmapUsed by:426
Symbol 426 GraphicUses:425Used by:431
Symbol 427 BitmapUsed by:428
Symbol 428 GraphicUses:427Used by:431
Symbol 429 BitmapUsed by:430
Symbol 430 GraphicUses:429Used by:431
Symbol 431 MovieClip {DamijinLogo}Uses:304 306 307 308 310 312 314 316 318 320 322 324 326 328 330 332 334 336 338 340 342 344 346 348 350 352 354 356 358 360 362 364 366 368 370 372 374 376 378 380 382 384 386 388 390 392 394 396 398 400 402 404 406 408 410 412 414 416 418 420 422 424 426 428 430Used by:Timeline
Symbol 432 TextUses:63Used by:435
Symbol 433 TextUses:63Used by:435
Symbol 434 TextUses:63Used by:435
Symbol 435 ButtonUses:432 433 434 43Used by:Timeline
Symbol 436 GraphicUsed by:464
Symbol 437 GraphicUsed by:438
Symbol 438 MovieClipUses:437Used by:464
Symbol 439 GraphicUsed by:463
Symbol 440 GraphicUsed by:463
Symbol 441 GraphicUsed by:463
Symbol 442 GraphicUsed by:463
Symbol 443 GraphicUsed by:463
Symbol 444 GraphicUsed by:463
Symbol 445 GraphicUsed by:463
Symbol 446 GraphicUsed by:463
Symbol 447 GraphicUsed by:463
Symbol 448 GraphicUsed by:463
Symbol 449 GraphicUsed by:463
Symbol 450 GraphicUsed by:463
Symbol 451 GraphicUsed by:463
Symbol 452 GraphicUsed by:463
Symbol 453 GraphicUsed by:463
Symbol 454 GraphicUsed by:463
Symbol 455 GraphicUsed by:463
Symbol 456 GraphicUsed by:463
Symbol 457 GraphicUsed by:463
Symbol 458 GraphicUsed by:463
Symbol 459 GraphicUsed by:463
Symbol 460 GraphicUsed by:463
Symbol 461 GraphicUsed by:463
Symbol 462 GraphicUsed by:463
Symbol 463 MovieClip {Pyro_fla.GregLogo_Texts_117}Uses:439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462Used by:464
Symbol 464 MovieClip {Pyro_fla.GregLogo_Screen_115}Uses:436 438 463Used by:468
Symbol 465 GraphicUsed by:466
Symbol 466 MovieClipUses:465Used by:468
Symbol 467 Sound {MonitorOff}Used by:468
Symbol 468 MovieClip {GregLogo}Uses:464 466 467Used by:Timeline
Symbol 469 GraphicUsed by:470
Symbol 470 MovieClipUses:133 469Used by:Timeline
Symbol 471 TextUses:10Used by:483  Timeline
Symbol 472 TextUses:10Used by:481  Timeline
Symbol 473 TextUses:10Used by:485  Timeline
Symbol 474 TextUses:10Used by:486  Timeline
Symbol 475 EditableTextUses:63Used by:Timeline
Symbol 476 MovieClipUses:43Used by:481 483 485 486
Symbol 477 MovieClipUsed by:481 486
Symbol 478 GraphicUsed by:479
Symbol 479 MovieClipUses:478Used by:481 483 485 486
Symbol 480 MovieClipUses:304Used by:481 483 485 486
Symbol 481 MovieClip {Pyro_fla.Button_Instruction_120}Uses:476 43 477 472 479 480Used by:Timeline
Symbol 482 MovieClipUsed by:483
Symbol 483 MovieClip {Pyro_fla.Button_NewGame_125}Uses:476 43 482 471 479 480Used by:Timeline
Symbol 484 MovieClipUsed by:485
Symbol 485 MovieClip {Pyro_fla.Button_Credits_127}Uses:43 484 476 473 479 480Used by:Timeline
Symbol 486 MovieClip {Pyro_fla.Button_MoreGames_Main_129}Uses:476 43 477 474 479 480Used by:Timeline
Symbol 487 EditableTextUses:63Used by:Timeline
Symbol 488 GraphicUsed by:510
Symbol 489 TextUses:10Used by:492
Symbol 490 TextUses:10Used by:492
Symbol 491 TextUses:10Used by:492
Symbol 492 ButtonUses:489 490 491 43Used by:510
Symbol 493 EditableTextUses:10Used by:510
Symbol 494 TextUses:10Used by:497
Symbol 495 TextUses:10Used by:497
Symbol 496 TextUses:10Used by:497
Symbol 497 ButtonUses:494 495 496 43Used by:510
Symbol 498 TextUses:63Used by:510
Symbol 499 FontUsed by:500 507 533 544 554
Symbol 500 TextUses:499Used by:510
Symbol 501 BitmapUsed by:502
Symbol 502 GraphicUses:501Used by:503
Symbol 503 ButtonUses:502Used by:510 545
Symbol 504 EditableTextUses:10Used by:505
Symbol 505 MovieClip {BonusLevelButton}Uses:45 47 50 504Used by:510
Symbol 506 GraphicUsed by:509
Symbol 507 TextUses:499Used by:509
Symbol 508 GraphicUsed by:509
Symbol 509 MovieClipUses:506 507 508Used by:510
Symbol 510 MovieClip {game.ButtonContainer}Uses:488 492 493 497 498 500 503 52 505 509Used by:Timeline
Symbol 511 MovieClipUsed by:Timeline
Symbol 512 GraphicUsed by:526
Symbol 513 TextUses:10Used by:526
Symbol 514 TextUses:10Used by:517
Symbol 515 TextUses:10Used by:517
Symbol 516 TextUses:10Used by:517
Symbol 517 ButtonUses:514 515 516 43Used by:526
Symbol 518 TextUses:10Used by:521
Symbol 519 TextUses:10Used by:521
Symbol 520 TextUses:10Used by:521
Symbol 521 ButtonUses:518 519 520 43Used by:526
Symbol 522 TextUses:10Used by:525
Symbol 523 TextUses:10Used by:525
Symbol 524 TextUses:10Used by:525
Symbol 525 ButtonUses:522 523 524 43Used by:526  Timeline
Symbol 526 MovieClipUses:512 513 517 521 525Used by:Timeline
Symbol 527 GraphicUsed by:528
Symbol 528 MovieClipUses:527Used by:535
Symbol 529 EditableTextUses:10Used by:530
Symbol 530 MovieClipUses:529Used by:535
Symbol 531 GraphicUsed by:532
Symbol 532 MovieClipUses:531Used by:535
Symbol 533 TextUses:499Used by:535
Symbol 534 SoundUsed by:535
Symbol 535 MovieClip {Pyro_fla.AcedScreen_141}Uses:528 530 532 533 534Used by:Timeline
Symbol 536 TextUses:10Used by:Timeline
Symbol 537 TextUses:10Used by:Timeline
Symbol 538 TextUses:10Used by:Timeline
Symbol 539 TextUses:10Used by:Timeline
Symbol 540 TextUses:10Used by:Timeline
Symbol 541 FontUsed by:543 546 548 550
Symbol 542 FontUsed by:543
Symbol 543 TextUses:541 542Used by:545
Symbol 544 TextUses:499Used by:545
Symbol 545 MovieClipUses:543 544 503Used by:Timeline
Symbol 546 TextUses:541Used by:553
Symbol 547 GraphicUsed by:553
Symbol 548 TextUses:541Used by:553
Symbol 549 GraphicUsed by:553
Symbol 550 TextUses:541Used by:553
Symbol 551 GraphicUsed by:553
Symbol 552 GraphicUsed by:553
Symbol 553 ButtonUses:546 547 548 549 550 551 552Used by:557  Timeline
Symbol 554 TextUses:63 499Used by:557
Symbol 555 TextUses:63Used by:557
Symbol 556 EditableTextUses:63 111Used by:557
Symbol 557 MovieClipUses:554 555 556 553Used by:Timeline

Instance Names

"mochiClip"Frame 1Symbol 6 MovieClip
"loader"Frame 2Symbol 14 MovieClip {FlameLoader}
"kongLogo"Frame 2Symbol 42 MovieClip {Kong_Logo_Pyro}
"dLogo"Frame 13Symbol 431 MovieClip {DamijinLogo}
"btn_skip"Frame 13Symbol 435 Button
"gLogo"Frame 17Symbol 468 MovieClip {GregLogo}
"maskedFlame"Frame 21Symbol 470 MovieClip
"btn_Instruction"Frame 31Symbol 481 MovieClip {Pyro_fla.Button_Instruction_120}
"btn_NewGame"Frame 31Symbol 483 MovieClip {Pyro_fla.Button_NewGame_125}
"btn_Credits"Frame 31Symbol 485 MovieClip {Pyro_fla.Button_Credits_127}
"btn_Sponsor"Frame 31Symbol 486 MovieClip {Pyro_fla.Button_MoreGames_Main_129}
"levelSelector"Frame 41Symbol 510 MovieClip {game.ButtonContainer}
"fadeContainer"Frame 61Symbol 511 MovieClip
"deathScene"Frame 71Symbol 526 MovieClip
"acedScreen"Frame 71Symbol 535 MovieClip {Pyro_fla.AcedScreen_141}
"fadeContainer"Frame 72Symbol 511 MovieClip
"btn_Kong"Frame 161Symbol 525 Button
"creditScroll"Frame 181Symbol 545 MovieClip
"btn_Back"Frame 181Symbol 553 Button
"instruction"Frame 182Symbol 557 MovieClip
"flameContainer"Symbol 14 MovieClip {FlameLoader} Frame 1Symbol 13 MovieClip
"buttonDown"Symbol 52 MovieClip {game.LevelButton} Frame 1Symbol 45 MovieClip
"buttonUp"Symbol 52 MovieClip {game.LevelButton} Frame 1Symbol 47 MovieClip
"cover"Symbol 52 MovieClip {game.LevelButton} Frame 1Symbol 50 MovieClip
"numTxt"Symbol 52 MovieClip {game.LevelButton} Frame 1Symbol 51 EditableText
"powerUpHitArea"Symbol 55 MovieClip {BounceUpZone} Frame 1Symbol 54 MovieClip
"powerUpHitArea"Symbol 58 MovieClip {HalfSizeZone} Frame 1Symbol 57 MovieClip
"powerUpHitArea"Symbol 61 MovieClip {LongLineZone} Frame 1Symbol 60 MovieClip
"powerUpHitArea"Symbol 66 MovieClip {PlusOneZone} Frame 1Symbol 65 MovieClip
"torchHitArea"Symbol 69 MovieClip {LTorch} Frame 1Symbol 68 MovieClip {TorchHitArea}
"torchHitArea"Symbol 71 MovieClip {RTorch} Frame 1Symbol 68 MovieClip {TorchHitArea}
"torchHitArea"Symbol 73 MovieClip {Torch} Frame 1Symbol 68 MovieClip {TorchHitArea}
"dummy"Symbol 75 MovieClip {Crate} Frame 1Symbol 74 MovieClip
"buttonHitArea"Symbol 95 MovieClip {FireballInit} Frame 1Symbol 92 MovieClip {ButtonHitArea}
"display"Symbol 95 MovieClip {FireballInit} Frame 1Symbol 94 MovieClip
"gauge"Symbol 103 MovieClip {DragHandle} Frame 1Symbol 100 MovieClip
"lifeText"Symbol 131 MovieClip {HUD} Frame 1Symbol 112 EditableText
"percentText"Symbol 131 MovieClip {HUD} Frame 1Symbol 115 EditableText
"level"Symbol 131 MovieClip {HUD} Frame 1Symbol 116 EditableText
"dragHandle"Symbol 131 MovieClip {HUD} Frame 1Symbol 103 MovieClip {DragHandle}
"btn_Mute"Symbol 131 MovieClip {HUD} Frame 1Symbol 123 Button
"btn_Suicide"Symbol 131 MovieClip {HUD} Frame 1Symbol 130 Button
"instruction"Symbol 205 MovieClip {Level01} Frame 1Symbol 202 MovieClip
"instruction"Symbol 205 MovieClip {Level01} Frame 1Symbol 204 MovieClip
"fSprite"Symbol 205 MovieClip {Level01} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 210 MovieClip {Level02} Frame 1Symbol 209 MovieClip
"fSprite"Symbol 210 MovieClip {Level02} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 213 MovieClip {Level12} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 213 MovieClip {Level12} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 216 MovieClip {Level25} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 216 MovieClip {Level25} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 218 MovieClip {Level04} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 218 MovieClip {Level04} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 220 MovieClip {Level27} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 220 MovieClip {Level27} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 222 MovieClip {Level39} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 222 MovieClip {Level39} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 224 MovieClip {Level17} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 224 MovieClip {Level17} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 226 MovieClip {Level14} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 226 MovieClip {Level14} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 228 MovieClip {Level38} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 228 MovieClip {Level38} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 230 MovieClip {Level36} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 230 MovieClip {Level36} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 232 MovieClip {Level26} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 232 MovieClip {Level26} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 234 MovieClip {Level13} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 234 MovieClip {Level13} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 236 MovieClip {Level08} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 236 MovieClip {Level08} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 238 MovieClip {Level32} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 238 MovieClip {Level32} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 240 MovieClip {Level28} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 240 MovieClip {Level28} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 242 MovieClip {Level16} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 242 MovieClip {Level16} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 246 MovieClip {Level03} Frame 1Symbol 245 MovieClip
"fSprite"Symbol 246 MovieClip {Level03} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 247 MovieClip {Level10} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 247 MovieClip {Level10} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 249 MovieClip {Level19} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 249 MovieClip {Level19} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 251 MovieClip {Level35} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 251 MovieClip {Level35} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 256 MovieClip {Level09} Frame 1Symbol 255 MovieClip
"fSprite"Symbol 256 MovieClip {Level09} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 261 MovieClip {Level34} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 261 MovieClip {Level34} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 263 MovieClip {Level22} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 263 MovieClip {Level22} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 265 MovieClip {Level06} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 265 MovieClip {Level06} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 266 MovieClip {Level18} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 266 MovieClip {Level18} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 268 MovieClip {Level07} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 268 MovieClip {Level07} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 273 MovieClip {Level05} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 273 MovieClip {Level05} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 274 MovieClip {Level24} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 274 MovieClip {Level24} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 276 MovieClip {Level23} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 276 MovieClip {Level23} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 278 MovieClip {Level21} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 278 MovieClip {Level21} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 280 MovieClip {Level20} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 280 MovieClip {Level20} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 283 MovieClip {Level33} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 283 MovieClip {Level33} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 284 MovieClip {Level15} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 284 MovieClip {Level15} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 286 MovieClip {Level29} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 286 MovieClip {Level29} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 288 MovieClip {Level11} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 288 MovieClip {Level11} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 289 MovieClip {Level30} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 289 MovieClip {Level30} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 290 MovieClip {Level37} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 290 MovieClip {Level37} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 292 MovieClip {Level31} Frame 1Symbol 202 MovieClip
"instruction"Symbol 292 MovieClip {Level31} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 292 MovieClip {Level31} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 294 MovieClip {Level40} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 294 MovieClip {Level40} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 296 MovieClip {LevelA} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 296 MovieClip {LevelA} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 298 MovieClip {LevelB} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 298 MovieClip {LevelB} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 300 MovieClip {LevelC} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 300 MovieClip {LevelC} Frame 1Symbol 95 MovieClip {FireballInit}
"instruction"Symbol 302 MovieClip {LevelD} Frame 1Symbol 202 MovieClip
"fSprite"Symbol 302 MovieClip {LevelD} Frame 1Symbol 95 MovieClip {FireballInit}
"flameMask"Symbol 470 MovieClip Frame 1Symbol 133 MovieClip {TextMask}
"hitArea150"Symbol 481 MovieClip {Pyro_fla.Button_Instruction_120} Frame 1Symbol 476 MovieClip
"flameContainer"Symbol 481 MovieClip {Pyro_fla.Button_Instruction_120} Frame 1Symbol 477 MovieClip
"btn_Over"Symbol 481 MovieClip {Pyro_fla.Button_Instruction_120} Frame 1Symbol 479 MovieClip
"btn_Up"Symbol 481 MovieClip {Pyro_fla.Button_Instruction_120} Frame 1Symbol 480 MovieClip
"hitArea150"Symbol 483 MovieClip {Pyro_fla.Button_NewGame_125} Frame 1Symbol 476 MovieClip
"flameContainer"Symbol 483 MovieClip {Pyro_fla.Button_NewGame_125} Frame 1Symbol 482 MovieClip
"btn_Over"Symbol 483 MovieClip {Pyro_fla.Button_NewGame_125} Frame 1Symbol 479 MovieClip
"btn_Up"Symbol 483 MovieClip {Pyro_fla.Button_NewGame_125} Frame 1Symbol 480 MovieClip
"flameContainer"Symbol 485 MovieClip {Pyro_fla.Button_Credits_127} Frame 1Symbol 484 MovieClip
"hitArea150"Symbol 485 MovieClip {Pyro_fla.Button_Credits_127} Frame 1Symbol 476 MovieClip
"btn_Over"Symbol 485 MovieClip {Pyro_fla.Button_Credits_127} Frame 1Symbol 479 MovieClip
"btn_Up"Symbol 485 MovieClip {Pyro_fla.Button_Credits_127} Frame 1Symbol 480 MovieClip
"hitArea150"Symbol 486 MovieClip {Pyro_fla.Button_MoreGames_Main_129} Frame 1Symbol 476 MovieClip
"flameContainer"Symbol 486 MovieClip {Pyro_fla.Button_MoreGames_Main_129} Frame 1Symbol 477 MovieClip
"btn_Over"Symbol 486 MovieClip {Pyro_fla.Button_MoreGames_Main_129} Frame 1Symbol 479 MovieClip
"btn_Up"Symbol 486 MovieClip {Pyro_fla.Button_MoreGames_Main_129} Frame 1Symbol 480 MovieClip
"buttonDown"Symbol 505 MovieClip {BonusLevelButton} Frame 1Symbol 45 MovieClip
"buttonUp"Symbol 505 MovieClip {BonusLevelButton} Frame 1Symbol 47 MovieClip
"cover"Symbol 505 MovieClip {BonusLevelButton} Frame 1Symbol 50 MovieClip
"numTxt"Symbol 505 MovieClip {BonusLevelButton} Frame 1Symbol 504 EditableText
"btn_Play"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 492 Button
"time"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 493 EditableText
"btn_mainMenu"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 497 Button
"btn_Sponsor"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 503 Button
"button_01"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_02"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_03"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_04"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_05"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_06"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_07"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_08"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_09"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_10"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_11"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_12"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_13"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_14"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_15"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_16"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_17"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_18"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_19"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_20"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_21"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_22"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_23"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_24"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_25"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_26"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_27"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_28"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_29"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_30"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_31"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_32"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_33"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_34"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_35"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_36"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_37"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_38"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_39"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_40"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 52 MovieClip {game.LevelButton}
"button_A"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_B"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_C"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_D"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_E"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_F"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_G"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"button_H"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 505 MovieClip {BonusLevelButton}
"aced"Symbol 510 MovieClip {game.ButtonContainer} Frame 1Symbol 509 MovieClip
"btn_Retry"Symbol 526 MovieClip Frame 1Symbol 517 Button
"btn_MainMenu"Symbol 526 MovieClip Frame 1Symbol 521 Button
"btn_Kong"Symbol 526 MovieClip Frame 1Symbol 525 Button
"text"Symbol 530 MovieClip Frame 1Symbol 529 EditableText
"unlockBackground"Symbol 535 MovieClip {Pyro_fla.AcedScreen_141} Frame 1Symbol 528 MovieClip
"unlockText"Symbol 535 MovieClip {Pyro_fla.AcedScreen_141} Frame 1Symbol 530 MovieClip
"btn_Kong"Symbol 545 MovieClip Frame 1Symbol 503 Button
"btn_Back"Symbol 557 MovieClip Frame 1Symbol 553 Button

Special Tags

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

Labels

"damijinLogo"Frame 13
"gregLogo"Frame 17
"menuFrame"Frame 21
"levelSelect"Frame 41
"startGame"Frame 61
"totallyWon"Frame 82
"creditsScreen"Frame 181
"instructionScreen"Frame 182




http://swfchan.com/9/44538/info.shtml
Created: 6/5 -2019 22:39:53 Last modified: 6/5 -2019 22:39:53 Server time: 30/04 -2024 14:40:13