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

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

yohohocannon.swf

This is the info page for
Flash #118505

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


Text
<p align="right"><font face="Showcard Gothic" size="22" color="#ffcc99" letterSpacing="0.000000" kerning="1">75%</font></p>

choose level

<p align="center"><font face="Showcard Gothic" size="40" color="#b7562b" letterSpacing="0.000000" kerning="1">1</font></p>

<p align="left"><font face="Showcard Gothic" size="13" color="#b7562b" letterSpacing="0.000000" kerning="1">1000</font></p>

current level score:

<p align="left"><font face="Showcard Gothic" size="15" color="#993300" letterSpacing="0.000000" kerning="1">100000000</font></p>

collect

<p align="center"><font face="Showcard Gothic" size="40" color="#b7562b" letterSpacing="0.000000" kerning="1">2</font></p>

<p align="center"><font face="Showcard Gothic" size="40" color="#b7562b" letterSpacing="0.000000" kerning="1">3</font></p>

<p align="center"><font face="Showcard Gothic" size="40" color="#b7562b" letterSpacing="0.000000" kerning="1">4</font></p>

Close

close

next

next

Aha... see that? See? I meen that grey
blocks. You know what to do then.

sdgsodglsd;gj;sljgskjlkvjlkxjvvdsgsh
sdf;dskjfkjsdjsdlfkjsldjflsdjflsdfkjsl

MORE EXPLOSIVE GAMES :

score:

<p align="left"><font face="Showcard Gothic" size="19" color="#ffff99" letterSpacing="0.000000" kerning="1">1000</font></p>

MAP

MAP

<p align="center"><font face="Showcard Gothic" size="19" color="#991301" letterSpacing="0.000000" kerning="1">quit</font></p>

credits

credits

<p align="left"><font face="Showcard Gothic" size="34" color="#ffcc99" letterSpacing="0.000000" kerning="1">00</font></p>

<p align="left"><font face="Showcard Gothic" size="34" color="#ffcc99" letterSpacing="0.000000" kerning="1">00</font></p>

<p align="left"><font face="Showcard Gothic" size="34" color="#ffcc99" letterSpacing="0.000000" kerning="1">00</font></p>

Hey, Captain!
It seems we have good plunder today.
Now we can have fun and drink a lot of
rum! If you want to go back to sea ... just
give a whistle...yo-ho-ho!!!

your plunder:

shoot boxes
to drop down
the barrels

Just blow them all up and we 'll
get their rum... he-he. and gold too

sound:on

sound:on

Cap. See that red barrel?
That's it. You got it

Shots:

<p align="left"><font face="Showcard Gothic" size="19" color="#ffff99" letterSpacing="0.000000" kerning="1">10</font></p>

replay

replay

+100

continue

<p align="center"><font face="Showcard Gothic" size="14" color="#ff9900" letterSpacing="0.000000" kerning="1">continue</font></p>

sound:off

sound:off

EXPLOSIVE GAMES

LEVEL          COMPLETE

golden chest

Congratulations!
you get the

iron chest

Congratulations!
you get the

wooden chest

Congratulations!
you get the

<p align="center"><font face="Showcard Gothic" size="30" color="#ffcc99" letterSpacing="0.000000" kerning="1">00</font></p>

<p align="left"><font face="Showcard Gothic" size="20" color="#ae2817" letterSpacing="0.000000" kerning="1">your score: &nbsp;&nbsp;&nbsp;1000</font></p>

<p align="left"><font face="Showcard Gothic" size="20" color="#ae2817" letterSpacing="0.000000" kerning="1">shots made: &nbsp;&nbsp;&nbsp;100</font></p>

<p align="left"><font face="Showcard Gothic" size="20" color="#ae2817" letterSpacing="0.000000" kerning="1">Level time: &nbsp;&nbsp;&nbsp;100</font></p>

<p align="left"><font face="Showcard Gothic" size="20" color="#ae2817" letterSpacing="0.000000" kerning="1">level score: &nbsp;&nbsp;&nbsp;100</font></p>

replay

replay

To blow the cannon
shoot it several times.

tutorial level 1

Blow the barrel near the
cannon to destroy it quickly.

enemy cannons  damage your ship.
Try to destroy them as quickly as
you can.

tutorial level 2

you are jailed

level:

<p align="center"><font face="Showcard Gothic" size="19" color="#ffff99" letterSpacing="0.000000" kerning="1">30</font></p>

adjust
trajectory

shoot

use switch to
rotate cannon

Shoot this cannon
to make it shoot
with the same force

At last something interesting ... hicc ...
It seems that the switch controls that
connon mechanism. Shoot 'em both.

you can break
the gray brick blocks

Time:

<p align="left"><font face="Showcard Gothic" size="19" color="#ffff99" letterSpacing="0.000000" kerning="1">00 : 10</font></p>

... hicc ... My putrid mind tells me that we
need first to shoot that boxes ... hicc

Walkthrough

Walkthrough

Walkthrough

<p align="center"><font face="Showcard Gothic" size="29" color="#cc0000" letterSpacing="0.000000" kerning="1"><b>-100</b></font></p>

Credits

Programming

Kosushko Pavel

Graphics

Makarov Vladimir

<p align="center"><font face="Showcard Gothic" size="12" color="#ccff66" letterSpacing="0.000000" kerning="1"><a href="mailto:p.kosushko@gmail.com">p.kosushko@gmail.com</a></font></p>

<p align="center"><font face="Showcard Gothic" size="12" color="#ccff66" letterSpacing="0.000000" kerning="1"><a href="mailto:jamaykaman@yandex.ru">artjamayka@gmail.com</a></font></p>

To pass the level
destroy all enemy cannons.

tutorial level 3

play

play

Hey ho! captain. Aim right ahead
and you will blow them up

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.Collision.*; import Box2D.Common.Math.*; 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.y + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); var _local9:Number = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; 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; public function b2ShapeDef(){ type = b2Shape.e_unknownShape; 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 = 0xFFFF; public static const b2_invalid:uint = 0xFFFF; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; 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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _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 = b2_nullFeature; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 15
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID = 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.Common.Math.*; import Box2D.Collision.Shapes.*; 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.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _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 - _local21) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local13:Number = (_local11 - _local9); var _local14:Number = (_local12 - _local10); var _local15:Number = ((_local13 * _local13) + (_local14 * _local14)); var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop); var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); var _local18:Number = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(_local15); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local35:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; var _local14:b2Vec2 = _arg4[2]; var _local15:Number = _local6.x; var _local16:Number = _local6.y; var _local17:Number = _local7.x; var _local18:Number = _local7.y; var _local19:Number = _local8.x; var _local20:Number = _local8.y; var _local21:Number = (_local17 - _local15); var _local22:Number = (_local18 - _local16); var _local23:Number = (_local19 - _local15); var _local24:Number = (_local20 - _local16); var _local25:Number = (_local19 - _local17); var _local26:Number = (_local20 - _local18); var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22))); var _local28:Number = ((_local17 * _local21) + (_local18 * _local22)); var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24))); var _local30:Number = ((_local19 * _local23) + (_local20 * _local24)); var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26))); var _local32:Number = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; var _local33:Number = ((_local21 * _local24) - (_local22 * _local23)); var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; var _local38:Number = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); var _local39:Number = (_local36 * _local38); var _local40:Number = (_local37 * _local38); var _local41:Number = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local9:b2Point = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int = _arg3.m_type; var _local8:int = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 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.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local5:b2Vec2 = _arg3.p1; var _local6:Number = (_arg3.p2.x - _local5.x); var _local7:Number = (_arg3.p2.y - _local5.y); var _local8:Number = (p2.x - p1.x); var _local9:Number = (p2.y - p1.y); var _local10:Number = _local9; var _local11:Number = -(_local8); var _local12:Number = (100 * Number.MIN_VALUE); var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local6) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 27
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _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 function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 35
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; 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.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; public var m_manifold:b2Manifold; private var m0:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; var _local3:b2ManifoldPoint = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; var _local6:b2Body = m_shape1.m_body; var _local7:b2Body = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); var _local8:Array = [false, false]; var _local9:b2ContactPoint = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9); }; break; }; }; _local13++; }; if ((((_local11 == false)) && (!((_arg1 == null))))){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Add(_local9); }; _local2++; }; m_manifoldCount = 1; } else { m_manifoldCount = 0; }; if (_arg1 == null){ return; }; _local2 = 0; while (_local2 < m0.pointCount) { if (_local8[_local2]){ } else { _local5 = m0.points[_local2]; _local9.position = _local6.GetWorldPoint(_local5.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m0.normal); _local9.separation = _local5.separation; _local9.id.key = _local5.id._key; _arg1.Remove(_local9); }; _local2++; }; } override public function GetManifolds():Array{ return (m_manifolds); } public static function 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.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function 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.Dynamics.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Common.Math.*; public class b2DistanceJointDef extends b2JointDef { public var localAnchor1:b2Vec2; public var length:Number; public var dampingRatio:Number; public var localAnchor2:b2Vec2; public var frequencyHz:Number; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); var _local5:Number = (_arg4.x - _arg3.x); var _local6:Number = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 50
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Common.Math.*; 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 _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local2:b2Body = m_body1; var _local3:b2Body = m_body2; var _local4:Number = _local2.m_invMass; var _local5:Number = _local3.m_invMass; var _local6:Number = _local2.m_invI; var _local7:Number = _local3.m_invI; var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); var _local11:Number = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity); var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); var _local14:Number = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } override public function 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.Dynamics.*; import Box2D.Common.Math.*; public class b2PrismaticJointDef extends b2JointDef { public var motorSpeed:Number; public var localAxis1:b2Vec2; public var referenceAngle:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var maxMotorForce:Number; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 60
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Common.Math.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength1:Number; public var maxLength2:Number; public var length1:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var ratio:Number; public var length2:Number; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); var _local8:Number = (_arg5.x - _arg3.x); var _local9:Number = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); var _local10:Number = (_arg6.x - _arg4.x); var _local11:Number = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; var _local12:Number = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 62
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; import Box2D.Common.Math.*; 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.Dynamics.*; import Box2D.Common.Math.*; public class b2RevoluteJointDef extends b2JointDef { public var upperAngle:Number; public var enableMotor:Boolean; public var referenceAngle:Number; public var motorSpeed:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var lowerAngle:Number; public var maxMotorTorque:Number; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 64
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; public class b2Body { public var m_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_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.y + (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 GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22 = m_xf.R; var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.y - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function 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 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 GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function GetShapeList():b2Shape{ return (m_shapeList); } 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.Common.Math.*; import Box2D.Collision.Shapes.*; public class b2BodyDef { public var angularDamping:Number; public var angle:Number; public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var fixedRotation:Boolean; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 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.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function 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_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; 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.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; 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.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; 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.Collision.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; 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; if (_arg1 < 0){ _arg1 = 0; m_bodyCapacity = 0; }; 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.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.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; if (_local6 < 0){ _local6 = 0; m_bodyCount = 0; }; 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; if (_local9 < 0){ _local9 = 0; }; 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
//Aim (GameObjects.MapItems.Aim) package GameObjects.MapItems { import States.*; import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.media.*; public class Aim extends BaseObject implements IExplodable { private var m_sd:b2PolygonDef; private var m_was_exploded:Boolean;// = false public function Aim(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_aim(); m_body.m_userData = this; addChild(mc); } public function explode():void{ var _local1:Sound; var _local2:MovieClip; if (!m_was_exploded){ _local1 = new snd_expl0(); _local1.play(0, 0, new SoundTransform(0.7)); m_was_exploded = true; removeChild(mc); GamePlayState.getInstance().addToDestroyList(m_body); _local2 = new mc_explode(); _local2.x = (m_body.GetPosition().x * SCALE); _local2.y = (m_body.GetPosition().y * SCALE); m_world.GetGroundBody().GetUserData().addChild(_local2); ScoreProcessor.putScore(ScoreProcessor.N_CANNON_DESTR, _local2.x, _local2.y); GamePlayState.getInstance().levelProcessor.canonsLeft = (GamePlayState.getInstance().levelProcessor.canonsLeft - 1); }; } override protected function initBody():void{ var _local1:Number = (35 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local1 / SCALE)); m_sd.density = 0; m_sd.friction = 0.1; m_sd.filter.maskBits = 1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; m_was_exploded = false; } public function damage(_arg1:Number=2):void{ explode(); } } }//package GameObjects.MapItems
Section 76
//BarrelExplosive (GameObjects.MapItems.BarrelExplosive) package GameObjects.MapItems { import States.*; import flash.events.*; import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.media.*; import flash.utils.*; public class BarrelExplosive extends BaseObject implements IExplodable { private var m_sd:b2PolygonDef; private var m_expl_timer:Timer; public var m_was_exploded:Boolean;// = false public function BarrelExplosive(_arg1:b2World, _arg2:Number, _arg3:Number){ m_expl_timer = new Timer(100, 1); super(_arg1, _arg2, _arg3); initBody(); mc = new mc_barrel(); m_body.m_userData = this; addChild(mc); m_expl_timer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerCompl); } public function explode():void{ var _local1:Sound; var _local2:MovieClip; if (!m_was_exploded){ _local1 = new snd_expl0(); _local1.play(0, 0, new SoundTransform(0.7)); m_was_exploded = true; _local2 = new mc_explode(); _local2.x = (m_body.GetPosition().x * SCALE); _local2.y = (m_body.GetPosition().y * SCALE); GamePlayState.getInstance().addToDestroyList(m_body); m_world.GetGroundBody().GetUserData().addChild(_local2); ScoreProcessor.putScore(ScoreProcessor.N_BARREL_DESTR, _local2.x, _local2.y); m_expl_timer.start(); }; } override protected function initBody():void{ var _local1:Number = (24 / 2); var _local2:Number = (32 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 2.1; m_sd.friction = 0.2; m_sd.filter.maskBits = 1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; m_was_exploded = false; } private function onTimerCompl(_arg1:TimerEvent):void{ var _local3:b2Vec2; var _local4:Number; var _local2:b2Body = m_world.m_bodyList; while (_local2) { _local3 = new b2Vec2((_local2.GetPosition().x - m_body.GetPosition().x), (_local2.GetPosition().y - m_body.GetPosition().y)); if ((((_local3.Length() <= 2)) && ((((((((_local2.GetUserData().toString() == "[object Crate]")) || ((_local2.GetUserData().toString() == "[object BarrelExplosive]")))) || ((_local2.GetUserData().toString() == "[object CannonEnemy]")))) || ((_local2.GetUserData().toString() == "[object CannonEnemy2]")))))){ _local2.GetUserData().explode(); }; _local4 = ((1 / _local3.Length()) * 1); _local3.Normalize(); _local3.Multiply(1); _local2.ApplyImpulse(_local3, _local2.GetPosition()); GamePlayState.getInstance().levelProcessor.checkGameOver(); _local2 = _local2.m_next; }; } } }//package GameObjects.MapItems
Section 77
//BrickWall (GameObjects.MapItems.BrickWall) package GameObjects.MapItems { import Box2D.Dynamics.*; import flash.display.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class BrickWall extends BaseObject { private var m_sd:b2PolygonDef; public function BrickWall(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:MovieClip){ super(_arg1, _arg2, _arg3); initBody(); mc = _arg4; m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ var _local1:Number = (32 / 2); var _local2:Number = (32 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_sd.filter.groupIndex = -1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 78
//Chain (GameObjects.MapItems.Chain) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Chain extends BaseObject { private var m_length:Number; private var m_sd:b2PolygonDef; public function Chain(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number){ super(_arg1, _arg2, _arg3); m_length = _arg4; initBody(); if (m_length == 1){ mc = new mc_chain(); }; if (m_length == 0){ mc = new mc_chain_short(); }; if (m_length == 2){ mc = new mc_chain_long(); }; m_body.m_userData = this; addChild(mc); } override protected function initBody():void{ var _local1:Number = (5 / 2); var _local2:Number = (82 / 2); if (m_length == 1){ _local2 = (82 / 2); }; if (m_length == 0){ _local2 = (41 / 2); }; if (m_length == 2){ _local2 = (120 / 2); }; m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 20.4; m_sd.friction = 0.1; m_sd.filter.categoryBits = 2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; } } }//package GameObjects.MapItems
Section 79
//Corner1 (GameObjects.MapItems.Corner1) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Corner1 extends BaseObject { private var m_sd:b2PolygonDef; public function Corner1(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new wood_corner1(); m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ var _local2:Number; var _local1:Number = (32 / 2); _local2 = (32 / 2); m_sd = new b2PolygonDef(); m_sd.vertexCount = 3; m_sd.vertices[0] = new b2Vec2((_local1 / SCALE), (-(_local2) / SCALE)); m_sd.vertices[1] = new b2Vec2((_local1 / SCALE), (_local2 / SCALE)); m_sd.vertices[2] = new b2Vec2((-(_local1) / SCALE), (_local2 / SCALE)); m_sd.filter.groupIndex = -1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 80
//Corner2 (GameObjects.MapItems.Corner2) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Corner2 extends BaseObject { private var m_sd:b2PolygonDef; public function Corner2(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new wood_corner2(); m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ var _local2:Number; var _local1:Number = (32 / 2); _local2 = (32 / 2); m_sd = new b2PolygonDef(); m_sd.vertexCount = 3; m_sd.vertices[0] = new b2Vec2((_local1 / SCALE), (-(_local2) / SCALE)); m_sd.vertices[1] = new b2Vec2((_local1 / SCALE), (_local2 / SCALE)); m_sd.vertices[2] = new b2Vec2((-(_local1) / SCALE), (-(_local2) / SCALE)); m_sd.filter.groupIndex = -1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 81
//Corner3 (GameObjects.MapItems.Corner3) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Corner3 extends BaseObject { private var m_sd:b2PolygonDef; public function Corner3(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new wood_corner3(); m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ var _local2:Number; var _local1:Number = (32 / 2); _local2 = (32 / 2); m_sd = new b2PolygonDef(); m_sd.vertexCount = 3; m_sd.vertices[0] = new b2Vec2((-(_local1) / SCALE), (-(_local2) / SCALE)); m_sd.vertices[1] = new b2Vec2((_local1 / SCALE), (_local2 / SCALE)); m_sd.vertices[2] = new b2Vec2((-(_local1) / SCALE), (_local2 / SCALE)); m_sd.filter.groupIndex = -1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 82
//Corner4 (GameObjects.MapItems.Corner4) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Corner4 extends BaseObject { private var m_sd:b2PolygonDef; public function Corner4(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new wood_corner4(); m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ var _local2:Number; var _local1:Number = (32 / 2); _local2 = (32 / 2); m_sd = new b2PolygonDef(); m_sd.vertexCount = 3; m_sd.vertices[0] = new b2Vec2((-(_local1) / SCALE), (-(_local2) / SCALE)); m_sd.vertices[1] = new b2Vec2((_local1 / SCALE), (-(_local2) / SCALE)); m_sd.vertices[2] = new b2Vec2((-(_local1) / SCALE), (_local2 / SCALE)); m_sd.filter.groupIndex = -1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 83
//Crane (GameObjects.MapItems.Crane) package GameObjects.MapItems { import States.*; import flash.events.*; import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Crane extends BaseObject { private var m_sd:b2PolygonDef; private var m_obj:BaseObject; private var barrel:BarrelExplosive; private var m_chain:Chain; private var m_length:Number; private var m_j1:b2RevoluteJoint; private var m_j2:b2RevoluteJoint; public function Crane(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number){ super(_arg1, _arg2, _arg3); m_length = _arg4; initBody(); mc = new mc_crane_mid(); m_body.m_userData = this; addChild(mc); addEventListener(Event.ENTER_FRAME, update); } override protected function initBody():void{ var _local1:Number = (66 / 2); var _local2:Number = (10 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); if (m_length == 0){ m_chain = new Chain(m_world, (m_start_x - 28), (m_start_y + 21), m_length); }; if (m_length == 1){ m_chain = new Chain(m_world, (m_start_x - 28), (m_start_y + 43), m_length); }; if (m_length == 2){ m_chain = new Chain(m_world, (m_start_x - 28), (m_start_y + 63), m_length); }; var _local3:b2RevoluteJointDef = new b2RevoluteJointDef(); var _local4:b2Vec2 = new b2Vec2(((m_start_x - 27) / SCALE), ((m_start_y + 2) / SCALE)); m_world.GetGroundBody().GetUserData().addChild(m_chain); _local3.Initialize(m_body, m_chain.body, _local4); _local3.collideConnected = false; m_j1 = b2RevoluteJoint(m_world.CreateJoint(_local3)); if (m_length == 0){ m_obj = new JailChamber(m_world, (m_start_x - 28), (m_start_y + 60)); }; if (m_length == 1){ m_obj = new JailChamber(m_world, (m_start_x - 28), (m_start_y + 87)); }; if (m_length == 2){ m_obj = new JailChamber(m_world, (m_start_x - 28), (m_start_y + 120)); }; GamePlayState.getInstance().m_layers["level"].addChild(m_obj); _local3 = new b2RevoluteJointDef(); if (m_length == 0){ _local4 = new b2Vec2(((m_start_x - 28) / SCALE), ((m_start_y + 38) / SCALE)); }; if (m_length == 1){ _local4 = new b2Vec2(((m_start_x - 28) / SCALE), ((m_start_y + 60) / SCALE)); }; if (m_length == 2){ _local4 = new b2Vec2(((m_start_x - 28) / SCALE), ((m_start_y + 100) / SCALE)); }; _local3.Initialize(m_chain.body, m_obj.body, _local4); _local3.collideConnected = false; m_j2 = b2RevoluteJoint(m_world.CreateJoint(_local3)); } private function update(_arg1:Event):void{ m_obj.body.SetAngularVelocity(0); m_obj.body.SetXForm(m_obj.body.GetPosition(), 0); } override public function restore():void{ super.restore(); m_body.m_userData = this; } override public function setPos(_arg1:Number, _arg2:Number=-1):void{ super.setPos(_arg1, _arg2); if (m_length == 0){ m_obj.body.SetXForm(new b2Vec2((_arg1 - (28 / SCALE)), ((m_start_y + 60) / SCALE)), m_obj.body.GetAngle()); }; if (m_length == 1){ m_obj.body.SetXForm(new b2Vec2((_arg1 - (28 / SCALE)), ((m_start_y + 87) / SCALE)), m_obj.body.GetAngle()); }; if (m_length == 2){ m_obj.body.SetXForm(new b2Vec2((_arg1 - (28 / SCALE)), ((m_start_y + 120) / SCALE)), m_obj.body.GetAngle()); }; } } }//package GameObjects.MapItems
Section 84
//CrashedBlock (GameObjects.MapItems.CrashedBlock) package GameObjects.MapItems { import States.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class CrashedBlock extends BaseObject { private var m_sd:b2PolygonDef; public function CrashedBlock(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_crashed_block(); m_body.m_userData = this; addChild(mc); } override protected function initBody():void{ var _local1:Number = (32 / 2); var _local2:Number = (32 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; mc.gotoAndStop(1); } public function crash():void{ if (mc.currentFrame != 4){ mc.gotoAndStop((mc.currentFrame + 1)); } else { GamePlayState.getInstance().addToDestroyList(m_body); }; } } }//package GameObjects.MapItems
Section 85
//Crate (GameObjects.MapItems.Crate) package GameObjects.MapItems { import States.*; import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.media.*; public class Crate extends BaseObject implements IExplodable { private var m_sd:b2PolygonDef; private var m_was_exploded:Boolean;// = false public function Crate(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_crate(); m_body.m_userData = this; addChild(mc); } public function explode():void{ var _local1:Sound; var _local2:MovieClip; if (!m_was_exploded){ _local1 = new snd_crate_crash(); _local1.play(0, 0, new SoundTransform(0.8)); m_was_exploded = true; _local2 = new mc_crate_explode(); _local2.x = (m_body.GetPosition().x * SCALE); _local2.y = (m_body.GetPosition().y * SCALE); m_world.GetGroundBody().GetUserData().addChild(_local2); ScoreProcessor.putScore(ScoreProcessor.N_CRATE_DESTR, _local2.x, _local2.y); GamePlayState.getInstance().addToDestroyList(m_body); }; } override protected function initBody():void{ var _local1:Number = (28 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local1 / SCALE)); m_sd.density = 1.4; m_sd.friction = 0.1; m_sd.filter.maskBits = 1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; m_was_exploded = false; } } }//package GameObjects.MapItems
Section 86
//FortBasement (GameObjects.MapItems.FortBasement) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class FortBasement extends BaseObject { private var m_sd:b2PolygonDef; public function FortBasement(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_fort_basement(); m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ var _local1:Number; var _local2:Number; _local1 = (390 / 2); _local2 = (126 / 2); m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_sd = new b2PolygonDef(); m_sd.SetAsOrientedBox((_local1 / SCALE), (_local2 / SCALE), new b2Vec2(((17 / SCALE) / 2), 0)); m_sd.density = 0; m_sd.friction = 0.3; m_body.CreateShape(m_sd); m_sd = new b2PolygonDef(); m_sd.vertexCount = 3; m_sd.vertices[0] = new b2Vec2(((17 - _local1) / SCALE), (-(_local2) / SCALE)); m_sd.vertices[1] = new b2Vec2(((17 - _local1) / SCALE), ((_local2 - 50) / SCALE)); m_sd.vertices[2] = new b2Vec2(((-27 - _local1) / SCALE), ((_local2 - 50) / SCALE)); m_sd.density = 0; m_sd.friction = 0.3; m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 87
//JailChamber (GameObjects.MapItems.JailChamber) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class JailChamber extends BaseObject { private var m_sd:b2PolygonDef; public function JailChamber(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_jail_chamber(); m_body.m_userData = this; addChild(mc); } override protected function initBody():void{ var _local1:Number = (40 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local1 / SCALE)); m_sd.density = 3; m_sd.friction = 0.1; m_sd.filter.maskBits = 1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; } } }//package GameObjects.MapItems
Section 88
//MetalBox (GameObjects.MapItems.MetalBox) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class MetalBox extends BaseObject { private var m_sd:b2PolygonDef; public function MetalBox(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_metal_box(); m_body.m_userData = this; addChild(mc); } override protected function initBody():void{ var _local1:Number = (32 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local1 / SCALE)); m_sd.density = 10.4; m_sd.friction = 0.1; m_sd.filter.maskBits = 1; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; } } }//package GameObjects.MapItems
Section 89
//Mill (GameObjects.MapItems.Mill) package GameObjects.MapItems { import States.*; import Box2D.Dynamics.*; import Gameplay.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Mill extends BaseObject { private var m_sd:b2PolygonDef; private var m_wheel:MillWheel; public function Mill(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); m_body.m_userData = this; } override protected function initBody():void{ var _local1:Number = (8 / 2); var _local2:Number = (8 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); m_wheel = new MillWheel(m_world, m_start_x, m_start_y); GamePlayState.getInstance().m_layers["level"].addChild(m_wheel); var _local3:b2RevoluteJointDef = new b2RevoluteJointDef(); var _local4:b2Vec2 = new b2Vec2((m_start_x / SCALE), (m_start_y / SCALE)); _local3.Initialize(m_body, m_wheel.body, _local4); _local3.collideConnected = false; m_world.CreateJoint(_local3); } override public function setPos(_arg1:Number, _arg2:Number=-1):void{ super.setPos(_arg1, _arg2); m_wheel.body.SetXForm(new b2Vec2(_arg1, _arg2), m_wheel.body.GetAngle()); } override public function restore():void{ m_start_x = (m_x - LevelParser.X_FORT_DISPL); initBody(); m_body.m_userData = this; } } }//package GameObjects.MapItems
Section 90
//MillWheel (GameObjects.MapItems.MillWheel) package GameObjects.MapItems { import Box2D.Dynamics.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class MillWheel extends BaseObject { private var m_sd:b2CircleDef; public function MillWheel(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_mill(); m_body.m_userData = mc; addChild(mc); } override protected function initBody():void{ m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_sd = new b2CircleDef(); m_sd.radius = (8.5 / SCALE); m_sd.density = 20.2; m_sd.friction = 0.2; m_body.CreateShape(m_sd); var _local1:b2PolygonDef = new b2PolygonDef(); _local1.SetAsOrientedBox((2 / SCALE), (14 / SCALE), new b2Vec2(0, (-20 / SCALE)), 0); _local1.density = 20.2; _local1.friction = 0.2; m_body.CreateShape(_local1); _local1.SetAsOrientedBox((2 / SCALE), (14 / SCALE), new b2Vec2((-19 / SCALE), (-5 / SCALE)), ((-75 * 3.14) / 180)); _local1.density = 20.2; _local1.friction = 0.2; m_body.CreateShape(_local1); _local1.SetAsOrientedBox((2 / SCALE), (14 / SCALE), new b2Vec2((18 / SCALE), (-5 / SCALE)), ((75 * 3.14) / 180)); _local1.density = 20.2; _local1.friction = 0.2; m_body.CreateShape(_local1); _local1.SetAsOrientedBox((2 / SCALE), (14 / SCALE), new b2Vec2((11 / SCALE), (17 / SCALE)), ((145 * 3.14) / 180)); _local1.density = 20.2; _local1.friction = 0.2; m_body.CreateShape(_local1); _local1.SetAsOrientedBox((2 / SCALE), (14 / SCALE), new b2Vec2((-12 / SCALE), (16 / SCALE)), ((220 * 3.14) / 180)); _local1.density = 20.2; _local1.friction = 0.2; m_body.CreateShape(_local1); m_body.SetMassFromShapes(); } } }//package GameObjects.MapItems
Section 91
//Switch (GameObjects.MapItems.Switch) package GameObjects.MapItems { import States.*; import Box2D.Dynamics.*; import Box2D.Collision.Shapes.*; import GameObjects.*; public class Switch extends BaseObject { private var m_sd:b2PolygonDef; private var m_type:Number; public function Switch(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:Number){ super(_arg1, _arg2, _arg3); m_type = _arg4; initBody(); if (m_type == 0){ mc = new mc_switch(); }; if (m_type == 1){ mc = new mc_switch1(); }; if (m_type == 2){ mc = new mc_switch2(); }; m_body.m_userData = this; addChild(mc); } override protected function initBody():void{ var _local1:Number = (30 / 2); var _local2:Number = (18 / 2); if (m_type == 2){ _local1 = (18 / 2); _local2 = (30 / 2); }; m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } public function switchOn():void{ mc.gotoAndPlay(2); GamePlayState.getInstance().levelProcessor.rotateSwitchCannons(); } override public function restore():void{ super.restore(); m_body.m_userData = this; } } }//package GameObjects.MapItems
Section 92
//SwitchedCannon (GameObjects.MapItems.SwitchedCannon) package GameObjects.MapItems { import States.*; import flash.events.*; import Box2D.Dynamics.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.utils.*; import flash.geom.*; public class SwitchedCannon extends BaseObject { private var m_sd:b2PolygonDef; private var m_allow_rotation:Boolean;// = true private var m_rotate_forward:Boolean;// = true private var m_timer_delay:Timer; private var m_next_rotation:Number;// = 0 private var m_power:Number; private var m_timer_shoot_delay:Timer; public function SwitchedCannon(_arg1:b2World, _arg2:Number, _arg3:Number){ var _world = _arg1; var _x = _arg2; var _y = _arg3; m_timer_delay = new Timer(200, 1); m_timer_shoot_delay = new Timer(100, 1); super(_world, _x, _y); initBody(); mc = new mc_switchcannon(); m_body.m_userData = this; addChild(mc); MovieClip(mc["mc_cannon"]).rotation = 0; mc["mc_cannon"]["mc_expl"].stop(); mc["mc_cannon"]["mc_expl"].visible = false; addEventListener(Event.ENTER_FRAME, update); m_timer_delay.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_allow_rotation = true; }); m_timer_shoot_delay.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ shoot(); }); } private function update(_arg1:Event):void{ var _local2:Number = 15; if (MovieClip(mc["mc_cannon"]).rotation > m_next_rotation){ _local2 = (_local2 * -1); }; if (MovieClip(mc["mc_cannon"]).rotation != m_next_rotation){ MovieClip(mc["mc_cannon"]).rotation = (MovieClip(mc["mc_cannon"]).rotation + _local2); }; if (mc["mc_cannon"]["mc_expl"].currentFrame == 13){ mc["mc_cannon"]["mc_expl"].stop(); mc["mc_cannon"]["mc_expl"].visible = false; }; } public function rotate():void{ m_timer_delay.start(); if (m_allow_rotation){ if (m_rotate_forward){ m_next_rotation = (m_next_rotation + 45); } else { m_next_rotation = (m_next_rotation - 45); }; if (m_next_rotation == 90){ m_rotate_forward = false; }; if (m_next_rotation == -90){ m_rotate_forward = true; }; m_allow_rotation = false; }; } public function startShootTimer(_arg1:Number):void{ m_power = _arg1; trace(m_power); m_timer_shoot_delay.start(); } override protected function initBody():void{ var _local1:Number = (34 / 2); var _local2:Number = (22 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; MovieClip(mc["mc_cannon"]).rotation = 0; } private function shoot():void{ mc["mc_cannon"]["mc_expl"].visible = true; mc["mc_cannon"]["mc_expl"].gotoAndPlay(1); MovieClip(mc["mc_cannon"]).rotation = m_next_rotation; var _local1:Number = MovieClip(mc["mc_cannon"]).rotation; var _local2:Point = new Point(mc["mc_cannon"]["mc_expl"].x, mc["mc_cannon"]["mc_expl"].y); _local2 = mc["mc_cannon"]["mc_expl"].localToGlobal(_local2); m_body.ApplyForce(new b2Vec2(-300, 300), m_body.GetPosition()); var _local3:SwitchCannonBall = new SwitchCannonBall(m_world, _local2.x, _local2.y, this); GamePlayState.getInstance().m_layers["gui"].addChild(_local3); var _local4:b2Vec2 = new b2Vec2(0, -1); _local4.MulM(new b2Mat22(((_local1 * 3.14) / 180))); _local4.Multiply((m_power * 1.8)); _local3.body.SetLinearVelocity(_local4); } } }//package GameObjects.MapItems
Section 93
//SwitchedCannon1 (GameObjects.MapItems.SwitchedCannon1) package GameObjects.MapItems { import States.*; import flash.events.*; import Box2D.Dynamics.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.utils.*; import flash.geom.*; public class SwitchedCannon1 extends BaseObject { private var m_sd:b2PolygonDef; private var m_allow_rotation:Boolean;// = true private var m_rotate_forward:Boolean;// = false private var m_timer_delay:Timer; private var m_next_rotation:Number;// = 0 private var m_power:Number; private var m_timer_shoot_delay:Timer; public function SwitchedCannon1(_arg1:b2World, _arg2:Number, _arg3:Number){ var _world = _arg1; var _x = _arg2; var _y = _arg3; m_timer_delay = new Timer(200, 1); m_timer_shoot_delay = new Timer(100, 1); super(_world, _x, _y); initBody(); mc = new mc_switchcannon1(); m_body.m_userData = this; addChild(mc); MovieClip(mc["mc_cannon"]).rotation = 0; mc["mc_cannon"]["mc_expl"].stop(); mc["mc_cannon"]["mc_expl"].visible = false; addEventListener(Event.ENTER_FRAME, update); m_timer_delay.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_allow_rotation = true; }); m_timer_shoot_delay.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ shoot(); }); } private function update(_arg1:Event):void{ var _local2:Number = 15; if (MovieClip(mc["mc_cannon"]).rotation > m_next_rotation){ _local2 = (_local2 * -1); }; if (MovieClip(mc["mc_cannon"]).rotation != m_next_rotation){ MovieClip(mc["mc_cannon"]).rotation = (MovieClip(mc["mc_cannon"]).rotation + _local2); }; if (mc["mc_cannon"]["mc_expl"].currentFrame == 13){ mc["mc_cannon"]["mc_expl"].stop(); mc["mc_cannon"]["mc_expl"].visible = false; }; } public function rotate():void{ m_timer_delay.start(); if (m_allow_rotation){ if (m_rotate_forward){ m_next_rotation = (m_next_rotation + 45); } else { m_next_rotation = (m_next_rotation - 45); }; if (m_next_rotation == -180){ m_rotate_forward = true; }; if (m_next_rotation == 0){ m_rotate_forward = false; }; m_allow_rotation = false; }; } public function startShootTimer(_arg1:Number):void{ m_power = _arg1; m_timer_shoot_delay.start(); } override protected function initBody():void{ var _local1:Number = (22 / 2); var _local2:Number = (34 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; MovieClip(mc["mc_cannon"]).rotation = 0; } private function shoot():void{ mc["mc_cannon"]["mc_expl"].visible = true; mc["mc_cannon"]["mc_expl"].gotoAndPlay(1); MovieClip(mc["mc_cannon"]).rotation = m_next_rotation; var _local1:Number = MovieClip(mc["mc_cannon"]).rotation; var _local2:Point = new Point(mc["mc_cannon"]["mc_expl"].x, mc["mc_cannon"]["mc_expl"].y); _local2 = mc["mc_cannon"]["mc_expl"].localToGlobal(_local2); m_body.ApplyForce(new b2Vec2(-300, 300), m_body.GetPosition()); var _local3:SwitchCannonBall = new SwitchCannonBall(m_world, _local2.x, _local2.y, this); GamePlayState.getInstance().m_layers["gui"].addChild(_local3); var _local4:b2Vec2 = new b2Vec2(0, -1); _local4.MulM(new b2Mat22(((_local1 * 3.14) / 180))); _local4.Multiply((m_power * 1.8)); _local3.body.SetLinearVelocity(_local4); } } }//package GameObjects.MapItems
Section 94
//SwitchedCannon2 (GameObjects.MapItems.SwitchedCannon2) package GameObjects.MapItems { import States.*; import flash.events.*; import Box2D.Dynamics.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.utils.*; import flash.geom.*; public class SwitchedCannon2 extends BaseObject { private var m_sd:b2PolygonDef; private var m_allow_rotation:Boolean;// = true private var m_rotate_forward:Boolean;// = true private var m_timer_delay:Timer; private var m_next_rotation:Number;// = 0 private var m_power:Number; private var m_timer_shoot_delay:Timer; public function SwitchedCannon2(_arg1:b2World, _arg2:Number, _arg3:Number){ var _world = _arg1; var _x = _arg2; var _y = _arg3; m_timer_delay = new Timer(200, 1); m_timer_shoot_delay = new Timer(100, 1); super(_world, _x, _y); initBody(); mc = new mc_switchcannon2(); m_body.m_userData = this; addChild(mc); MovieClip(mc["mc_cannon"]).rotation = 0; mc["mc_cannon"]["mc_expl"].stop(); mc["mc_cannon"]["mc_expl"].visible = false; addEventListener(Event.ENTER_FRAME, update); m_timer_delay.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_allow_rotation = true; }); m_timer_shoot_delay.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ shoot(); }); } private function update(_arg1:Event):void{ var _local2:Number = 15; if (MovieClip(mc["mc_cannon"]).rotation > m_next_rotation){ _local2 = (_local2 * -1); }; if (MovieClip(mc["mc_cannon"]).rotation != m_next_rotation){ MovieClip(mc["mc_cannon"]).rotation = (MovieClip(mc["mc_cannon"]).rotation + _local2); }; if (mc["mc_cannon"]["mc_expl"].currentFrame == 13){ mc["mc_cannon"]["mc_expl"].stop(); mc["mc_cannon"]["mc_expl"].visible = false; }; } public function rotate():void{ m_timer_delay.start(); if (m_allow_rotation){ if (m_rotate_forward){ m_next_rotation = (m_next_rotation + 45); } else { m_next_rotation = (m_next_rotation - 45); }; if (m_next_rotation == 0){ m_rotate_forward = true; }; if (m_next_rotation == 180){ m_rotate_forward = false; }; m_allow_rotation = false; }; } public function startShootTimer(_arg1:Number):void{ m_power = _arg1; m_timer_shoot_delay.start(); } override protected function initBody():void{ var _local1:Number = (22 / 2); var _local2:Number = (34 / 2); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 0; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } override public function restore():void{ super.restore(); m_body.m_userData = this; MovieClip(mc["mc_cannon"]).rotation = 0; } private function shoot():void{ mc["mc_cannon"]["mc_expl"].visible = true; mc["mc_cannon"]["mc_expl"].gotoAndPlay(1); MovieClip(mc["mc_cannon"]).rotation = m_next_rotation; var _local1:Number = MovieClip(mc["mc_cannon"]).rotation; var _local2:Point = new Point(mc["mc_cannon"]["mc_expl"].x, mc["mc_cannon"]["mc_expl"].y); _local2 = mc["mc_cannon"]["mc_expl"].localToGlobal(_local2); m_body.ApplyForce(new b2Vec2(-300, 300), m_body.GetPosition()); var _local3:SwitchCannonBall = new SwitchCannonBall(m_world, _local2.x, _local2.y, this); GamePlayState.getInstance().m_layers["gui"].addChild(_local3); var _local4:b2Vec2 = new b2Vec2(0, -1); _local4.MulM(new b2Mat22(((_local1 * 3.14) / 180))); _local4.Multiply((m_power * 1.8)); _local3.body.SetLinearVelocity(_local4); } } }//package GameObjects.MapItems
Section 95
//BaseObject (GameObjects.BaseObject) package GameObjects { import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Common.Math.*; public class BaseObject extends MovieClip { protected const SCALE:Number = 30; protected var m_world:b2World; protected var m_bd:b2BodyDef; protected var m_x:Number; protected var m_start_x:Number; protected var m_start_y:Number; protected var mc:MovieClip; protected var m_body:b2Body; public function BaseObject(_arg1:b2World, _arg2:Number, _arg3:Number){ m_bd = new b2BodyDef(); m_world = _arg1; m_x = _arg2; m_start_x = _arg2; m_start_y = _arg3; } protected function initBody():void{ } public function get body():b2Body{ return (m_body); } public function restore():void{ m_start_x = (m_x - LevelParser.X_FORT_DISPL); initBody(); addChild(mc); m_body.m_userData = mc; this.visible = true; mc.visible = true; } public function setPos(_arg1:Number, _arg2:Number=-1):void{ var _local3:Number = m_body.GetAngle(); m_body.SetXForm(new b2Vec2(_arg1, _arg2), _local3); } } }//package GameObjects
Section 96
//Cannonball (GameObjects.Cannonball) package GameObjects { import States.*; import flash.events.*; import Box2D.Dynamics.*; import flash.display.*; import Box2D.Collision.Shapes.*; import flash.media.*; import flash.utils.*; public class Cannonball extends BaseObject implements IExplodable { private var m_has_been_collised:Boolean;// = false protected var m_sd:b2CircleDef; private var m_timer:Timer; public function Cannonball(_arg1:b2World, _arg2:Number, _arg3:Number){ var _local6:Sound; m_timer = new Timer(7000, 1); super(_arg1, _arg2, _arg3); var _local4:Number = 5; m_sd = new b2CircleDef(); m_sd.radius = (_local4 / SCALE); m_sd.density = 8; m_sd.friction = 0.6; m_sd.restitution = 0.3; m_sd.filter.maskBits = 1; m_sd.filter.groupIndex = -5; m_bd.position.Set((_arg2 / SCALE), (_arg3 / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); m_body.SetBullet(true); var _local5:MovieClip = new mc_cannonball(); m_body.m_userData = this; this.x = _arg2; this.y = _arg3; addChild(_local5); addEventListener(Event.ENTER_FRAME, update); if ((((((((_arg2 > 0)) && ((_arg2 < 700)))) && ((_arg3 > 0)))) && ((_arg3 < 400)))){ _local6 = new snd_expl1(); _local6.play(0, 0, new SoundTransform(0.4)); }; } public function stopTimer():void{ m_timer.stop(); } public function startTimer():void{ if (!m_has_been_collised){ m_has_been_collised = true; m_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:TimerEvent):void{ explode(); }); m_timer.start(); }; } public function explode():void{ var _local1:MovieClip = new mc_bullet_explode(); _local1.x = (m_body.GetPosition().x * SCALE); _local1.y = (m_body.GetPosition().y * SCALE); m_body.GetWorld().GetGroundBody().GetUserData().addChild(_local1); GamePlayState.getInstance().addToDestroyList(m_body); } private function update(_arg1:Event):void{ if (m_body.IsSleeping()){ GamePlayState.getInstance().addToDestroyList(m_body); }; } } }//package GameObjects
Section 97
//CannonEnemy (GameObjects.CannonEnemy) package GameObjects { import States.*; import flash.events.*; import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import flash.geom.*; public class CannonEnemy extends BaseObject implements IExplodable { private var m_was_exploded:Boolean;// = false private var m_shape:b2Shape; private var m_next_angle:Number;// = 0 private var h_2:Number;// = 15.5 private var m_sd:b2PolygonDef; private var m_ash:MovieClip; private var w_2:Number;// = 18.5 private var m_prev_m_x:Number; private var m_prev_m_y:Number; private var m_health:Number;// = 49 private var m_power:Number;// = 0 private var m_do_shoot:Boolean;// = false private var m_is_enabled:Boolean; public function CannonEnemy(_arg1:b2World, _arg2:Number, _arg3:Number){ m_ash = new mc_ash(); super(_arg1, _arg2, _arg3); initBody(); mc = new mc_cannon_enemy(); m_body.m_userData = this; addChild(mc); mc["m_gun"]["mc_expl"].stop(); mc["m_gun"]["mc_expl"].visible = false; mc["m_gun"]["mc_reload"].gotoAndStop(50); mc["mc_health"].gotoAndStop(1); addEventListener(Event.ENTER_FRAME, update); } public function remove():void{ if (m_was_exploded){ m_world.GetGroundBody().GetUserData().removeChild(m_ash); } else { removeChild(mc); GamePlayState.getInstance().addToDestroyList(m_body); }; } private function update(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Point; var _local6:EnemyCannonball; var _local7:b2Vec2; if (!GamePlayState.getInstance().m_is_paused){ if (mc["m_gun"]["mc_expl"].currentFrame == 13){ mc["m_gun"]["mc_expl"].stop(); mc["m_gun"]["mc_expl"].visible = false; }; if (mc["m_gun"]["mc_reload"].currentFrame == 50){ mc["m_gun"]["mc_reload"].stop(); m_is_enabled = true; }; if (b2Math.b2RandomRange(1, 400) < 5){ m_do_shoot = true; m_next_angle = Math.round(b2Math.b2RandomRange(0, 65)); }; if (((((m_do_shoot) && (m_is_enabled))) && (!((GamePlayState.getInstance().levelProcessor.m_cur_level == 0))))){ _local2 = 2; _local3 = MovieClip(mc["m_gun"]).rotation; if (m_next_angle > _local3){ _local3 = (_local3 + _local2); if (m_next_angle <= _local3){ m_next_angle = _local3; }; }; if (m_next_angle < _local3){ _local3 = (_local3 - _local2); if (m_next_angle >= _local3){ m_next_angle = _local3; }; }; MovieClip(mc["m_gun"]).rotation = _local3; if (m_next_angle == MovieClip(mc["m_gun"]).rotation){ m_do_shoot = false; mc["m_gun"]["mc_expl"].gotoAndPlay(1); mc["m_gun"]["mc_expl"].visible = true; MovieClip(mc["m_gun"]).rotation = m_next_angle; m_power = b2Math.b2RandomRange(50, 80); _local4 = MovieClip(mc["m_gun"]).rotation; _local5 = new Point(mc["m_gun"]["mc_expl"].x, mc["m_gun"]["mc_expl"].y); _local5 = mc["m_gun"]["mc_expl"].localToGlobal(_local5); m_body.ApplyForce(new b2Vec2(-300, 300), m_body.GetPosition()); _local6 = new EnemyCannonball(m_world, _local5.x, _local5.y); GamePlayState.getInstance().m_layers["gui"].addChild(_local6); _local7 = new b2Vec2(-1, 0); _local7.MulM(new b2Mat22(((_local4 * 3.14) / 180))); _local7.Multiply((m_power * 0.2)); _local6.body.SetLinearVelocity(_local7); }; }; }; } override public function restore():void{ super.restore(); m_body.m_userData = this; try { if (m_was_exploded){ m_world.GetGroundBody().GetUserData().removeChild(m_ash); }; } catch(e:Error) { }; m_was_exploded = false; m_health = 49; mc["mc_health"].gotoAndStop(1); createJoint(); } override protected function initBody():void{ m_sd = new b2PolygonDef(); m_sd.SetAsBox((w_2 / SCALE), (h_2 / SCALE)); m_sd.density = 20; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_shape = m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } public function explode():void{ var _local1:MovieClip; if (!m_was_exploded){ m_was_exploded = true; removeChild(mc); GamePlayState.getInstance().addToDestroyList(m_body); m_ash.x = (m_body.GetPosition().x * SCALE); m_ash.y = (m_body.GetPosition().y * SCALE); m_world.GetGroundBody().GetUserData().addChild(m_ash); _local1 = new mc_explode(); _local1.x = (m_body.GetPosition().x * SCALE); _local1.y = (m_body.GetPosition().y * SCALE); m_world.GetGroundBody().GetUserData().addChild(_local1); ScoreProcessor.putScore(ScoreProcessor.N_CANNON_DESTR, _local1.x, _local1.y); GamePlayState.getInstance().levelProcessor.canonsLeft = (GamePlayState.getInstance().levelProcessor.canonsLeft - 1); }; } public function damage(_arg1:Number=2):void{ mc["m_gun"]["mc_reload"].gotoAndPlay(1); if (GamePlayState.getInstance().levelProcessor.m_cur_level == 0){ _arg1 = 25; }; m_health = (m_health - _arg1); mc["mc_health"].gotoAndStop((50 - m_health)); if (m_health <= 0){ explode(); }; } public function createJoint():void{ var _local1:b2DistanceJointDef = new b2DistanceJointDef(); var _local2:b2Vec2 = body.GetPosition(); var _local3:b2Vec2 = new b2Vec2((body.GetPosition().x / SCALE), ((body.GetPosition().y + h_2) / SCALE)); _local1.Initialize(m_body, m_world.GetGroundBody(), _local2, _local3); _local1.collideConnected = true; m_world.CreateJoint(_local1); } } }//package GameObjects
Section 98
//CannonEnemy2 (GameObjects.CannonEnemy2) package GameObjects { import States.*; import flash.events.*; import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import flash.geom.*; public class CannonEnemy2 extends BaseObject implements IExplodable { private var m_was_exploded:Boolean;// = false private var m_shape:b2Shape; private var m_next_angle:Number;// = 0 private var h_2:Number;// = 15.5 private var m_sd:b2PolygonDef; private var m_ash:MovieClip; private var w_2:Number;// = 18.5 private var m_prev_m_x:Number; private var m_prev_m_y:Number; private var m_health:Number;// = 49 private var m_power:Number;// = 0 private var m_do_shoot:Boolean;// = false private var m_is_enabled:Boolean; public function CannonEnemy2(_arg1:b2World, _arg2:Number, _arg3:Number){ m_ash = new mc_ash(); super(_arg1, _arg2, _arg3); initBody(); mc = new mc_cannon2_enemy(); m_body.m_userData = this; addChild(mc); mc["m_gun"]["mc_expl"].stop(); mc["m_gun"]["mc_expl"].visible = false; mc["m_gun"]["mc_reload"].gotoAndStop(50); addEventListener(Event.ENTER_FRAME, update); } public function remove():void{ if (m_was_exploded){ m_world.GetGroundBody().GetUserData().removeChild(m_ash); } else { removeChild(mc); GamePlayState.getInstance().addToDestroyList(m_body); }; } private function update(_arg1:Event):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Point; var _local6:EnemyCannonball; var _local7:b2Vec2; if (!GamePlayState.getInstance().m_is_paused){ if (mc["m_gun"]["mc_expl"].currentFrame == 13){ mc["m_gun"]["mc_expl"].stop(); mc["m_gun"]["mc_expl"].visible = false; }; if (mc["m_gun"]["mc_reload"].currentFrame == 50){ mc["m_gun"]["mc_reload"].stop(); m_is_enabled = true; }; if (b2Math.b2RandomRange(1, 400) < 5){ m_do_shoot = true; m_next_angle = Math.round(b2Math.b2RandomRange(0, 65)); }; if (((((m_do_shoot) && (m_is_enabled))) && (!((GamePlayState.getInstance().levelProcessor.m_cur_level == 0))))){ _local2 = 2; _local3 = MovieClip(mc["m_gun"]).rotation; if (m_next_angle > _local3){ _local3 = (_local3 + _local2); if (m_next_angle <= _local3){ m_next_angle = _local3; }; }; if (m_next_angle < _local3){ _local3 = (_local3 - _local2); if (m_next_angle >= _local3){ m_next_angle = _local3; }; }; MovieClip(mc["m_gun"]).rotation = _local3; if (m_next_angle == MovieClip(mc["m_gun"]).rotation){ m_do_shoot = false; mc["m_gun"]["mc_expl"].gotoAndPlay(1); mc["m_gun"]["mc_expl"].visible = true; MovieClip(mc["m_gun"]).rotation = m_next_angle; m_power = b2Math.b2RandomRange(50, 80); _local4 = MovieClip(mc["m_gun"]).rotation; _local5 = new Point(mc["m_gun"]["mc_expl"].x, mc["m_gun"]["mc_expl"].y); _local5 = mc["m_gun"]["mc_expl"].localToGlobal(_local5); m_body.ApplyForce(new b2Vec2(-300, 300), m_body.GetPosition()); _local6 = new EnemyCannonball(m_world, _local5.x, _local5.y); GamePlayState.getInstance().m_layers["gui"].addChild(_local6); _local7 = new b2Vec2(-1, 0); _local7.MulM(new b2Mat22(((_local4 * 3.14) / 180))); _local7.Multiply((m_power * 0.2)); _local6.body.SetLinearVelocity(_local7); }; }; }; } override public function restore():void{ super.restore(); m_body.m_userData = this; try { if (m_was_exploded){ m_world.GetGroundBody().GetUserData().removeChild(m_ash); }; } catch(e:Error) { }; m_was_exploded = false; createJoint(); } override protected function initBody():void{ m_sd = new b2PolygonDef(); m_sd.SetAsBox((w_2 / SCALE), (h_2 / SCALE)); m_sd.density = 20; m_sd.friction = 0.2; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_shape = m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); } public function explode():void{ var _local1:MovieClip; if (!m_was_exploded){ m_was_exploded = true; removeChild(mc); GamePlayState.getInstance().addToDestroyList(m_body); m_ash.x = (m_body.GetPosition().x * SCALE); m_ash.y = (m_body.GetPosition().y * SCALE); m_world.GetGroundBody().GetUserData().addChild(m_ash); _local1 = new mc_explode(); _local1.x = (m_body.GetPosition().x * SCALE); _local1.y = (m_body.GetPosition().y * SCALE); m_world.GetGroundBody().GetUserData().addChild(_local1); ScoreProcessor.putScore(ScoreProcessor.N_CANNON_DESTR, _local1.x, _local1.y); GamePlayState.getInstance().levelProcessor.canonsLeft = (GamePlayState.getInstance().levelProcessor.canonsLeft - 1); }; } public function damage(_arg1:Number=2):void{ mc["m_gun"]["mc_reload"].gotoAndPlay(1); } public function createJoint():void{ var _local1:b2DistanceJointDef = new b2DistanceJointDef(); var _local2:b2Vec2 = body.GetPosition(); var _local3:b2Vec2 = new b2Vec2((body.GetPosition().x / SCALE), ((body.GetPosition().y + h_2) / SCALE)); _local1.Initialize(m_body, m_world.GetGroundBody(), _local2, _local3); _local1.collideConnected = true; m_world.CreateJoint(_local1); } } }//package GameObjects
Section 99
//CannonPlayer (GameObjects.CannonPlayer) package GameObjects { import States.*; import flash.events.*; import Box2D.Dynamics.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; import flash.utils.*; import flash.geom.*; public class CannonPlayer extends BaseObject { private var m_ship:ShipPlayers; private var m_d:b2Vec2; private var h_2:Number;// = 15.5 private var m_start_point:Point; private var m_sd:b2PolygonDef; private var w_2:Number;// = 18.5 private var m_mc_traectory:MovieClip; private var m_prev_m_y:Number;// = 0 private var m_timer:Timer; private var m_power:Number;// = 40 private var m_prev_m_x:Number;// = 0 private var m_points:Array; private var m_is_enabled:Boolean;// = false public function CannonPlayer(_arg1:b2World, _arg2:ShipPlayers, _arg3:Number, _arg4:Number){ var _world = _arg1; var _ship = _arg2; var _x = _arg3; var _y = _arg4; m_timer = new Timer(300, 1); m_mc_traectory = new MovieClip(); m_points = new Array(); super(_world, _x, _y); m_ship = _ship; initBody(); mc = new mc_cannon_player(); m_body.m_userData = mc; addChild(mc); mc["m_gun"]["mc_expl"].stop(); mc["m_gun"]["mc_expl"].visible = false; mc["m_gun"]["mc_arrow"].visible = false; m_body.m_userData["m_gun"]["mc_reload"].gotoAndStop(50); mc.addChild(m_mc_traectory); m_mc_traectory.visible = false; var i:Number = 0; while (i != 30) { m_points[i] = new dot(); m_mc_traectory.addChild(m_points[i]); i = (i + 1); }; m_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ GamePlayState.getInstance().nextCannon(); }); addEventListener(Event.ADDED_TO_STAGE, function (_arg1:Event):void{ stage.addEventListener(MouseEvent.MOUSE_MOVE, onMMove); stage.addEventListener(MouseEvent.CLICK, onMUp); }); addEventListener(Event.ENTER_FRAME, update); } private function buildTraectory(_arg1:b2Vec2):void{ var _local2:Number = MovieClip(m_body.m_userData["m_gun"]).rotation; m_d = new b2Vec2(1, 0); m_d.MulM(new b2Mat22(((_local2 * 3.14) / 180))); m_d.Multiply((m_power * 0.2)); var _local3:b2Vec2 = new b2Vec2(-1, 0); var _local4:Number = Math.acos((b2Math.b2Dot(_arg1, _local3) / (_arg1.Length() * _local3.Length()))); var _local5:Number = (((m_d.Length() * m_d.Length()) * Math.sin((2 * _local4))) / 10.2); var _local6:Number = ((((m_d.Length() * m_d.Length()) * Math.sin(_local4)) * Math.sin(_local4)) / 20.4); m_start_point = new Point(m_body.m_userData["m_gun"]["mc_expl"].x, m_body.m_userData["m_gun"]["mc_expl"].y); m_start_point = m_body.m_userData["m_gun"]["mc_expl"].localToGlobal(m_start_point); var _local7:Point = m_body.m_userData.globalToLocal(m_start_point); m_points[0].x = _local7.x; m_points[0].y = _local7.y; m_points[1].x = (_local7.x + ((_local5 * SCALE) / 2)); m_points[1].y = (_local7.y - (_local6 * SCALE)); m_points[2].x = (_local7.x + (_local5 * SCALE)); m_points[2].y = _local7.y; var _local8:Number = ((m_points[2].y - ((((m_points[2].x * (m_points[1].y - m_points[0].y)) + (m_points[1].x * m_points[0].y)) - (m_points[0].x * m_points[1].y)) / (m_points[1].x - m_points[0].x))) / ((m_points[2].x * ((m_points[2].x - m_points[0].x) - m_points[1].x)) + (m_points[0].x * m_points[1].x))); var _local9:Number = (((m_points[1].y - m_points[0].y) / (m_points[1].x - m_points[0].x)) - (_local8 * (m_points[0].x + m_points[1].x))); var _local10:Number = ((((m_points[1].x * m_points[0].y) - (m_points[0].x * m_points[1].y)) / (m_points[1].x - m_points[0].x)) + ((_local8 * m_points[0].x) * m_points[1].x)); var _local11:Number = ((mouseX - mc.x) / m_points.length); var _local12:Number = 0; while (_local12 != m_points.length) { m_points[_local12].x = (m_points[0].x + ((_local11 * _local12) * 3)); m_points[_local12].y = ((((_local8 * m_points[_local12].x) * m_points[_local12].x) + (_local9 * m_points[_local12].x)) + _local10); m_points[_local12].scaleX = (1 - (_local12 / m_points.length)); m_points[_local12].scaleY = (1 - (_local12 / m_points.length)); m_points[_local12].alpha = (1 - (_local12 / m_points.length)); m_points[_local12].alpha = (m_points[_local12].alpha * (1 - (m_points[_local12].x / (550 - mc.x)))); _local12++; }; } private function update(_arg1:Event):void{ if (m_body.m_userData["m_gun"]["mc_expl"].currentFrame == 13){ m_body.m_userData["m_gun"]["mc_expl"].stop(); m_body.m_userData["m_gun"]["mc_expl"].visible = false; }; if (m_body.m_userData["m_gun"]["mc_reload"].currentFrame == 50){ m_body.m_userData["m_gun"]["mc_reload"].stop(); }; } public function enable():void{ m_is_enabled = true; m_body.m_userData["m_gun"]["mc_arrow"].visible = false; onMMove(null); m_mc_traectory.visible = true; } private function onMDown(_arg1:MouseEvent):void{ if (m_is_enabled){ m_prev_m_x = mouseX; m_prev_m_y = mouseY; m_body.m_userData["m_gun"]["mc_arrow"].visible = true; stage.addEventListener(MouseEvent.MOUSE_MOVE, onMMove); stage.addEventListener(MouseEvent.MOUSE_UP, onMUp); }; } override protected function initBody():void{ m_sd = new b2PolygonDef(); m_sd.SetAsBox((w_2 / SCALE), (h_2 / SCALE)); m_sd.density = 20; m_sd.friction = 0.2; m_sd.filter.groupIndex = -5; m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); var _local1:b2DistanceJointDef = new b2DistanceJointDef(); var _local2:b2Vec2 = new b2Vec2((m_start_x / SCALE), (m_start_y / SCALE)); var _local3:b2Vec2 = new b2Vec2((m_start_x / SCALE), ((m_start_y + h_2) / SCALE)); _local1.Initialize(m_body, m_ship.body, _local2, _local3); _local1.collideConnected = true; m_world.CreateJoint(_local1); } public function disable():void{ m_is_enabled = false; m_body.m_userData["m_gun"]["mc_arrow"].visible = false; } private function onMUp(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Cannonball; if (((((((m_is_enabled) && (GamePlayState.getInstance().m_allow_shooting))) && ((mouseX > 90)))) && (!(GamePlayState.getInstance().m_is_paused)))){ _local2 = MovieClip(m_body.m_userData["m_gun"]).rotation; _local3 = new Cannonball(m_world, m_start_point.x, m_start_point.y); _local3.body.SetLinearVelocity(m_d); GamePlayState.getInstance().m_layers["player"].addChild(_local3); m_body.ApplyForce(new b2Vec2(-300, 300), m_body.GetLocalCenter()); m_body.m_userData["m_gun"]["mc_arrow"].visible = false; m_body.m_userData["m_gun"]["mc_expl"].visible = true; m_body.m_userData["m_gun"]["mc_expl"].gotoAndPlay(1); m_body.m_userData["m_gun"]["mc_reload"].gotoAndPlay(1); m_is_enabled = false; m_mc_traectory.visible = false; m_timer.start(); GamePlayState.getInstance().levelProcessor.addShot(); }; } private function onMMove(_arg1:MouseEvent):void{ var _local2:Number; var _local3:Number; var _local4:Point; var _local5:b2Vec2; var _local6:b2Vec2; var _local7:Number; var _local8:Number; if (((m_is_enabled) && (!(GamePlayState.getInstance().m_is_paused)))){ _local2 = (m_prev_m_x - mouseX); _local3 = (m_prev_m_y - mouseY); _local4 = m_body.m_userData["m_center"].localToGlobal(new Point(m_body.m_userData["m_center"].x, m_body.m_userData["m_center"].y)); _local5 = new b2Vec2(((_local4.x / SCALE) - (mouseX / SCALE)), ((_local4.y / SCALE) - (mouseY / SCALE))); _local6 = new b2Vec2(-1, 0); _local7 = ((Math.acos((b2Math.b2Dot(_local5, _local6) / (_local5.Length() * _local6.Length()))) / 3.14) * 180); if ((mouseY / SCALE) < (_local4.y / SCALE)){ _local7 = (_local7 * -1); }; if ((((_local7 > -90)) && ((_local7 < 0)))){ MovieClip(m_body.m_userData["m_gun"]).rotation = _local7; }; m_power = (_local5.Length() * 10); if (m_power < 40){ m_power = 40; }; if (m_power > 140){ m_power = 140; }; _local8 = (m_power / 100); m_body.m_userData["m_gun"]["mc_arrow"].scaleX = (_local8 * 2); m_prev_m_x = mouseX; m_prev_m_y = mouseY; if ((((mouseY < mc.y)) && ((mouseX > mc.x)))){ buildTraectory(_local5); }; }; } } }//package GameObjects
Section 100
//EnemyCannonball (GameObjects.EnemyCannonball) package GameObjects { import Box2D.Dynamics.*; public class EnemyCannonball extends Cannonball { public function EnemyCannonball(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); m_sd.filter.groupIndex = 5; } } }//package GameObjects
Section 101
//IExplodable (GameObjects.IExplodable) package GameObjects { public interface IExplodable { function explode():void; } }//package GameObjects
Section 102
//ShipPlayers (GameObjects.ShipPlayers) package GameObjects { import Box2D.Dynamics.*; import flash.display.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.Shapes.*; public class ShipPlayers extends BaseObject { private var m_sd:b2PolygonDef; private var m_joint0:b2DistanceJoint; private var m_joint1:b2DistanceJoint; public function ShipPlayers(_arg1:b2World, _arg2:Number, _arg3:Number){ super(_arg1, _arg2, _arg3); initBody(); mc = new mc_ship_player(); m_body.m_userData = this; addChild(mc); hideWaves(); } public function getWavesMC():MovieClip{ return (mc["mc_wave"]); } override protected function initBody():void{ var _local1:Number; _local1 = (260 / 2); var _local2:Number = (54 / 2); m_bd.position.Set((m_start_x / SCALE), (m_start_y / SCALE)); m_body = m_world.CreateBody(m_bd); m_sd = new b2PolygonDef(); m_sd.SetAsBox((_local1 / SCALE), (_local2 / SCALE)); m_sd.density = 2; m_sd.friction = 0.2; m_body.CreateShape(m_sd); m_sd = new b2PolygonDef(); m_sd.SetAsOrientedBox((33 / SCALE), (17 / SCALE), new b2Vec2((-105 / SCALE), (-44 / SCALE))); m_sd.density = 2; m_sd.friction = 0.2; m_body.CreateShape(m_sd); m_sd = new b2PolygonDef(); m_sd.SetAsOrientedBox((10 / SCALE), (10 / SCALE), new b2Vec2((125 / SCALE), (-30 / SCALE))); m_sd.density = 2; m_sd.friction = 0.2; m_body.CreateShape(m_sd); m_body.SetMassFromShapes(); var _local3:b2DistanceJointDef = new b2DistanceJointDef(); var _local4:b2Vec2 = new b2Vec2(((m_start_x - (_local1 * 2)) / SCALE), ((m_start_y - (_local2 * 2)) / SCALE)); var _local5:b2Vec2 = new b2Vec2(((m_start_x - _local1) / SCALE), ((m_start_y - _local2) / SCALE)); _local3.Initialize(m_body, m_world.GetGroundBody(), _local5, _local4); m_joint0 = (m_world.CreateJoint(_local3) as b2DistanceJoint); _local4 = new b2Vec2(((m_start_x + (_local1 * 2)) / SCALE), ((m_start_y - (_local2 * 2)) / SCALE)); _local5 = new b2Vec2(((m_start_x + _local1) / SCALE), ((m_start_y - _local2) / SCALE)); _local3.Initialize(m_body, m_world.GetGroundBody(), _local5, _local4); m_joint1 = (m_world.CreateJoint(_local3) as b2DistanceJoint); } public function showWaves():void{ mc["mc_wave"].gotoAndPlay(1); mc["mc_wave"].visible = true; } override public function restore():void{ super.restore(); m_body.m_userData = this; } public function hideWaves():void{ mc["mc_wave"].stop(); mc["mc_wave"].visible = false; } } }//package GameObjects
Section 103
//SwitchCannonBall (GameObjects.SwitchCannonBall) package GameObjects { import Box2D.Dynamics.*; public class SwitchCannonBall extends Cannonball { public var m_parent:BaseObject; public function SwitchCannonBall(_arg1:b2World, _arg2:Number, _arg3:Number, _arg4:BaseObject){ super(_arg1, _arg2, _arg3); m_parent = _arg4; m_sd.filter.groupIndex = 5; } } }//package GameObjects
Section 104
//ChoseLevelWnd (Gameplay.ChoseLevelWnd) package Gameplay { import States.*; import flash.events.*; import flash.display.*; import flash.text.*; public class ChoseLevelWnd extends MovieClip { private var m_is_showing:Boolean;// = false private var m_is_hiding:Boolean;// = false private var m_cur_part:Number;// = 0 private var m_this:MovieClip; private var m_cur_level:Number;// = -1 private var mc_wnd:MovieClip; public function ChoseLevelWnd(){ mc_wnd = new mc_choose_level_interface(); super(); addEventListener(Event.ENTER_FRAME, update); alpha = 0; m_this = this; mc_wnd.x = 101; mc_wnd.y = 32; addChild(mc_wnd); reinitButtons(); SimpleButton(mc_wnd["m_bt_close"]).addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ m_this.hide(); GamePlayState.getInstance().allowShooting(); }); var l:Number = 0; while (l != 4) { MovieClip(mc_wnd[("bt_lev" + l)]).addEventListener(MouseEvent.MOUSE_OVER, function (_arg1:MouseEvent):void{ if (MovieClip(_arg1.currentTarget).currentFrame != 5){ MovieClip(_arg1.currentTarget).gotoAndStop(2); m_cur_level = (Number(String(_arg1.currentTarget.name).charAt(6)) + (m_cur_part * 4)); mc_wnd["m_cur_score"].text = GamePlayState.getInstance().gameProgress.getScoreForLevel((m_cur_level + 1)); mc_wnd["m_golden_score"].text = GamePlayState.getInstance().gameProgress.levelsScoreTable[m_cur_level]["gold"]; mc_wnd["m_metal_score"].text = GamePlayState.getInstance().gameProgress.levelsScoreTable[m_cur_level]["metal"]; }; }); MovieClip(mc_wnd[("bt_lev" + l)]).addEventListener(MouseEvent.MOUSE_OUT, function (_arg1:MouseEvent):void{ if (MovieClip(_arg1.currentTarget).currentFrame != 5){ MovieClip(_arg1.currentTarget).gotoAndStop(1); }; }); MovieClip(mc_wnd[("bt_lev" + l)]).addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ if (MovieClip(_arg1.currentTarget).currentFrame != 5){ if (m_cur_level > 0){ m_cur_level = (m_cur_level + 2); }; hide(); if (GamePlayState.getInstance().levelProcessor.m_cur_level == m_cur_level){ GamePlayState.getInstance().levelProcessor.restartLevel(); } else { if (GamePlayState.getInstance().levelProcessor.m_cur_level == 29){ GamePlayState.getInstance().levelProcessor.m_cur_level = (m_cur_level - 1); GamePlayState.getInstance().levelProcessor.nextLevel(); } else { IngameGUI(GamePlayState.getInstance().m_layers["gui"]).disableReplay(); GamePlayState.getInstance().levelProcessor.destroyFort(m_cur_level); }; }; if (GamePlayState.getInstance().levelProcessor.m_cur_level == -1){ GamePlayState.getInstance().levelProcessor.m_is_ship_moving = true; GamePlayState.getInstance().levelProcessor.m_is_fort_being_destroyed = true; IngameGUI(GamePlayState.getInstance().m_layers["gui"]).toGame(); IngameGUI(GamePlayState.getInstance().m_layers["gui"]).disableReplay(); }; }; }); l = (l + 1); }; var i:Number = 0; while (i != 7) { MovieClip(mc_wnd[("bt_p" + i)]).buttonMode = true; MovieClip(mc_wnd[("bt_p" + i)]).stop(); MovieClip(mc_wnd[("bt_p" + i)]).addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ var _local2:Number; var _local3:Number; if (m_cur_part != Number(String(_arg1.currentTarget.name).charAt(4))){ _local2 = 0; while (_local2 != 7) { MovieClip(mc_wnd[("bt_p" + _local2)]).gotoAndStop(1); _local2++; }; m_cur_part = Number(String(_arg1.currentTarget.name).charAt(4)); MovieClip(_arg1.currentTarget).gotoAndStop(2); reinitButtons(); _local3 = 0; while (_local3 != 4) { if (((!((mc_wnd[("bt_lev" + _local3)].currentFrame == 5))) && (!((mc_wnd[("bt_lev" + _local3)]["m_tf"] == null))))){ TextField(mc_wnd[("bt_lev" + _local3)]["m_tf"]).text = ("" + (((m_cur_part * 4) + _local3) + 1)); }; _local3++; }; }; }); MovieClip(mc_wnd[("bt_p" + i)]).addEventListener(MouseEvent.MOUSE_OVER, function (_arg1:MouseEvent):void{ if (m_cur_part != Number(String(_arg1.currentTarget.name).charAt(4))){ MovieClip(_arg1.currentTarget).gotoAndStop(3); }; }); MovieClip(mc_wnd[("bt_p" + i)]).addEventListener(MouseEvent.MOUSE_OUT, function (_arg1:MouseEvent):void{ if (m_cur_part != Number(String(_arg1.currentTarget.name).charAt(4))){ MovieClip(_arg1.currentTarget).gotoAndStop(1); }; }); i = (i + 1); }; } private function update(_arg1:Event):void{ if (m_is_showing){ if (alpha < 1){ alpha = (alpha + 0.2); if (alpha >= 1){ m_is_showing = false; alpha = 1; }; }; }; if (m_is_hiding){ if (alpha > 0){ alpha = (alpha - 0.2); if (alpha <= 0){ m_is_hiding = false; visible = false; alpha = 0; }; }; }; } public function hide():void{ m_is_hiding = true; m_is_showing = false; GamePlayState.getInstance().m_is_paused = false; } public function show(_arg1:Boolean=false):void{ GamePlayState.getInstance().m_is_paused = true; GamePlayState.getInstance().m_allow_shooting = false; visible = true; m_is_hiding = false; m_is_showing = true; reinitButtons(); if (_arg1){ SimpleButton(mc_wnd["m_bt_close"]).visible = false; } else { SimpleButton(mc_wnd["m_bt_close"]).visible = true; }; } private function reinitButtons():void{ var _local2:Number; var _local3:Number; var _local1:Number = 0; while (_local1 != 4) { mc_wnd[("bt_lev" + _local1)].gotoAndStop(1); mc_wnd[("bt_lev" + _local1)].buttonMode = true; _local2 = GamePlayState.getInstance().gameProgress.getScoreForLevel((((m_cur_part * 4) + _local1) + 1)); trace((((m_cur_part * 4) + _local1) + 1), _local2); if (_local2 <= 0){ mc_wnd[("mc_chest_" + _local1)].visible = false; }; if (_local2 == -1){ mc_wnd[("bt_lev" + _local1)].gotoAndStop(5); mc_wnd[("bt_lev" + _local1)].buttonMode = false; }; if (_local2 > 0){ mc_wnd[("mc_chest_" + _local1)].visible = true; if ((((m_cur_part * 4) + _local1) + 1) >= 0){ _local3 = 3; if (_local2 >= GamePlayState.getInstance().gameProgress.levelsScoreTable[((m_cur_part * 4) + _local1)]["gold"]){ _local3 = 1; }; if ((((_local2 >= GamePlayState.getInstance().gameProgress.levelsScoreTable[((m_cur_part * 4) + _local1)]["metal"])) && ((_local2 < GamePlayState.getInstance().gameProgress.levelsScoreTable[((m_cur_part * 4) + _local1)]["gold"])))){ _local3 = 2; }; mc_wnd[("mc_chest_" + _local1)].gotoAndStop(_local3); }; }; _local1++; }; } } }//package Gameplay
Section 105
//CreditsWnd (Gameplay.CreditsWnd) package Gameplay { import States.*; import flash.events.*; import flash.display.*; import flash.utils.*; public class CreditsWnd extends MovieClip { private var m_is_showing:Boolean;// = false private var m_timer:Timer; private var m_is_hiding:Boolean;// = false private var mc_wnd:MovieClip; public function CreditsWnd(){ mc_wnd = new mc_credits_wnd(); m_timer = new Timer(300, 1); visible = false; super(); mc_wnd.x = 101; mc_wnd.y = 38; alpha = 0; addChild(mc_wnd); m_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_is_showing = true; }); SimpleButton(mc_wnd["bt_close"]).addEventListener(MouseEvent.CLICK, onBtCloseClick); addEventListener(Event.ENTER_FRAME, update); } private function onBtCloseClick(_arg1:Event):void{ hide(); } public function hide():void{ m_is_hiding = true; m_is_showing = false; } private function update(_arg1:Event):void{ if (m_is_showing){ if (alpha < 1){ alpha = (alpha + 0.2); if (alpha >= 1){ m_is_showing = false; alpha = 1; }; }; }; if (m_is_hiding){ if (alpha > 0){ alpha = (alpha - 0.2); if (alpha <= 0){ m_is_hiding = false; visible = false; alpha = 0; }; }; }; } public function show():void{ visible = true; m_is_hiding = false; m_is_showing = true; GamePlayState.getInstance().m_allow_shooting = false; } } }//package Gameplay
Section 106
//DefeatWnd (Gameplay.DefeatWnd) package Gameplay { import States.*; import flash.events.*; import flash.display.*; import flash.media.*; import flash.utils.*; public class DefeatWnd extends MovieClip { private var m_is_showing:Boolean;// = false private var m_timer:Timer; private var m_is_hiding:Boolean;// = false private var mc_wnd:MovieClip; public function DefeatWnd(){ mc_wnd = new mc_defeat_screen(); m_timer = new Timer(300, 1); visible = false; super(); mc_wnd.x = 101; mc_wnd.y = 38; alpha = 0; addChild(mc_wnd); m_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_is_showing = true; }); SimpleButton(mc_wnd["m_bt_replay"]).addEventListener(MouseEvent.CLICK, onBtReplayClick); addEventListener(Event.ENTER_FRAME, update); } public function hide():void{ m_is_hiding = true; m_is_showing = false; } private function update(_arg1:Event):void{ if (m_is_showing){ if (alpha < 1){ alpha = (alpha + 0.2); if (alpha >= 1){ m_is_showing = false; alpha = 1; }; }; }; if (m_is_hiding){ if (alpha > 0){ alpha = (alpha - 0.2); if (alpha <= 0){ m_is_hiding = false; visible = false; alpha = 0; }; }; }; } public function show():void{ GamePlayState.getInstance().m_is_paused = true; visible = true; m_is_hiding = false; m_is_showing = true; GamePlayState.getInstance().m_allow_shooting = false; var _local1:Sound = new snd_lose(); _local1.play(0, 0, new SoundTransform(1.3)); } private function onBtReplayClick(_arg1:Event):void{ GamePlayState.getInstance().levelProcessor.restartLevel(); ScoreProcessor.current_score = 0; IngameGUI(GamePlayState.getInstance().m_layers["gui"]).setGUIScore(0); hide(); GamePlayState.getInstance().m_is_paused = false; } } }//package Gameplay
Section 107
//FinalWnd (Gameplay.FinalWnd) package Gameplay { import States.*; import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; public class FinalWnd extends MovieClip { private var m_is_showing:Boolean;// = false private var m_timer:Timer; private var m_is_hiding:Boolean;// = false private var mc_wnd:MovieClip; public function FinalWnd(){ mc_wnd = new mc_final(); m_timer = new Timer(300, 1); visible = false; super(); mc_wnd.x = 70; mc_wnd.y = 4; alpha = 0; addChild(mc_wnd); m_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_is_showing = true; }); SimpleButton(mc_wnd["bt_close"]).addEventListener(MouseEvent.CLICK, onBtCloseClick); addEventListener(Event.ENTER_FRAME, update); } private function onBtCloseClick(_arg1:Event):void{ hide(); ChoseLevelWnd(GamePlayState.getInstance().m_layers["gui_wnd_level_select"]).show(true); } public function hide():void{ m_is_hiding = true; m_is_showing = false; } private function update(_arg1:Event):void{ if (m_is_showing){ if (alpha < 1){ alpha = (alpha + 0.2); if (alpha >= 1){ m_is_showing = false; alpha = 1; }; }; }; if (m_is_hiding){ if (alpha > 0){ alpha = (alpha - 0.2); if (alpha <= 0){ m_is_hiding = false; visible = false; alpha = 0; }; }; }; } public function show():void{ var _local6:Number; var _local1:Sound = new snd_yohoho(); _local1.play(); visible = true; m_is_hiding = false; m_is_showing = true; GamePlayState.getInstance().m_allow_shooting = false; var _local2:Number = 0; var _local3:Number = 0; var _local4:Number = 0; var _local5:Number = 2; while (_local5 != (GamePlayState.getInstance().gameProgress.levelsScoreTable.length + 1)) { _local6 = GamePlayState.getInstance().gameProgress.getScoreForLevel(_local5); if (_local6 >= GamePlayState.getInstance().gameProgress.levelsScoreTable[(_local5 - 1)]["gold"]){ _local2++; } else { if ((((_local6 >= GamePlayState.getInstance().gameProgress.levelsScoreTable[(_local5 - 1)]["metal"])) && ((_local6 < GamePlayState.getInstance().gameProgress.levelsScoreTable[(_local5 - 1)]["gold"])))){ _local3++; } else { _local4++; }; }; _local5++; }; TextField(mc_wnd["tf_gold"]).text = ("" + _local2); TextField(mc_wnd["tf_metal"]).text = ("" + _local3); TextField(mc_wnd["tf_wooden"]).text = ("" + _local4); } } }//package Gameplay
Section 108
//GameContactListener (Gameplay.GameContactListener) package Gameplay { import States.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import GameObjects.*; import Box2D.Dynamics.Contacts.*; import GameObjects.MapItems.*; public class GameContactListener extends b2ContactListener { override public function Add(_arg1:b2ContactPoint):void{ } override public function Remove(_arg1:b2ContactPoint):void{ } override public function Persist(_arg1:b2ContactPoint):void{ } override public function Result(_arg1:b2ContactResult):void{ if (_arg1.shape2.GetBody().GetUserData().toString() == "[object SwitchCannonBall]"){ if ((((_arg1.shape1.GetBody().GetUserData().toString() == "[object mc_cannon_player]")) || ((_arg1.shape1.GetBody().GetUserData().toString() == "[object ShipPlayers]")))){ GamePlayState.getInstance().levelProcessor.damagePlayer(); SwitchCannonBall(_arg1.shape2.GetBody().GetUserData()).explode(); }; }; if (_arg1.shape2.GetBody().GetUserData().toString() == "[object EnemyCannonball]"){ if ((((_arg1.shape1.GetBody().GetUserData().toString() == "[object mc_cannon_player]")) || ((_arg1.shape1.GetBody().GetUserData().toString() == "[object ShipPlayers]")))){ GamePlayState.getInstance().levelProcessor.damagePlayer(); }; if (_arg1.shape1.GetBody().GetUserData().toString() != "[object BrickWall]"){ EnemyCannonball(_arg1.shape2.GetBody().GetUserData()).explode(); }; }; if ((((_arg1.shape2.GetBody().GetUserData().toString() == "[object Cannonball]")) || ((_arg1.shape2.GetBody().GetUserData().toString() == "[object SwitchCannonBall]")))){ if (_arg1.shape1.GetBody().GetUserData().toString() == "[object BarrelExplosive]"){ GamePlayState.getInstance().addToDestroyList(_arg1.shape2.GetBody()); BarrelExplosive(_arg1.shape1.GetBody().GetUserData()).explode(); Cannonball(_arg1.shape2.GetBody().GetUserData()).stopTimer(); } else { if (_arg1.shape1.GetBody().GetUserData().toString() == "[object Aim]"){ GamePlayState.getInstance().addToDestroyList(_arg1.shape2.GetBody()); Aim(_arg1.shape1.GetBody().GetUserData()).explode(); Cannonball(_arg1.shape2.GetBody().GetUserData()).stopTimer(); } else { if (_arg1.shape1.GetBody().GetUserData().toString() == "[object Crate]"){ if (_arg1.shape2.GetBody().m_linearVelocity.Length() > 4){ GamePlayState.getInstance().addToDestroyList(_arg1.shape2.GetBody()); Crate(_arg1.shape1.GetBody().GetUserData()).explode(); Cannonball(_arg1.shape2.GetBody().GetUserData()).stopTimer(); }; } else { if (_arg1.shape1.GetBody().GetUserData().toString() == "[object CannonEnemy]"){ CannonEnemy(_arg1.shape1.GetBody().GetUserData()).damage(); _arg1.shape2.GetBody().GetUserData().explode(); } else { if (_arg1.shape1.GetBody().GetUserData().toString() == "[object EnemyCannonball]"){ ScoreProcessor.putScore(ScoreProcessor.N_SHOT_DESTR, (_arg1.position.x * 30), (_arg1.position.y * 30)); } else { if (_arg1.shape1.GetBody().GetUserData().toString() == "[object CrashedBlock]"){ CrashedBlock(_arg1.shape1.GetBody().GetUserData()).crash(); Cannonball(_arg1.shape2.GetBody().GetUserData()).explode(); } else { if ((((_arg1.shape1.GetBody().GetUserData().toString() == "[object Switch]")) && (!((_arg1.shape2.GetBody().GetUserData().toString() == "[object SwitchCannonBall]"))))){ Switch(_arg1.shape1.GetBody().GetUserData()).switchOn(); Cannonball(_arg1.shape2.GetBody().GetUserData()).explode(); } else { if ((((((_arg1.shape1.GetBody().GetUserData().toString() == "[object SwitchedCannon]")) || ((_arg1.shape1.GetBody().GetUserData().toString() == "[object SwitchedCannon1]")))) || ((_arg1.shape1.GetBody().GetUserData().toString() == "[object SwitchedCannon2]")))){ if (_arg1.shape2.GetBody().GetUserData().toString() == "[object SwitchCannonBall]"){ if (_arg1.shape2.GetBody().GetUserData().m_parent == _arg1.shape1.GetBody().GetUserData()){ return; }; }; _arg1.shape1.GetBody().GetUserData().startShootTimer(_arg1.shape2.GetBody().GetLinearVelocity().Length()); Cannonball(_arg1.shape2.GetBody().GetUserData()).stopTimer(); Cannonball(_arg1.shape2.GetBody().GetUserData()).explode(); } else { Cannonball(_arg1.shape2.GetBody().GetUserData()).startTimer(); }; }; }; }; }; }; }; }; }; } } }//package Gameplay
Section 109
//GameProgress (Gameplay.GameProgress) package Gameplay { import flash.net.*; public class GameProgress { private var m_is_first_game:Boolean;// = true private var m_level_score:Array; private var m_levels_data:Array; private var m_cur_level:Number;// = 0 public function GameProgress(){ m_levels_data = new Array(); m_level_score = new Array(); super(); m_level_score[0] = {metal:0, gold:0}; m_level_score[1] = {metal:800, gold:1550}; m_level_score[2] = {metal:860, gold:0x0500}; m_level_score[3] = {metal:950, gold:1120}; m_level_score[4] = {metal:650, gold:760}; m_level_score[5] = {metal:600, gold:800}; m_level_score[6] = {metal:600, gold:730}; m_level_score[7] = {metal:900, gold:1030}; m_level_score[8] = {metal:470, gold:500}; m_level_score[9] = {metal:550, gold:650}; m_level_score[10] = {metal:650, gold:740}; m_level_score[11] = {metal:760, gold:940}; m_level_score[12] = {metal:700, gold:1010}; m_level_score[13] = {metal:500, gold:580}; m_level_score[14] = {metal:800, gold:990}; m_level_score[15] = {metal:580, gold:660}; m_level_score[16] = {metal:450, gold:630}; m_level_score[17] = {metal:600, gold:700}; m_level_score[18] = {metal:500, gold:530}; m_level_score[19] = {metal:880, gold:940}; m_level_score[20] = {metal:600, gold:620}; m_level_score[21] = {metal:370, gold:420}; m_level_score[22] = {metal:700, gold:770}; m_level_score[23] = {metal:670, gold:730}; m_level_score[24] = {metal:980, gold:1130}; m_level_score[25] = {metal:760, gold:990}; m_level_score[26] = {metal:880, gold:940}; m_level_score[27] = {metal:720, gold:840}; } public function setScoreForLevel(_arg1:Number, _arg2:Number):void{ m_is_first_game = false; m_levels_data[_arg1] = _arg2; save(); } public function load():void{ var _local2:Number; var _local1:SharedObject = SharedObject.getLocal("yohohocannon"); if (_local1.data.is_first_game == null){ m_cur_level = 2; _local2 = 0; while (_local2 != m_cur_level) { m_levels_data[_local2] = 0; _local2++; }; save(); } else { m_is_first_game = _local1.data.is_first_game; m_levels_data = _local1.data.levels_data; m_cur_level = (m_levels_data.length - 1); }; } public function get levelsScoreTable():Array{ return (m_level_score); } public function getScoreForLevel(_arg1:Number):Number{ if (m_levels_data[_arg1] != null){ return (m_levels_data[_arg1]); }; return (-1); } public function get isFirstGame():Boolean{ return (m_is_first_game); } public function get levelsData():Array{ return (m_levels_data); } public function save():void{ var _local1:SharedObject = SharedObject.getLocal("yohohocannon"); _local1.data.is_first_game = m_is_first_game; _local1.data.levels_data = m_levels_data; _local1.flush(); } } }//package Gameplay
Section 110
//IngameGUI (Gameplay.IngameGUI) package Gameplay { import States.*; import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.net.*; import flash.filters.*; public class IngameGUI extends Sprite { private var bt_play:btn_play; private var bt_replay:btn_replay; private var m_snd_yohoho:Sound; private var bt_quit:btn_quit; private var mc_score:mc_scores; private var bt_credits:btn_credits; private var m_is_in_menu:Boolean;// = true private var mc_shots_tf:mc_shots; private var bt_soundon:btn_soundon; private var bt_soundoff:btn_soundoff; private var m_is_snd_on:Boolean;// = true public var arc_bt:MovieClip; private var m_mc_logo:MovieClip; private var m_mc_mouses:MovieClip; private var m_healthbar:MovieClip; private var mc_level_number:mc_levelnumber; private var bt_continue:btn_continue; private var mc_time_tf:mc_time; private var m_hb_flash:MovieClip; public function IngameGUI(){ bt_quit = new btn_quit(); bt_replay = new btn_replay(); bt_soundoff = new btn_soundoff(); bt_soundon = new btn_soundon(); bt_play = new btn_play(); bt_continue = new btn_continue(); bt_credits = new btn_credits(); m_snd_yohoho = new snd_yohoho(); m_healthbar = new mc_playerhealthbar(); m_mc_mouses = new mc_mouses(); m_mc_logo = new MovieClip(); m_hb_flash = new mc_flash_health(); arc_bt = new mc_arc_bt(); super(); m_mc_mouses.x = 510; m_mc_mouses.y = 10; m_mc_mouses.visible = false; m_healthbar.x = 23; m_healthbar.y = 347; m_healthbar.gotoAndStop(1); m_hb_flash.x = 24; m_hb_flash.y = 344; m_hb_flash["mc"].visible = false; bt_quit.x = 2.3; bt_quit.y = 38.6; bt_replay.x = 3.3; bt_replay.y = 73; bt_replay.gotoAndStop(1); bt_soundoff.x = 2; bt_soundoff.y = 3.4; bt_soundon.x = 2; bt_soundon.y = 3.4; bt_soundoff.visible = false; bt_play.x = 263.2; bt_play.y = 258.9; bt_credits.x = 363.7; bt_credits.y = 258.9; arc_bt.x = 577; arc_bt.y = 7; var wlk_bt:SimpleButton = new bt_Walkthrough(); wlk_bt.x = 544; wlk_bt.y = 360; wlk_bt.scaleX = 0.65; wlk_bt.scaleY = 0.65; wlk_bt.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://www.arcadebomb.com/play/yohoho_cannon_walkthrough.html"); navigateToURL(_local2); }); m_mc_logo.addChild(arc_bt); m_mc_logo.addChild(wlk_bt); mc_level_number = new mc_levelnumber(); mc_level_number.x = (70 + 20); mc_level_number.y = 2.6; mc_level_number.filters = [new GlowFilter(0x660000, 1, 4, 4, 3.88)]; mc_score = new mc_scores(); mc_score.x = (147 + 20); mc_score.y = 2.6; mc_score.filters = [new GlowFilter(0x660000, 1, 4, 4, 3.88)]; mc_time_tf = new mc_time(); mc_time_tf.x = (292 + 20); mc_time_tf.y = 3.6; mc_time_tf.filters = [new GlowFilter(0x660000, 1, 4, 4, 3.88)]; mc_shots_tf = new mc_shots(); mc_shots_tf.x = (428 + 20); mc_shots_tf.y = 4.3; mc_shots_tf.filters = [new GlowFilter(0x660000, 1, 4, 4, 3.88)]; setGUILevel(1); setGUIScore(0); bt_replay.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ GamePlayState.getInstance().levelProcessor.restartLevel(true); ScoreProcessor.current_score = 0; setGUIScore(0); }); bt_soundoff.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ SoundMixer.soundTransform = new SoundTransform(1); m_is_snd_on = !(m_is_snd_on); bt_soundoff.visible = false; bt_soundon.visible = true; }); bt_soundon.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ SoundMixer.soundTransform = new SoundTransform(0); m_is_snd_on = !(m_is_snd_on); bt_soundon.visible = false; bt_soundoff.visible = true; }); bt_quit.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ ChoseLevelWnd(GamePlayState.getInstance().m_layers["gui_wnd_level_select"]).show(); }); bt_credits.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ CreditsWnd(GamePlayState.getInstance().m_layers["gui_wnd_credits"]).show(); }); bt_play.addEventListener(MouseEvent.CLICK, function (_arg1:Event):void{ m_snd_yohoho.play(); if (GamePlayState.getInstance().gameProgress.isFirstGame){ GamePlayState.getInstance().levelProcessor.m_is_ship_moving = true; GamePlayState.getInstance().levelProcessor.m_is_fort_being_destroyed = true; GamePlayState.getInstance().levelProcessor.destroyFort(); toGame(); disableReplay(); } else { ChoseLevelWnd(GamePlayState.getInstance().m_layers["gui_wnd_level_select"]).show(); }; }); toMenu(); addChild(bt_quit); addChild(bt_replay); addChild(bt_soundoff); addChild(bt_soundon); addChild(bt_play); addChild(bt_credits); addChild(mc_level_number); addChild(mc_score); addChild(mc_time_tf); addChild(mc_shots_tf); addChild(m_healthbar); addChild(m_mc_mouses); addChild(m_mc_logo); addChild(m_hb_flash); hideLogo(); } public function updateGUIScore(_arg1:Boolean):void{ TextField(mc_score["m_tf"]["m_tf"]["m_tf"]).text = ("" + ScoreProcessor.current_score); } public function setBtReplayBlinking():void{ bt_replay.gotoAndPlay(1); } public function setGUILevel(_arg1:Number):void{ if (_arg1 <= 3){ _arg1 = 1; } else { _arg1 = (_arg1 - 2); }; var _local2:int = (int((_arg1 / 4)) + 1); TextField(mc_level_number["m_tf"]).text = ((("" + _local2) + "-") + (_arg1 - ((_local2 - 1) * 4))); } public function toGame():void{ bt_quit.visible = true; if (GamePlayState.getInstance().levelProcessor.m_cur_level > 2){ bt_replay.visible = true; m_healthbar.visible = true; }; bt_soundoff.visible = true; mc_level_number.visible = true; mc_score.visible = true; mc_time_tf.visible = true; mc_shots_tf.visible = true; bt_play.visible = false; bt_credits.visible = false; GamePlayState.getInstance().mc_arc_btn.visible = false; GamePlayState.getInstance().m_more.visible = false; GamePlayState.getInstance().m_bmb.visible = false; } public function hideMouseTut():void{ m_mc_mouses.visible = false; m_mc_logo.visible = true; } public function hideLogo():void{ m_mc_logo.visible = false; } public function showReplayButton():void{ bt_replay.visible = true; } public function setHealthBarFrame(_arg1:Number):void{ if (m_healthbar.visible){ m_healthbar.gotoAndStop(_arg1); m_hb_flash["mc"].visible = true; m_hb_flash["mc"].gotoAndPlay(1); }; } public function setGUIScore(_arg1:Number):void{ TextField(mc_score["m_tf"]["m_tf"]["m_tf"]).text = ("" + _arg1); } public function showHealthBar():void{ m_healthbar.visible = true; } public function stopBtReplayBlinking():void{ bt_replay.gotoAndStop(1); } public function setGUIShots(_arg1:Number):void{ TextField(mc_shots_tf["m_tf"]).text = ("" + _arg1); } public function showMouseTut():void{ m_mc_mouses.visible = true; m_mc_logo.visible = false; } public function showLogo():void{ m_mc_logo.visible = true; } public function enableReplay():void{ if (GamePlayState.getInstance().levelProcessor.m_cur_level > 2){ bt_replay.visible = true; }; bt_quit.visible = true; mc_level_number.visible = true; mc_score.visible = true; mc_time_tf.visible = true; mc_shots_tf.visible = true; } public function hideReplayButton():void{ bt_replay.visible = false; } public function setGUITime(_arg1:Number):void{ var _local2:int = (_arg1 / 60); var _local3:int = (_arg1 - (_local2 * 60)); var _local4 = ""; var _local5 = ""; if (_local2 < 10){ _local4 = "0"; }; if (_local3 < 10){ _local5 = "0"; }; TextField(mc_time_tf["m_tf"]).text = ((((_local4 + _local2) + " : ") + _local5) + _local3); } public function disableReplay():void{ bt_replay.visible = false; bt_quit.visible = false; mc_level_number.visible = false; mc_score.visible = false; mc_time_tf.visible = false; mc_shots_tf.visible = false; } public function hideHealthBar():void{ m_healthbar.visible = false; } public function toMenu():void{ bt_quit.visible = false; bt_replay.visible = false; bt_soundoff.visible = true; mc_level_number.visible = false; mc_score.visible = false; mc_time_tf.visible = false; mc_shots_tf.visible = false; m_healthbar.visible = false; bt_play.visible = true; bt_credits.visible = true; } } }//package Gameplay
Section 111
//LevelCompleteWnd (Gameplay.LevelCompleteWnd) package Gameplay { import States.*; import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; public class LevelCompleteWnd extends MovieClip { private var m_is_showing:Boolean;// = false private var m_is_hiding:Boolean;// = false private var m_timer:Timer; private var mc_wnd:MovieClip; public function LevelCompleteWnd(){ mc_wnd = new mc_level_complete_screen(); m_timer = new Timer(300, 1); visible = false; super(); mc_wnd.x = 101; mc_wnd.y = 38; addChild(mc_wnd); m_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_is_showing = true; }); SimpleButton(mc_wnd["m_bt_next"]).addEventListener(MouseEvent.CLICK, onBtNextClick); SimpleButton(mc_wnd["m_bt_replay"]).addEventListener(MouseEvent.CLICK, onBtReplayClick); addEventListener(Event.ENTER_FRAME, update); } private function onBtNextClick(_arg1:Event):void{ m_is_showing = false; m_is_hiding = true; if (GamePlayState.getInstance().levelProcessor.m_cur_level == 29){ FinalWnd(GamePlayState.getInstance().m_layers["gui_wnd_final"]).show(); } else { GamePlayState.getInstance().levelProcessor.nextLevel(); }; } private function update(_arg1:Event):void{ if (m_is_showing){ if (alpha < 1){ alpha = (alpha + 0.2); if (alpha >= 1){ m_is_showing = false; alpha = 1; }; }; }; if (m_is_hiding){ if (alpha > 0){ alpha = (alpha - 0.2); if (alpha <= 0){ m_is_hiding = false; visible = false; alpha = 0; }; }; }; } public function setData(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number):void{ _arg1 = (_arg1 - 2); TextField(mc_wnd["mc_level"]).text = ("" + _arg1); TextField(mc_wnd["tf_score"]).text = ("your score: " + _arg2); TextField(mc_wnd["tf_shots"]).text = ("shots made: " + _arg3); TextField(mc_wnd["tf_total_score"]).text = ("level score: " + int(_arg5)); var _local6:int = (_arg4 / 60); var _local7:int = (_arg4 - (_local6 * 60)); var _local8 = ""; var _local9 = ""; if (_local6 < 10){ _local8 = "0"; }; if (_local7 < 10){ _local9 = "0"; }; TextField(mc_wnd["tf_time"]).text = ((((("Level time:\t" + _local8) + _local6) + ":") + _local9) + _local7); var _local10:Number = 3; if (_arg5 >= GamePlayState.getInstance().gameProgress.levelsScoreTable[(_arg1 - 1)]["gold"]){ _local10 = 1; }; if ((((_arg5 >= GamePlayState.getInstance().gameProgress.levelsScoreTable[(_arg1 - 1)]["metal"])) && ((_arg5 < GamePlayState.getInstance().gameProgress.levelsScoreTable[(_arg1 - 1)]["gold"])))){ _local10 = 2; }; MovieClip(mc_wnd["mc_chest"]).gotoAndStop(_local10); alpha = 0; visible = true; m_timer.start(); GamePlayState.getInstance().m_allow_shooting = false; if (GamePlayState.getInstance().gameProgress.getScoreForLevel(_arg1) < _arg5){ GamePlayState.getInstance().gameProgress.setScoreForLevel(_arg1, int(_arg5)); }; var _local11:Sound = new snd_arr(); _local11.play(); } private function onBtReplayClick(_arg1:Event):void{ GamePlayState.getInstance().levelProcessor.m_cur_level = (GamePlayState.getInstance().levelProcessor.m_cur_level - 1); GamePlayState.getInstance().levelProcessor.nextLevel(); m_is_showing = false; m_is_hiding = true; } } }//package Gameplay
Section 112
//LevelParser (Gameplay.LevelParser) package Gameplay { import States.*; import Box2D.Dynamics.*; import flash.display.*; import GameObjects.*; import flash.utils.*; import GameObjects.MapItems.*; public class LevelParser { public static const X_FORT_DISPL:Number = 300; public static var is_parsing:Boolean = false; public static function parse(_arg1:int, _arg2:b2World, _arg3:Sprite, _arg4:Sprite, _arg5:Boolean=false):void{ var _local8:MovieClip; var _local9:DisplayObject; var _local11:DisplayObject; var _local12:String; var _local13:BaseObject; var _local14:ShipPlayers; var _local15:Array; var _local16:MovieClip; var _local17:BrickWall; is_parsing = true; var _local6:Number = 0; var _local7:Sprite = _arg3; if (_arg1 == -1){ _local8 = new ((getDefinitionByName("level") as Class)); } else { _local8 = new ((getDefinitionByName(("level" + _arg1)) as Class)); }; GamePlayState.getInstance().ingameGUI.setGUILevel((_arg1 + 1)); GamePlayState.getInstance().ingameGUI.setGUIScore(0); GamePlayState.getInstance().levelProcessor.canonsLeft = 0; ScoreProcessor.current_score = 0; if (_arg5){ _local6 = X_FORT_DISPL; }; _local7.addChild(_arg4); var _local10:Number = 0; while (_local10 != _local8.numChildren) { _local11 = _local8.getChildAt(_local10); _local12 = _local11.toString(); if (_local12.search("bricks") != -1){ _local16 = new ((getDefinitionByName(_local12.slice(8, (_local12.length - 1))) as Class)); if (_local11.rotation == 180){ _local16.scaleX = -1; }; _local17 = new BrickWall(_arg2, (_local11.x + _local6), _local11.y, _local16); _local7.addChild(_local17); GamePlayState.getInstance().levelProcessor.addItemToLevel(_local17); }; if (_arg1 == -1){ if (_local12 == "[object level_back]"){ _local9 = _local11; }; } else { if (_local12 == (("[object level" + _arg1) + "_back]")){ _local9 = _local11; }; }; _local13 = null; _local15 = new Array(); switch (_local12){ case "[object mc_crate]": _local13 = new Crate(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_aim]": _local13 = new Aim(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_metal_box]": _local13 = new MetalBox(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_fort_basement]": _local13 = new FortBasement(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_barrel]": _local13 = new BarrelExplosive(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_cannon_enemy]": _local13 = new CannonEnemy(_arg2, (_local11.x + _local6), _local11.y); GamePlayState.getInstance().levelProcessor.canonsLeft = (GamePlayState.getInstance().levelProcessor.canonsLeft + 1); break; case "[object mc_cannon2_enemy]": _local13 = new CannonEnemy2(_arg2, (_local11.x + _local6), _local11.y); GamePlayState.getInstance().levelProcessor.canonsLeft = (GamePlayState.getInstance().levelProcessor.canonsLeft + 1); break; case "[object mc_crane_mid]": _local13 = new Crane(_arg2, (_local11.x + _local6), _local11.y, 1); break; case "[object mc_crane_short]": _local13 = new Crane(_arg2, (_local11.x + _local6), _local11.y, 0); break; case "[object mc_crane_long]": _local13 = new Crane(_arg2, (_local11.x + _local6), _local11.y, 2); break; case "[object wood_corner1]": _local13 = new Corner1(_arg2, (_local11.x + _local6), _local11.y); break; case "[object wood_corner2]": _local13 = new Corner2(_arg2, (_local11.x + _local6), _local11.y); break; case "[object wood_corner3]": _local13 = new Corner3(_arg2, (_local11.x + _local6), _local11.y); break; case "[object wood_corner4]": _local13 = new Corner4(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_crashed_block]": _local13 = new CrashedBlock(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_switch]": _local13 = new Switch(_arg2, (_local11.x + _local6), _local11.y, 0); break; case "[object mc_switch1]": _local13 = new Switch(_arg2, (_local11.x + _local6), _local11.y, 1); break; case "[object mc_switch2]": _local13 = new Switch(_arg2, (_local11.x + _local6), _local11.y, 2); break; case "[object mc_switchcannon]": _local13 = new SwitchedCannon(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_switchcannon1]": _local13 = new SwitchedCannon1(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_switchcannon2]": _local13 = new SwitchedCannon2(_arg2, (_local11.x + _local6), _local11.y); break; case "[object mc_mill]": _local13 = new Mill(_arg2, (_local11.x + _local6), _local11.y); break; }; if (_local13 != null){ GamePlayState.getInstance().levelProcessor.addItemToLevel(_local13); _local7.addChild(_local13); }; _local10++; }; GamePlayState.getInstance().levelProcessor.m_canons_on_level = GamePlayState.getInstance().levelProcessor.canonsLeft; _local9.x = (_local9.x + _local6); _arg4.addChild(_local9); is_parsing = false; if (_arg1 == 0){ GamePlayState.getInstance().levelProcessor.canonsLeft = 1; }; } } }//package Gameplay
Section 113
//LevelProcessor (Gameplay.LevelProcessor) package Gameplay { import States.*; import flash.events.*; import Box2D.Dynamics.*; import flash.display.*; import Box2D.Common.Math.*; import GameObjects.*; import flash.media.*; import flash.utils.*; import GameObjects.MapItems.*; import flash.geom.*; public class LevelProcessor { private const SCALE:Number = 30; private var m_back_boss_items:Array; private var m_level_shots:Number; public var m_level_timer:Timer; private var m_player_ship:ShipPlayers; private var m_snd_help:Sound; public var m_canons_on_level:Number;// = -1 public var m_is_to_boss_level_changing:Boolean;// = false public var m_is_boss_level:Boolean;// = false private var m_players_health:Number;// = 49 public var m_is_ship_moving:Boolean;// = false private var m_game_over_timer:Timer; private var m_level_time:Number; private var m_world:b2World; public var m_is_fort_being_destroyed:Boolean;// = false private var m_next_level:Number;// = -1 public var m_is_ship_being_moved:Boolean;// = false private var m_items_on_level:Array; private var m_layers:Array; public var m_is_fort_being_moved:Boolean;// = false public var m_is_to_usual_level_changing:Boolean;// = false public var m_cur_level:Number;// = -1 private var m_color_params:Object; private var m_cur_fort_x:Number;// = 0 private var m_cur_fort_y:Number;// = 0 private var m_snd_bubbling:Sound; private var m_canons_on_level_left:Number;// = -1 private var m_back_items:Array; private var m_mc_tut:MovieClip; public function LevelProcessor(_arg1:b2World, _arg2:Array, _arg3:ShipPlayers){ var _world = _arg1; var _layers = _arg2; var _player_ship = _arg3; m_items_on_level = new Array(); m_back_items = new Array(); m_back_boss_items = new Array(); m_color_params = {bm:1, gm:1, ro:0}; m_snd_bubbling = new snd_bubbling(); m_game_over_timer = new Timer(1000, 1); m_level_timer = new Timer(1000); m_snd_help = new snd_help(); super(); m_world = _world; m_layers = _layers; m_player_ship = _player_ship; m_game_over_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ var _local3:BaseObject; if (m_players_health <= 0){ DefeatWnd(m_layers["gui_wnd_defeat"]).show(); }; var _local2:Number = 0; for each (_local3 in m_items_on_level) { if (_local3.toString() == "[object BarrelExplosive]"){ if (!BarrelExplosive(_local3).m_was_exploded){ _local2++; }; }; }; if ((((_local2 == 0)) && (!((canonsLeft == 0))))){ IngameGUI(m_layers["gui"]).setBtReplayBlinking(); }; }); m_level_timer.addEventListener(TimerEvent.TIMER, function (_arg1:TimerEvent):void{ if (!GamePlayState.getInstance().m_is_paused){ m_level_time = m_level_timer.currentCount; IngameGUI(m_layers["gui"]).setGUITime(m_level_time); }; }); } public function checkGameOver():void{ m_game_over_timer.start(); } public function set canonsLeft(_arg1:Number):void{ m_canons_on_level_left = _arg1; if ((((m_cur_level > -1)) && (!(LevelParser.is_parsing)))){ if (m_canons_on_level_left == 0){ IngameGUI(m_layers["gui"]).disableReplay(); destroyFort(); }; }; } private function addBgItems():void{ var _local3:Number; var _local4:Number; var _local5:Class; var _local6:MovieClip; var _local1:Number = 1; if (m_back_items.length == 0){ _local1 = 2; }; var _local2:Number = 0; while (_local2 != _local1) { _local3 = -350; if (m_back_items.length != 0){ _local3 = MovieClip(m_back_items[(m_back_items.length - 1)]).x; }; _local4 = Math.round(b2Math.b2RandomRange(0, 5)); _local5 = (getDefinitionByName(("backshape_u_" + _local4)) as Class); _local6 = new (_local5); _local6.x = (_local3 + 500); _local6.y = 330; _local6.cacheAsBitmap = true; m_layers["back"].addChild(_local6); m_back_items.push(_local6); _local3 = 40; if (m_back_boss_items.length != 0){ _local3 = MovieClip(m_back_boss_items[(m_back_boss_items.length - 1)]).x; }; _local4 = Math.round(b2Math.b2RandomRange(0, 7)); _local5 = (getDefinitionByName(("backshape_b_" + _local4)) as Class); _local6 = new (_local5); _local6.x = (_local3 + 500); _local6.y = 330; _local6.cacheAsBitmap = true; m_layers["back_boss"].addChild(_local6); m_back_boss_items.push(_local6); _local2++; }; } public function rotateSwitchCannons():void{ var _local1:BaseObject; for each (_local1 in m_items_on_level) { if ((((((_local1.toString() == "[object SwitchedCannon]")) || ((_local1.toString() == "[object SwitchedCannon1]")))) || ((_local1.toString() == "[object SwitchedCannon2]")))){ var _local4 = _local1; _local4["rotate"](); }; }; } public function damagePlayer():void{ m_players_health = (m_players_health - 3); IngameGUI(m_layers["gui"]).setHealthBarFrame((50 - m_players_health)); checkGameOver(); } private function clearLevel():void{ IngameGUI(m_layers["gui"]).stopBtReplayBlinking(); var _local1:b2Body = m_world.m_bodyList; while (_local1) { if (_local1 != m_world.GetGroundBody()){ if (((!((_local1.GetUserData().toString() == "[object ShipPlayers]"))) && (!((_local1.GetUserData().toString() == "[object mc_cannon_player]"))))){ m_world.DestroyBody(_local1); if (_local1.GetUserData() != null){ if (_local1.GetUserData().parent != null){ _local1.GetUserData().parent.removeChild(_local1.GetUserData()); }; }; }; }; _local1 = _local1.m_next; }; } public function addShot():void{ m_level_shots++; IngameGUI(m_layers["gui"]).setGUIShots(m_level_shots); } public function restartLevel(_arg1:Boolean=false):void{ var _local2:BaseObject; m_players_health = 49; IngameGUI(m_layers["gui"]).setHealthBarFrame((50 - m_players_health)); m_level_shots = 0; IngameGUI(m_layers["gui"]).setGUIShots(m_level_shots); if (_arg1){ m_level_time = 5; } else { m_level_time = 0; }; IngameGUI(m_layers["gui"]).setGUITime(m_level_time); m_level_timer.reset(); m_level_timer.start(); clearLevel(); for each (_local2 in m_items_on_level) { _local2.restore(); m_layers["level"].addChild(_local2); }; m_canons_on_level_left = m_canons_on_level; GamePlayState.getInstance().allowShooting(); } public function startLevel(_arg1:Number):void{ m_cur_level = (_arg1 - 1); nextLevel(); } private function setWaterState(_arg1:String):void{ MovieClip(m_layers["sea"]["mc_s0"]).gotoAndPlay(_arg1); } public function update():void{ var _local1:ColorTransform; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:BaseObject; var _local8:Number; var _local9:Number; var _local10:BaseObject; var _local11:MovieClip; var _local12:Number; if (m_is_to_boss_level_changing){ m_is_boss_level = true; m_layers["back_boss"].visible = true; if (m_layers["back_boss"].alpha < 1){ m_layers["back_boss"].alpha = (m_layers["back_boss"].alpha + 0.01); m_layers["bg_dark"].alpha = (m_layers["bg_dark"].alpha + 0.01); }; if (m_layers["back"].alpha > 0){ m_layers["back"].alpha = (m_layers["back"].alpha - 0.01); m_layers["bg"].alpha = (m_layers["bg"].alpha - 0.01); }; if (m_color_params["gm"] > 0){ m_color_params["gm"] = (m_color_params["gm"] - 0.01); }; if (m_color_params["bm"] > 0){ m_color_params["bm"] = (m_color_params["bm"] - 0.01); }; if (m_color_params["ro"] < 148){ m_color_params["ro"] = (m_color_params["ro"] + 1); }; _local1 = new ColorTransform(1, m_color_params["gm"], m_color_params["bm"], 1, m_color_params["ro"], 0, 0); m_layers["sea"].transform.colorTransform = _local1; m_player_ship.getWavesMC().transform.colorTransform = _local1; if (m_color_params["ro"] >= 148){ m_is_to_boss_level_changing = false; }; }; if (m_is_to_usual_level_changing){ m_is_boss_level = false; m_layers["back_boss"].visible = true; if (m_layers["back_boss"].alpha > 0){ m_layers["back_boss"].alpha = (m_layers["back_boss"].alpha - 0.01); m_layers["bg_dark"].alpha = (m_layers["bg_dark"].alpha - 0.01); }; if (m_layers["back"].alpha < 1){ m_layers["back"].alpha = (m_layers["back"].alpha + 0.01); m_layers["bg"].alpha = (m_layers["bg"].alpha + 0.01); }; if (m_color_params["gm"] < 1){ m_color_params["gm"] = (m_color_params["gm"] + 0.01); }; if (m_color_params["bm"] < 1){ m_color_params["bm"] = (m_color_params["bm"] + 0.01); }; if (m_color_params["ro"] > 0){ m_color_params["ro"] = (m_color_params["ro"] - 1); }; _local1 = new ColorTransform(1, m_color_params["gm"], m_color_params["bm"], 1, m_color_params["ro"], 0, 0); m_layers["sea"].transform.colorTransform = _local1; m_player_ship.getWavesMC().transform.colorTransform = _local1; if (m_color_params["ro"] <= 0){ m_is_to_usual_level_changing = false; }; }; if (m_is_ship_moving){ _local2 = 2; if (m_layers["player"].x < 0){ m_layers["player"].x = (m_layers["player"].x + _local2); if (m_layers["player"].x >= 0){ m_layers["player"].x = 0; m_is_ship_moving = false; GamePlayState.getInstance().nextCannon(); }; }; }; if (m_is_ship_being_moved){ if (m_is_fort_being_moved){ _local6 = -2; m_cur_fort_x = (m_cur_fort_x - _local6); for each (_local7 in m_items_on_level) { _local7.setPos((_local7.body.GetPosition().x + (_local6 / SCALE)), _local7.body.GetPosition().y); }; m_layers["level_bg"].x = (m_layers["level_bg"].x + _local6); if (m_cur_fort_x >= LevelParser.X_FORT_DISPL){ for each (_local7 in m_items_on_level) { if (_local7.toString() == "[object CannonEnemy]"){ CannonEnemy(_local7).createJoint(); }; if (_local7.toString() == "[object CannonEnemy2]"){ CannonEnemy2(_local7).createJoint(); }; }; m_player_ship.hideWaves(); m_is_fort_being_moved = false; m_is_ship_being_moved = false; if (!m_is_fort_being_destroyed){ IngameGUI(m_layers["gui"]).enableReplay(); }; setWaterState("static"); m_cur_fort_x = 0; }; }; if (b2Math.b2RandomRange(1, 10) <= 2){ m_player_ship.body.ApplyImpulse(new b2Vec2(0, 30), new b2Vec2((30 / SCALE), (310 / SCALE))); }; _local3 = 0.5; _local4 = -1; _local5 = 0; while (_local5 != m_back_items.length) { m_back_items[_local5].x = (m_back_items[_local5].x - _local3); if (m_back_items[_local5].x < -350){ _local4 = _local5; }; _local5++; }; if (_local4 != -1){ m_layers["back"].removeChild(m_back_items[_local4]); m_back_items.splice(_local4, 1); }; _local4 = -1; _local5 = 0; while (_local5 != m_back_boss_items.length) { m_back_boss_items[_local5].x = (m_back_boss_items[_local5].x - _local3); if (m_back_boss_items[_local5].x < -350){ _local4 = _local5; }; _local5++; }; if (_local4 != -1){ m_layers["back_boss"].removeChild(m_back_boss_items[_local4]); m_back_boss_items.splice(_local4, 1); }; if (m_back_items.length > 0){ if (m_back_items[(m_back_items.length - 1)].x < 250){ addBgItems(); }; }; }; if (m_is_fort_being_destroyed){ _local8 = 0; _local9 = 2.5; m_cur_fort_y = (m_cur_fort_y + _local9); for each (_local10 in m_items_on_level) { _local10.body.SetXForm(new b2Vec2((_local10.body.GetPosition().x + (_local8 / SCALE)), (_local10.body.GetPosition().y + (_local9 / SCALE))), _local10.body.GetAngle()); }; m_layers["level_bg"].y = (m_layers["level_bg"].y + _local9); if (b2Math.b2RandomRange(1, 4) <= 2){ _local11 = new mc_water_bulk(); _local11.x = b2Math.b2RandomRange(440, 775); _local11.y = b2Math.b2RandomRange(340, 350); if (m_is_boss_level){ _local11.transform.colorTransform = new ColorTransform(1, 0, 0, 1, 148, 0, 0); }; m_layers["level"].addChild(_local11); }; if (m_cur_fort_y >= 350){ if (m_next_level != -1){ m_cur_level = (m_next_level - 1); nextLevel(); } else { _local12 = ScoreProcessor.current_score; _local12 = (_local12 + (1000 / m_level_shots)); _local12 = (_local12 + (5000 / m_level_time)); if ((((m_cur_level > 2)) && (!(LevelParser.is_parsing)))){ LevelCompleteWnd(m_layers["gui_wnd_level_complete"]).setData((m_cur_level + 1), ScoreProcessor.current_score, m_level_shots, m_level_time, _local12); } else { nextLevel(); }; }; m_is_fort_being_destroyed = false; m_is_ship_being_moved = true; m_layers["level_bg"].x = 0; m_layers["level_bg"].y = 0; }; }; } public function get canonsLeft():Number{ return (m_canons_on_level_left); } public function nextLevel():void{ var _local1:Class; m_players_health = 49; IngameGUI(m_layers["gui"]).setHealthBarFrame((50 - m_players_health)); m_level_shots = 0; IngameGUI(m_layers["gui"]).setGUIShots(m_level_shots); m_level_time = 0; IngameGUI(m_layers["gui"]).setGUITime(m_level_time); m_level_timer.reset(); m_level_timer.start(); m_layers["level_bg"].removeChildAt(0); clearLevel(); m_items_on_level = new Array(); m_cur_level++; LevelParser.parse(m_cur_level, m_world, m_layers["level"], m_layers["level_bg"], true); m_is_fort_being_moved = true; m_player_ship.showWaves(); setWaterState("scroll"); if (m_cur_level > 2){ if (GamePlayState.getInstance().gameProgress.getScoreForLevel((m_cur_level - 1)) == -1){ GamePlayState.getInstance().gameProgress.setScoreForLevel((m_cur_level - 1), 0); }; }; if (((((((m_cur_level + 1) - 2) % 4) == 0)) && ((m_cur_level > 2)))){ m_is_boss_level = true; m_is_to_boss_level_changing = true; } else { if (m_is_boss_level){ m_is_to_usual_level_changing = true; }; m_is_boss_level = false; }; if (m_mc_tut != null){ if (m_mc_tut.parent != null){ m_layers["gui_tut"].removeChild(m_mc_tut); }; }; IngameGUI(m_layers["gui"]).showHealthBar(); IngameGUI(m_layers["gui"]).hideMouseTut(); if (m_cur_level > 2){ IngameGUI(m_layers["gui"]).showLogo(); } else { IngameGUI(m_layers["gui"]).hideLogo(); }; if (m_cur_level == 21){ IngameGUI(m_layers["gui"]).arc_bt.visible = false; } else { IngameGUI(m_layers["gui"]).arc_bt.visible = true; }; switch (m_cur_level){ case 0: IngameGUI(m_layers["gui"]).showMouseTut(); case 1: case 2: case 6: case 10: case 14: _local1 = (getDefinitionByName(("mc_tut_lev" + m_cur_level)) as Class); m_mc_tut = new (_local1); m_mc_tut.x = 3; m_mc_tut.y = 195; m_layers["gui_tut"].addChild(m_mc_tut); m_snd_help.play(0, 0, new SoundTransform(5)); GamePlayState.getInstance().m_is_paused = true; m_level_timer.stop(); break; }; GamePlayState.getInstance().allowShooting(); } public function initFirstLevel():void{ setWaterState("static"); LevelParser.parse(-1, m_world, m_layers["level"], m_layers["level_bg"]); addBgItems(); } public function destroyFort(_arg1:Number=-1):void{ var _local2:BaseObject; m_next_level = _arg1; m_cur_fort_y = 0; m_is_fort_being_destroyed = true; m_snd_bubbling.play(); for each (_local2 in m_items_on_level) { if (_local2.toString() == "[object CannonEnemy]"){ CannonEnemy(_local2).remove(); }; if (_local2.toString() == "[object CannonEnemy2]"){ CannonEnemy2(_local2).remove(); }; }; } public function addItemToLevel(_arg1:BaseObject):void{ m_items_on_level.push(_arg1); } } }//package Gameplay
Section 114
//ScoreProcessor (Gameplay.ScoreProcessor) package Gameplay { import States.*; import flash.display.*; import flash.text.*; public class ScoreProcessor { public static const N_CANNON_DAMAGE:Number = -10; public static const N_CRATE_DESTR:Number = 20; public static const N_BARREL_DESTR:Number = 30; public static const N_SHOT:Number = -5; public static const N_CANNON_DESTR:Number = 150; public static const N_SHOT_DESTR:Number = 77; public static var current_score:Number = 0; public static var mc:Sprite; public static function putScore(_arg1:Number, _arg2:Number, _arg3:Number):void{ var _local4:MovieClip; current_score = (current_score + _arg1); if (_arg1 > 0){ _local4 = new mc_scorehint_green(); TextField(_local4["m_tf"]["m_tf"]).text = ("+" + _arg1); GamePlayState.getInstance().ingameGUI.updateGUIScore(true); } else { _local4 = new mc_scorehint_red(); TextField(_local4["m_tf"]["m_tf"]).text = ("" + _arg1); GamePlayState.getInstance().ingameGUI.updateGUIScore(false); }; _local4.x = _arg2; _local4.y = _arg3; mc.addChild(_local4); } } }//package Gameplay
Section 115
//cooldown_11 (SBResources_fla.cooldown_11) package SBResources_fla { import flash.display.*; public dynamic class cooldown_11 extends MovieClip { public function cooldown_11(){ addFrameScript(49, this.frame50); } function frame50(){ stop(); } } }//package SBResources_fla
Section 116
//explode_141 (SBResources_fla.explode_141) package SBResources_fla { import flash.display.*; public dynamic class explode_141 extends MovieClip { public function explode_141(){ addFrameScript(12, this.frame13); } function frame13(){ stop(); visible = false; } } }//package SBResources_fla
Section 117
//explode2_10 (SBResources_fla.explode2_10) package SBResources_fla { import flash.display.*; public dynamic class explode2_10 extends MovieClip { public function explode2_10(){ addFrameScript(12, this.frame13); } function frame13(){ stop(); visible = false; } } }//package SBResources_fla
Section 118
//explode3_119 (SBResources_fla.explode3_119) package SBResources_fla { import flash.display.*; public dynamic class explode3_119 extends MovieClip { public function explode3_119(){ addFrameScript(12, this.frame13); } function frame13(){ stop(); visible = false; } } }//package SBResources_fla
Section 119
//levelcomplete_chest_type_92 (SBResources_fla.levelcomplete_chest_type_92) package SBResources_fla { import flash.display.*; public dynamic class levelcomplete_chest_type_92 extends MovieClip { public function levelcomplete_chest_type_92(){ addFrameScript(0, this.frame1, 1, this.frame2, 2, this.frame3); } function frame1(){ stop(); } function frame2(){ stop(); } function frame3(){ stop(); } } }//package SBResources_fla
Section 120
//mc_chest_icon_116 (SBResources_fla.mc_chest_icon_116) package SBResources_fla { import flash.display.*; public dynamic class mc_chest_icon_116 extends MovieClip { public function mc_chest_icon_116(){ addFrameScript(0, this.frame1, 1, this.frame2, 2, this.frame3); } function frame1(){ stop(); } function frame2(){ stop(); } function frame3(){ stop(); } } }//package SBResources_fla
Section 121
//mc_flash_health_28 (SBResources_fla.mc_flash_health_28) package SBResources_fla { import flash.display.*; public dynamic class mc_flash_health_28 extends MovieClip { public function mc_flash_health_28(){ addFrameScript(9, this.frame10); } function frame10(){ stop(); visible = false; } } }//package SBResources_fla
Section 122
//scoresvalue_anims_18 (SBResources_fla.scoresvalue_anims_18) package SBResources_fla { import flash.display.*; public dynamic class scoresvalue_anims_18 extends MovieClip { public var m_tf:MovieClip; public function scoresvalue_anims_18(){ addFrameScript(0, this.frame1, 14, this.frame15, 29, this.frame30); } function frame15(){ gotoAndStop(1); } function frame1(){ stop(); } function frame30(){ gotoAndStop(1); } } }//package SBResources_fla
Section 123
//water_test_3 (SBResources_fla.water_test_3) package SBResources_fla { import flash.display.*; public dynamic class water_test_3 extends MovieClip { public function water_test_3(){ addFrameScript(59, this.frame60, 119, this.frame120); } function frame120(){ gotoAndPlay("static"); } function frame60(){ gotoAndPlay("scroll"); } } }//package SBResources_fla
Section 124
//GamePlayState (States.GamePlayState) package States { import flash.events.*; import Box2D.Dynamics.*; import Gameplay.*; import flash.display.*; import Box2D.Collision.*; import Box2D.Common.Math.*; import Box2D.Collision.Shapes.*; import GameObjects.*; import flash.media.*; import flash.utils.*; import GameObjects.MapItems.*; import flash.geom.*; import flash.net.*; public class GamePlayState extends GameState { private const SCALE:Number = 30; private var m_world:b2World; private var m_cannons:Array; private var m_level_processor:LevelProcessor; public var mc_arc_btn:MovieClip; private var m_game_progress:GameProgress; private var m_timeStep:Number;// = 0.0333333333333333 private var m_cur_cannon_ind:Number;// = 0 public var m_is_paused:Boolean;// = false public var m_layers:Array; private var m_iterations:int;// = 10 private var m_mc_gui:IngameGUI; public var m_bmb:MovieClip; public var m_more:MovieClip; public var m_allow_shooting:Boolean;// = true private var mus_main:Sound; private var m_player_ship:ShipPlayers; private var m_destr_list:Array; private static var m_instance:GamePlayState; public function GamePlayState(){ m_layers = new Array(); m_destr_list = new Array(); m_game_progress = new GameProgress(); m_cannons = new Array(); mc_arc_btn = new mc_arcadebomb_logo(); m_more = new mc_more(); m_bmb = new mc_bmb(); mus_main = new mus_main_theme(); super(); m_title = "GamePlayState"; } override protected function onUpdate():void{ var _local2:b2Body; var _local3:Sound; var _local4:MovieClip; m_level_processor.update(); m_world.Step(m_timeStep, m_iterations); var _local1:b2Body = m_world.m_bodyList; while (_local1) { if ((_local1.m_userData is Sprite)){ _local1.m_userData.x = (_local1.GetPosition().x * SCALE); _local1.m_userData.y = (_local1.GetPosition().y * SCALE); if (((((!((_local1.m_userData.toString() == "[object Cannonball]"))) && (!((_local1.m_userData.toString() == "[object EnemyCannonball]"))))) && (!((_local1.m_userData.toString() == "[object SwitchCannonBall]"))))){ _local1.m_userData.rotation = (_local1.GetAngle() * (180 / Math.PI)); }; if (((((!((_local1.m_userData.toString() == "[object mc_fort_basement]"))) && (!(m_level_processor.m_is_fort_being_destroyed)))) && (!(m_level_processor.m_is_ship_being_moved)))){ if ((((((((_local1.m_userData.y > 340)) && (_local1.m_userData.visible))) && ((_local1.m_userData.x > 0)))) && ((_local1.m_userData.x < 700)))){ _local3 = new snd_splash(); _local3.play(0, 0, new SoundTransform(0.5)); _local1.m_userData.visible = false; _local4 = new mc_bulk(); _local4.x = _local1.m_userData.x; _local4.y = _local1.m_userData.y; if (m_level_processor.m_is_boss_level){ _local4.transform.colorTransform = new ColorTransform(1, 0, 0, 1, 148, 0, 0); }; addChild(_local4); }; }; if ((((_local1.m_userData.y > 340)) && (_local1.m_userData.visible))){ if (_local1.m_userData.toString() == "[object BarrelExplosive]"){ BarrelExplosive(_local1.m_userData).m_was_exploded = true; }; }; }; _local1 = _local1.m_next; }; for each (_local2 in m_destr_list) { m_world.DestroyBody(_local2); if (_local2.GetUserData().parent != null){ _local2.GetUserData().parent.removeChild(_local2.GetUserData()); }; }; m_destr_list = new Array(); } public function nextCannon():void{ var _local1:CannonPlayer; for each (_local1 in m_cannons) { _local1.disable(); }; m_cur_cannon_ind++; if (m_cur_cannon_ind >= 3){ m_cur_cannon_ind = 0; }; CannonPlayer(m_cannons[m_cur_cannon_ind]).enable(); } public function allowShooting():void{ var sh_timer:Timer = new Timer(300, 1); sh_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function (_arg1:Event):void{ m_allow_shooting = true; }); sh_timer.start(); } override protected function onInit():void{ mus_main.play(0, int.MAX_VALUE, new SoundTransform(0.45)); m_game_progress.load(); var worldAABB:b2AABB = new b2AABB(); var gravity:b2Vec2 = new b2Vec2(0, 10); var doSleep:Boolean; worldAABB.lowerBound.Set((-500 / SCALE), (-300 / SCALE)); worldAABB.upperBound.Set((1400 / SCALE), (450 / SCALE)); m_world = new b2World(worldAABB, gravity, doSleep); m_world.SetContactListener(new GameContactListener()); m_more.x = 306; m_more.y = 360; m_bmb.x = 0xFF; m_bmb.y = 366; mc_arc_btn.x = 280; mc_arc_btn.y = 370; mc_arc_btn.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://arcadebomb.com"); navigateToURL(_local2); }); m_layers["sea"] = new mc_sea(); m_layers["sea"].x = 0; m_layers["sea"].y = 339; m_layers["bg"] = new mc_bg(); m_layers["level_bg"] = new Sprite(); m_layers["level"] = new Sprite(); m_layers["player"] = new Sprite(); m_layers["back"] = new Sprite(); m_layers["back_boss"] = new Sprite(); m_layers["bg_dark"] = new mc_backsky_red(); m_layers["gui"] = new IngameGUI(); m_layers["gui_wnd_level_complete"] = new LevelCompleteWnd(); m_layers["gui_wnd_level_select"] = new ChoseLevelWnd(); m_layers["gui_wnd_defeat"] = new DefeatWnd(); m_layers["gui_wnd_credits"] = new CreditsWnd(); m_layers["gui_tut"] = new MovieClip(); m_layers["gui_wnd_final"] = new FinalWnd(); m_world.GetGroundBody().m_userData = m_layers["level"]; m_layers["back_boss"].visible = false; m_layers["back_boss"].alpha = 0; m_layers["bg_dark"].alpha = 0; addChild(m_layers["bg"]); addChild(m_layers["bg_dark"]); addChild(m_layers["back"]); addChild(m_layers["back_boss"]); addChild(m_layers["level_bg"]); addChild(m_layers["level"]); addChild(m_layers["player"]); addChild(m_layers["sea"]); addChild(mc_arc_btn); addChild(m_more); addChild(m_bmb); addChild(m_layers["gui"]); addChild(m_layers["gui_tut"]); addChild(m_layers["gui_wnd_level_complete"]); addChild(m_layers["gui_wnd_level_select"]); addChild(m_layers["gui_wnd_defeat"]); addChild(m_layers["gui_wnd_credits"]); addChild(m_layers["gui_wnd_final"]); m_layers["gui_wnd_level_complete"].visible = false; m_layers["gui_wnd_level_select"].visible = false; m_layers["gui_wnd_credits"].visible = false; m_layers["gui_wnd_final"].visible = false; ScoreProcessor.mc = m_layers["gui"]; m_player_ship = new ShipPlayers(m_world, 150, 330); m_layers["player"].addChild(m_player_ship); m_layers["player"].x = -500; var cannon:CannonPlayer = new CannonPlayer(m_world, m_player_ship, 45, 0x0101); m_layers["player"].addChild(cannon); m_cannons.push(cannon); cannon = new CannonPlayer(m_world, m_player_ship, 113, 290); m_layers["player"].addChild(cannon); m_cannons.push(cannon); cannon = new CannonPlayer(m_world, m_player_ship, 198, 290); m_layers["player"].addChild(cannon); m_cannons.push(cannon); m_cur_cannon_ind = -1; m_allow_shooting = true; m_level_processor = new LevelProcessor(m_world, m_layers, m_player_ship); m_level_processor.initFirstLevel(); } public function get gameProgress():GameProgress{ return (m_game_progress); } public function addToDestroyList(_arg1:b2Body):void{ if (m_destr_list.indexOf(_arg1) == -1){ m_destr_list.push(_arg1); }; } override protected function onCleanUp():void{ } public function get levelProcessor():LevelProcessor{ return (m_level_processor); } public function get ingameGUI():IngameGUI{ return (m_layers["gui"]); } public function unpause():void{ m_is_paused = false; levelProcessor.m_level_timer.start(); } public static function getInstance():GamePlayState{ if (m_instance == null){ m_instance = new (GamePlayState); }; return (m_instance); } } }//package States
Section 125
//GameState (States.GameState) package States { import flash.display.*; public class GameState extends Sprite { protected var m_title:String; public function init():void{ onInit(); } public function cleanUp():void{ onCleanUp(); } protected function onCleanUp():void{ } protected function onUpdate():void{ } public function update():void{ onUpdate(); } override public function toString():String{ return (m_title); } protected function onInit():void{ } } }//package States
Section 126
//PreloaderState (States.PreloaderState) package States { import flash.events.*; import flash.display.*; import flash.net.*; public class PreloaderState extends GameState { private var m_ab_splash:MovieClip; private static var m_instance:PreloaderState; public function PreloaderState(){ m_title = "PreloaderState"; } private function onSplashClick(_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://arcadebomb.com"); navigateToURL(_local2); } public function startGame():void{ m_ab_splash.removeEventListener(MouseEvent.CLICK, onSplashClick); removeChild(m_ab_splash); StateManager.getInstance().changeState(GamePlayState.getInstance()); } override protected function onCleanUp():void{ } override protected function onUpdate():void{ } override protected function onInit():void{ m_ab_splash = new mc_ab_splash(); addChild(m_ab_splash); m_ab_splash.buttonMode = true; m_ab_splash.addEventListener(MouseEvent.CLICK, onSplashClick); } public static function getInstance():PreloaderState{ if (m_instance == null){ m_instance = new (PreloaderState); }; return (m_instance); } } }//package States
Section 127
//back_loading (back_loading) package { import flash.display.*; public dynamic class back_loading extends BitmapData { public function back_loading(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package
Section 128
//backshape_b_0 (backshape_b_0) package { import flash.display.*; public dynamic class backshape_b_0 extends MovieClip { } }//package
Section 129
//backshape_b_1 (backshape_b_1) package { import flash.display.*; public dynamic class backshape_b_1 extends MovieClip { } }//package
Section 130
//backshape_b_2 (backshape_b_2) package { import flash.display.*; public dynamic class backshape_b_2 extends MovieClip { } }//package
Section 131
//backshape_b_3 (backshape_b_3) package { import flash.display.*; public dynamic class backshape_b_3 extends MovieClip { } }//package
Section 132
//backshape_b_4 (backshape_b_4) package { import flash.display.*; public dynamic class backshape_b_4 extends MovieClip { } }//package
Section 133
//backshape_b_5 (backshape_b_5) package { import flash.display.*; public dynamic class backshape_b_5 extends MovieClip { } }//package
Section 134
//backshape_b_6 (backshape_b_6) package { import flash.display.*; public dynamic class backshape_b_6 extends MovieClip { } }//package
Section 135
//backshape_b_7 (backshape_b_7) package { import flash.display.*; public dynamic class backshape_b_7 extends MovieClip { } }//package
Section 136
//backshape_u_0 (backshape_u_0) package { import flash.display.*; public dynamic class backshape_u_0 extends MovieClip { } }//package
Section 137
//backshape_u_1 (backshape_u_1) package { import flash.display.*; public dynamic class backshape_u_1 extends MovieClip { } }//package
Section 138
//backshape_u_2 (backshape_u_2) package { import flash.display.*; public dynamic class backshape_u_2 extends MovieClip { } }//package
Section 139
//backshape_u_3 (backshape_u_3) package { import flash.display.*; public dynamic class backshape_u_3 extends MovieClip { } }//package
Section 140
//backshape_u_4 (backshape_u_4) package { import flash.display.*; public dynamic class backshape_u_4 extends MovieClip { } }//package
Section 141
//backshape_u_5 (backshape_u_5) package { import flash.display.*; public dynamic class backshape_u_5 extends MovieClip { } }//package
Section 142
//bricks (bricks) package { import flash.display.*; public dynamic class bricks extends MovieClip { } }//package
Section 143
//bricks_bott (bricks_bott) package { import flash.display.*; public dynamic class bricks_bott extends MovieClip { } }//package
Section 144
//bricks_corner (bricks_corner) package { import flash.display.*; public dynamic class bricks_corner extends MovieClip { } }//package
Section 145
//bricks_corner2 (bricks_corner2) package { import flash.display.*; public dynamic class bricks_corner2 extends MovieClip { } }//package
Section 146
//bricks_corner3 (bricks_corner3) package { import flash.display.*; public dynamic class bricks_corner3 extends MovieClip { } }//package
Section 147
//bricks_corner4 (bricks_corner4) package { import flash.display.*; public dynamic class bricks_corner4 extends MovieClip { } }//package
Section 148
//bricks_loop_hor (bricks_loop_hor) package { import flash.display.*; public dynamic class bricks_loop_hor extends MovieClip { } }//package
Section 149
//bricks_loop_hor2 (bricks_loop_hor2) package { import flash.display.*; public dynamic class bricks_loop_hor2 extends MovieClip { } }//package
Section 150
//bricks_loop_vert (bricks_loop_vert) package { import flash.display.*; public dynamic class bricks_loop_vert extends MovieClip { } }//package
Section 151
//bricks_loop_vert2 (bricks_loop_vert2) package { import flash.display.*; public dynamic class bricks_loop_vert2 extends MovieClip { } }//package
Section 152
//bricks_side (bricks_side) package { import flash.display.*; public dynamic class bricks_side extends MovieClip { } }//package
Section 153
//bricks_side2 (bricks_side2) package { import flash.display.*; public dynamic class bricks_side2 extends MovieClip { } }//package
Section 154
//bricks_top (bricks_top) package { import flash.display.*; public dynamic class bricks_top extends MovieClip { } }//package
Section 155
//bricks1 (bricks1) package { import flash.display.*; public dynamic class bricks1 extends MovieClip { } }//package
Section 156
//bt_Walkthrough (bt_Walkthrough) package { import flash.display.*; public dynamic class bt_Walkthrough extends SimpleButton { } }//package
Section 157
//btn_continue (btn_continue) package { import flash.display.*; public dynamic class btn_continue extends SimpleButton { } }//package
Section 158
//btn_credits (btn_credits) package { import flash.display.*; public dynamic class btn_credits extends SimpleButton { } }//package
Section 159
//btn_level_x0 (btn_level_x0) package { import flash.display.*; import flash.text.*; public dynamic class btn_level_x0 extends MovieClip { public var m_tf:TextField; public function btn_level_x0(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 160
//btn_level_x1 (btn_level_x1) package { import flash.display.*; import flash.text.*; public dynamic class btn_level_x1 extends MovieClip { public var m_tf:TextField; public function btn_level_x1(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 161
//btn_level_x2 (btn_level_x2) package { import flash.display.*; import flash.text.*; public dynamic class btn_level_x2 extends MovieClip { public var m_tf:TextField; public function btn_level_x2(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 162
//btn_level_x3 (btn_level_x3) package { import flash.display.*; import flash.text.*; public dynamic class btn_level_x3 extends MovieClip { public var m_tf:TextField; public function btn_level_x3(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 163
//btn_play (btn_play) package { import flash.display.*; public dynamic class btn_play extends SimpleButton { } }//package
Section 164
//btn_quit (btn_quit) package { import flash.display.*; public dynamic class btn_quit extends SimpleButton { } }//package
Section 165
//btn_replay (btn_replay) package { import flash.display.*; public dynamic class btn_replay extends MovieClip { } }//package
Section 166
//btn_soundoff (btn_soundoff) package { import flash.display.*; public dynamic class btn_soundoff extends SimpleButton { } }//package
Section 167
//btn_soundon (btn_soundon) package { import flash.display.*; public dynamic class btn_soundon extends SimpleButton { } }//package
Section 168
//dot (dot) package { import flash.display.*; public dynamic class dot extends MovieClip { } }//package
Section 169
//level (level) package { import flash.display.*; public dynamic class level extends MovieClip { } }//package
Section 170
//level_back (level_back) package { import flash.display.*; public dynamic class level_back extends MovieClip { } }//package
Section 171
//level0 (level0) package { import flash.display.*; public dynamic class level0 extends MovieClip { } }//package
Section 172
//level0_back (level0_back) package { import flash.display.*; public dynamic class level0_back extends MovieClip { } }//package
Section 173
//level1 (level1) package { import flash.display.*; public dynamic class level1 extends MovieClip { } }//package
Section 174
//level1_back (level1_back) package { import flash.display.*; public dynamic class level1_back extends MovieClip { } }//package
Section 175
//level10 (level10) package { import flash.display.*; public dynamic class level10 extends MovieClip { } }//package
Section 176
//level10_back (level10_back) package { import flash.display.*; public dynamic class level10_back extends MovieClip { } }//package
Section 177
//level11 (level11) package { import flash.display.*; public dynamic class level11 extends MovieClip { } }//package
Section 178
//level11_back (level11_back) package { import flash.display.*; public dynamic class level11_back extends MovieClip { } }//package
Section 179
//level12 (level12) package { import flash.display.*; public dynamic class level12 extends MovieClip { } }//package
Section 180
//level12_back (level12_back) package { import flash.display.*; public dynamic class level12_back extends MovieClip { } }//package
Section 181
//level13 (level13) package { import flash.display.*; public dynamic class level13 extends MovieClip { } }//package
Section 182
//level13_back (level13_back) package { import flash.display.*; public dynamic class level13_back extends MovieClip { } }//package
Section 183
//level14 (level14) package { import flash.display.*; public dynamic class level14 extends MovieClip { } }//package
Section 184
//level14_back (level14_back) package { import flash.display.*; public dynamic class level14_back extends MovieClip { } }//package
Section 185
//level15 (level15) package { import flash.display.*; public dynamic class level15 extends MovieClip { } }//package
Section 186
//level15_back (level15_back) package { import flash.display.*; public dynamic class level15_back extends MovieClip { } }//package
Section 187
//level16 (level16) package { import flash.display.*; public dynamic class level16 extends MovieClip { } }//package
Section 188
//level16_back (level16_back) package { import flash.display.*; public dynamic class level16_back extends MovieClip { } }//package
Section 189
//level17 (level17) package { import flash.display.*; public dynamic class level17 extends MovieClip { } }//package
Section 190
//level17_back (level17_back) package { import flash.display.*; public dynamic class level17_back extends MovieClip { } }//package
Section 191
//level18 (level18) package { import flash.display.*; public dynamic class level18 extends MovieClip { } }//package
Section 192
//level18_back (level18_back) package { import flash.display.*; public dynamic class level18_back extends MovieClip { } }//package
Section 193
//level19 (level19) package { import flash.display.*; public dynamic class level19 extends MovieClip { } }//package
Section 194
//level19_back (level19_back) package { import flash.display.*; public dynamic class level19_back extends MovieClip { } }//package
Section 195
//level2 (level2) package { import flash.display.*; public dynamic class level2 extends MovieClip { } }//package
Section 196
//level2_back (level2_back) package { import flash.display.*; public dynamic class level2_back extends MovieClip { } }//package
Section 197
//level20 (level20) package { import flash.display.*; public dynamic class level20 extends MovieClip { } }//package
Section 198
//level20_back (level20_back) package { import flash.display.*; public dynamic class level20_back extends MovieClip { } }//package
Section 199
//level21 (level21) package { import flash.display.*; public dynamic class level21 extends MovieClip { } }//package
Section 200
//level21_back (level21_back) package { import flash.display.*; public dynamic class level21_back extends MovieClip { } }//package
Section 201
//level22 (level22) package { import flash.display.*; public dynamic class level22 extends MovieClip { } }//package
Section 202
//level22_back (level22_back) package { import flash.display.*; public dynamic class level22_back extends MovieClip { } }//package
Section 203
//level23 (level23) package { import flash.display.*; public dynamic class level23 extends MovieClip { } }//package
Section 204
//level23_back (level23_back) package { import flash.display.*; public dynamic class level23_back extends MovieClip { } }//package
Section 205
//level24 (level24) package { import flash.display.*; public dynamic class level24 extends MovieClip { } }//package
Section 206
//level24_back (level24_back) package { import flash.display.*; public dynamic class level24_back extends MovieClip { } }//package
Section 207
//level25 (level25) package { import flash.display.*; public dynamic class level25 extends MovieClip { } }//package
Section 208
//level25_back (level25_back) package { import flash.display.*; public dynamic class level25_back extends MovieClip { } }//package
Section 209
//level26 (level26) package { import flash.display.*; public dynamic class level26 extends MovieClip { } }//package
Section 210
//level26_back (level26_back) package { import flash.display.*; public dynamic class level26_back extends MovieClip { } }//package
Section 211
//level27 (level27) package { import flash.display.*; public dynamic class level27 extends MovieClip { } }//package
Section 212
//level27_back (level27_back) package { import flash.display.*; public dynamic class level27_back extends MovieClip { } }//package
Section 213
//level28 (level28) package { import flash.display.*; public dynamic class level28 extends MovieClip { } }//package
Section 214
//level28_back (level28_back) package { import flash.display.*; public dynamic class level28_back extends MovieClip { } }//package
Section 215
//level29 (level29) package { import flash.display.*; public dynamic class level29 extends MovieClip { } }//package
Section 216
//level29_back (level29_back) package { import flash.display.*; public dynamic class level29_back extends MovieClip { } }//package
Section 217
//level3 (level3) package { import flash.display.*; public dynamic class level3 extends MovieClip { } }//package
Section 218
//level3_back (level3_back) package { import flash.display.*; public dynamic class level3_back extends MovieClip { } }//package
Section 219
//level4 (level4) package { import flash.display.*; public dynamic class level4 extends MovieClip { } }//package
Section 220
//level4_back (level4_back) package { import flash.display.*; public dynamic class level4_back extends MovieClip { } }//package
Section 221
//level5 (level5) package { import flash.display.*; public dynamic class level5 extends MovieClip { } }//package
Section 222
//level5_back (level5_back) package { import flash.display.*; public dynamic class level5_back extends MovieClip { } }//package
Section 223
//level6 (level6) package { import flash.display.*; public dynamic class level6 extends MovieClip { } }//package
Section 224
//level6_back (level6_back) package { import flash.display.*; public dynamic class level6_back extends MovieClip { } }//package
Section 225
//level7 (level7) package { import flash.display.*; public dynamic class level7 extends MovieClip { } }//package
Section 226
//level7_back (level7_back) package { import flash.display.*; public dynamic class level7_back extends MovieClip { } }//package
Section 227
//level8 (level8) package { import flash.display.*; public dynamic class level8 extends MovieClip { } }//package
Section 228
//level8_back (level8_back) package { import flash.display.*; public dynamic class level8_back extends MovieClip { } }//package
Section 229
//level9 (level9) package { import flash.display.*; public dynamic class level9 extends MovieClip { } }//package
Section 230
//level9_back (level9_back) package { import flash.display.*; public dynamic class level9_back extends MovieClip { } }//package
Section 231
//mc_ab_splash (mc_ab_splash) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_ab_splash extends MovieClip { public var mc_movie:MovieClip; public function mc_ab_splash(){ addFrameScript(169, this.frame170); } function frame170(){ var _local1 = parent; _local1["startGame"](); stop(); this["mc_movie"].stop(); } } }//package
Section 232
//mc_aim (mc_aim) package { import flash.display.*; public dynamic class mc_aim extends MovieClip { } }//package
Section 233
//mc_arc_bt (mc_arc_bt) package { import flash.events.*; import flash.display.*; import flash.net.*; public dynamic class mc_arc_bt extends MovieClip { public var link_btn:SimpleButton; public function mc_arc_bt(){ addFrameScript(0, this.frame1); } function frame1(){ addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://arcadebomb.com"); navigateToURL(_local2); }); } } }//package
Section 234
//mc_arcadebomb_logo (mc_arcadebomb_logo) package { import flash.display.*; public dynamic class mc_arcadebomb_logo extends MovieClip { } }//package
Section 235
//mc_ash (mc_ash) package { import flash.display.*; public dynamic class mc_ash extends MovieClip { } }//package
Section 236
//mc_backsky_red (mc_backsky_red) package { import flash.display.*; public dynamic class mc_backsky_red extends MovieClip { } }//package
Section 237
//mc_barrel (mc_barrel) package { import flash.display.*; public dynamic class mc_barrel extends MovieClip { } }//package
Section 238
//mc_bg (mc_bg) package { import flash.display.*; public dynamic class mc_bg extends MovieClip { } }//package
Section 239
//mc_bmb (mc_bmb) package { import flash.display.*; public dynamic class mc_bmb extends MovieClip { } }//package
Section 240
//mc_bulk (mc_bulk) package { import flash.display.*; public dynamic class mc_bulk extends MovieClip { public function mc_bulk(){ addFrameScript(15, this.frame16); } function frame16(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 241
//mc_bullet_explode (mc_bullet_explode) package { import flash.display.*; public dynamic class mc_bullet_explode extends MovieClip { public function mc_bullet_explode(){ addFrameScript(6, this.frame7); } function frame7(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 242
//mc_cannon_enemy (mc_cannon_enemy) package { import flash.display.*; public dynamic class mc_cannon_enemy extends MovieClip { public var mc_health:MovieClip; public var m_gun:MovieClip; } }//package
Section 243
//mc_cannon_player (mc_cannon_player) package { import flash.display.*; public dynamic class mc_cannon_player extends MovieClip { public var m_gun:MovieClip; public var m_center:MovieClip; } }//package
Section 244
//mc_cannon2_enemy (mc_cannon2_enemy) package { import flash.display.*; public dynamic class mc_cannon2_enemy extends MovieClip { public var m_gun:MovieClip; } }//package
Section 245
//mc_cannonball (mc_cannonball) package { import flash.display.*; public dynamic class mc_cannonball extends MovieClip { } }//package
Section 246
//mc_chain (mc_chain) package { import flash.display.*; public dynamic class mc_chain extends MovieClip { } }//package
Section 247
//mc_chain_long (mc_chain_long) package { import flash.display.*; public dynamic class mc_chain_long extends MovieClip { } }//package
Section 248
//mc_chain_short (mc_chain_short) package { import flash.display.*; public dynamic class mc_chain_short extends MovieClip { } }//package
Section 249
//mc_choose_level_interface (mc_choose_level_interface) package { import flash.display.*; import flash.text.*; public dynamic class mc_choose_level_interface extends MovieClip { public var bt_lev0:btn_level_x0; public var bt_lev1:btn_level_x1; public var bt_lev3:btn_level_x3; public var m_metal_score:TextField; public var mc_chest_0:MovieClip; public var mc_chest_1:MovieClip; public var mc_chest_2:MovieClip; public var mc_chest_3:MovieClip; public var bt_p0:MovieClip; public var bt_p1:MovieClip; public var bt_p2:MovieClip; public var bt_p3:MovieClip; public var bt_p4:MovieClip; public var bt_p6:MovieClip; public var m_cur_score:TextField; public var bt_p5:MovieClip; public var m_bt_close:SimpleButton; public var m_golden_score:TextField; public var bt_lev2:btn_level_x2; } }//package
Section 250
//mc_crane_long (mc_crane_long) package { import flash.display.*; public dynamic class mc_crane_long extends MovieClip { } }//package
Section 251
//mc_crane_mid (mc_crane_mid) package { import flash.display.*; public dynamic class mc_crane_mid extends MovieClip { } }//package
Section 252
//mc_crane_short (mc_crane_short) package { import flash.display.*; public dynamic class mc_crane_short extends MovieClip { } }//package
Section 253
//mc_crashed_block (mc_crashed_block) package { import flash.display.*; public dynamic class mc_crashed_block extends MovieClip { public function mc_crashed_block(){ addFrameScript(0, this.frame1, 1, this.frame2, 2, this.frame3, 3, this.frame4); } function frame1(){ stop(); } function frame2(){ stop(); } function frame3(){ stop(); } function frame4(){ stop(); } } }//package
Section 254
//mc_crate (mc_crate) package { import flash.display.*; public dynamic class mc_crate extends MovieClip { } }//package
Section 255
//mc_crate_explode (mc_crate_explode) package { import flash.display.*; public dynamic class mc_crate_explode extends MovieClip { public function mc_crate_explode(){ addFrameScript(6, this.frame7); } function frame7(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 256
//mc_credits_wnd (mc_credits_wnd) package { import flash.display.*; public dynamic class mc_credits_wnd extends MovieClip { public var m_mc_email_jamayka:MovieClip; public var bt_close:SimpleButton; public var m_mc_email_koseki:MovieClip; } }//package
Section 257
//mc_crosshair (mc_crosshair) package { import flash.display.*; public dynamic class mc_crosshair extends MovieClip { } }//package
Section 258
//mc_defeat_screen (mc_defeat_screen) package { import flash.display.*; public dynamic class mc_defeat_screen extends MovieClip { public var m_bt_replay:SimpleButton; } }//package
Section 259
//mc_explode (mc_explode) package { import flash.display.*; public dynamic class mc_explode extends MovieClip { public function mc_explode(){ addFrameScript(12, this.frame13); } function frame13(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 260
//mc_final (mc_final) package { import flash.display.*; import flash.text.*; public dynamic class mc_final extends MovieClip { public var tf_wooden:TextField; public var tf_metal:TextField; public var bt_close:SimpleButton; public var tf_gold:TextField; } }//package
Section 261
//mc_flash_health (mc_flash_health) package { import flash.display.*; public dynamic class mc_flash_health extends MovieClip { public var mc:MovieClip; } }//package
Section 262
//mc_fort_basement (mc_fort_basement) package { import flash.display.*; public dynamic class mc_fort_basement extends MovieClip { } }//package
Section 263
//mc_jail_chamber (mc_jail_chamber) package { import flash.display.*; public dynamic class mc_jail_chamber extends MovieClip { } }//package
Section 264
//mc_level_complete_screen (mc_level_complete_screen) package { import flash.display.*; import flash.text.*; public dynamic class mc_level_complete_screen extends MovieClip { public var m_bt_replay:SimpleButton; public var tf_score:TextField; public var tf_total_score:TextField; public var tf_shots:TextField; public var m_bt_next:SimpleButton; public var tf_time:TextField; public var mc_level:TextField; public var mc_chest:MovieClip; } }//package
Section 265
//mc_levelnumber (mc_levelnumber) package { import flash.display.*; import flash.text.*; public dynamic class mc_levelnumber extends MovieClip { public var m_tf:TextField; } }//package
Section 266
//mc_loading_bar (mc_loading_bar) package { import flash.display.*; public dynamic class mc_loading_bar extends MovieClip { } }//package
Section 267
//mc_loading_bg (mc_loading_bg) package { import flash.display.*; public dynamic class mc_loading_bg extends MovieClip { } }//package
Section 268
//mc_metal_box (mc_metal_box) package { import flash.display.*; public dynamic class mc_metal_box extends MovieClip { } }//package
Section 269
//mc_mill (mc_mill) package { import flash.display.*; public dynamic class mc_mill extends MovieClip { } }//package
Section 270
//mc_more (mc_more) package { import flash.display.*; public dynamic class mc_more extends MovieClip { } }//package
Section 271
//mc_mouses (mc_mouses) package { import flash.display.*; public dynamic class mc_mouses extends MovieClip { } }//package
Section 272
//mc_perc (mc_perc) package { import flash.display.*; import flash.text.*; public dynamic class mc_perc extends MovieClip { public var tf_perc:TextField; } }//package
Section 273
//mc_platform (mc_platform) package { import flash.display.*; public dynamic class mc_platform extends MovieClip { } }//package
Section 274
//mc_playerhealthbar (mc_playerhealthbar) package { import flash.display.*; public dynamic class mc_playerhealthbar extends MovieClip { } }//package
Section 275
//mc_pres (mc_pres) package { import flash.display.*; public dynamic class mc_pres extends MovieClip { } }//package
Section 276
//mc_scorehint_green (mc_scorehint_green) package { import flash.display.*; public dynamic class mc_scorehint_green extends MovieClip { public var m_tf:MovieClip; public function mc_scorehint_green(){ addFrameScript(29, this.frame30); } function frame30(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 277
//mc_scorehint_red (mc_scorehint_red) package { import flash.display.*; public dynamic class mc_scorehint_red extends MovieClip { public var m_tf:MovieClip; public function mc_scorehint_red(){ addFrameScript(29, this.frame30); } function frame30(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 278
//mc_scores (mc_scores) package { import flash.display.*; public dynamic class mc_scores extends MovieClip { public var m_tf:MovieClip; } }//package
Section 279
//mc_sea (mc_sea) package { import flash.display.*; public dynamic class mc_sea extends MovieClip { public var mc_s0:MovieClip; } }//package
Section 280
//mc_ship_player (mc_ship_player) package { import flash.display.*; public dynamic class mc_ship_player extends MovieClip { public var mc_wave:MovieClip; } }//package
Section 281
//mc_shots (mc_shots) package { import flash.display.*; import flash.text.*; public dynamic class mc_shots extends MovieClip { public var m_tf:TextField; } }//package
Section 282
//mc_switch (mc_switch) package { import flash.display.*; public dynamic class mc_switch extends MovieClip { public function mc_switch(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 283
//mc_switch1 (mc_switch1) package { import flash.display.*; public dynamic class mc_switch1 extends MovieClip { public function mc_switch1(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 284
//mc_switch2 (mc_switch2) package { import flash.display.*; public dynamic class mc_switch2 extends MovieClip { public function mc_switch2(){ addFrameScript(0, this.frame1); } function frame1(){ stop(); } } }//package
Section 285
//mc_switchcannon (mc_switchcannon) package { import flash.display.*; public dynamic class mc_switchcannon extends MovieClip { public var mc_cannon:MovieClip; } }//package
Section 286
//mc_switchcannon1 (mc_switchcannon1) package { import flash.display.*; public dynamic class mc_switchcannon1 extends MovieClip { public var mc_cannon:MovieClip; } }//package
Section 287
//mc_switchcannon2 (mc_switchcannon2) package { import flash.display.*; public dynamic class mc_switchcannon2 extends MovieClip { public var mc_cannon:MovieClip; } }//package
Section 288
//mc_switchcannon3 (mc_switchcannon3) package { import flash.display.*; public dynamic class mc_switchcannon3 extends MovieClip { public var mc_cannon:MovieClip; } }//package
Section 289
//mc_time (mc_time) package { import flash.display.*; import flash.text.*; public dynamic class mc_time extends MovieClip { public var m_tf:TextField; } }//package
Section 290
//mc_tut_lev0 (mc_tut_lev0) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_tut_lev0 extends MovieClip { public var m_bt_next:SimpleButton; public function mc_tut_lev0(){ addFrameScript(9, this.frame10, 19, this.frame20); } function frame20(){ stop(); if (parent != null){ var _local1 = parent.parent; _local1["unpause"](); parent.removeChild(this); }; } function frame10(){ stop(); this.m_bt_next.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ _arg1.target.parent.play(); }); } } }//package
Section 291
//mc_tut_lev1 (mc_tut_lev1) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_tut_lev1 extends MovieClip { public var m_bt_next:SimpleButton; public function mc_tut_lev1(){ addFrameScript(9, this.frame10, 19, this.frame20); } function frame20(){ stop(); if (parent != null){ var _local1 = parent.parent; _local1["unpause"](); parent.removeChild(this); }; } function frame10(){ stop(); this.m_bt_next.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ _arg1.target.parent.play(); }); } } }//package
Section 292
//mc_tut_lev10 (mc_tut_lev10) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_tut_lev10 extends MovieClip { public var m_bt_next:SimpleButton; public function mc_tut_lev10(){ addFrameScript(9, this.frame10, 19, this.frame20); } function frame20(){ stop(); if (parent != null){ var _local1 = parent.parent; _local1["unpause"](); parent.removeChild(this); }; } function frame10(){ stop(); this.m_bt_next.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ _arg1.target.parent.play(); }); } } }//package
Section 293
//mc_tut_lev14 (mc_tut_lev14) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_tut_lev14 extends MovieClip { public var m_bt_next:SimpleButton; public function mc_tut_lev14(){ addFrameScript(9, this.frame10, 19, this.frame20); } function frame20(){ stop(); if (parent != null){ var _local1 = parent.parent; _local1["unpause"](); parent.removeChild(this); }; } function frame10(){ stop(); this.m_bt_next.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ _arg1.target.parent.play(); }); } } }//package
Section 294
//mc_tut_lev2 (mc_tut_lev2) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_tut_lev2 extends MovieClip { public var m_bt_next:SimpleButton; public function mc_tut_lev2(){ addFrameScript(9, this.frame10, 19, this.frame20); } function frame20(){ stop(); if (parent != null){ var _local1 = parent.parent; _local1["unpause"](); parent.removeChild(this); }; } function frame10(){ stop(); this.m_bt_next.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ _arg1.target.parent.play(); }); } } }//package
Section 295
//mc_tut_lev6 (mc_tut_lev6) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.media.*; import flash.utils.*; import flash.geom.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.desktop.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.profiler.*; import flash.sampler.*; import flash.system.*; import flash.text.engine.*; import flash.ui.*; import flash.xml.*; public dynamic class mc_tut_lev6 extends MovieClip { public var m_bt_next:SimpleButton; public function mc_tut_lev6(){ addFrameScript(9, this.frame10, 19, this.frame20); } function frame20(){ stop(); if (parent != null){ var _local1 = parent.parent; _local1["unpause"](); parent.removeChild(this); }; } function frame10(){ stop(); this.m_bt_next.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{ _arg1.target.parent.play(); }); } } }//package
Section 296
//mc_tut0 (mc_tut0) package { import flash.display.*; public dynamic class mc_tut0 extends MovieClip { } }//package
Section 297
//mc_tut1 (mc_tut1) package { import flash.display.*; public dynamic class mc_tut1 extends MovieClip { } }//package
Section 298
//mc_tut10 (mc_tut10) package { import flash.display.*; public dynamic class mc_tut10 extends MovieClip { } }//package
Section 299
//mc_tut14 (mc_tut14) package { import flash.display.*; public dynamic class mc_tut14 extends MovieClip { } }//package
Section 300
//mc_tut2 (mc_tut2) package { import flash.display.*; public dynamic class mc_tut2 extends MovieClip { } }//package
Section 301
//mc_tut6 (mc_tut6) package { import flash.display.*; public dynamic class mc_tut6 extends MovieClip { } }//package
Section 302
//mc_water_bulk (mc_water_bulk) package { import flash.display.*; public dynamic class mc_water_bulk extends MovieClip { public function mc_water_bulk(){ addFrameScript(11, this.frame12); } function frame12(){ if (parent != null){ parent.removeChild(this); }; } } }//package
Section 303
//MochiBot (MochiBot) package { import flash.display.*; import flash.net.*; import flash.system.*; public dynamic class MochiBot extends Sprite { public static function track(_arg1:Sprite, _arg2:String):MochiBot{ if (Security.sandboxType == "localWithFile"){ return (null); }; var _local3:MochiBot = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); var _local4 = "http://core.mochibot.com/my/core.swf"; var _local5:URLVariables = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; var _local6:String = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; var _local7:URLRequest = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; var _local8:Loader = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 304
//mus_main_theme (mus_main_theme) package { import flash.media.*; public dynamic class mus_main_theme extends Sound { } }//package
Section 305
//Preloader (Preloader) package { import flash.events.*; import flash.display.*; import flash.text.*; import flash.utils.*; import flash.net.*; public class Preloader extends MovieClip { private var mc_arc_btn:SimpleButton; private var m_pres:MovieClip; private var m_percent_loaded:Number;// = 0 private var m_perc:MovieClip; private var m_loading_bg:MovieClip; private var m_loading_bar:MovieClip; public function Preloader(){ m_pres = new mc_pres(); m_perc = new mc_perc(); mc_arc_btn = new remake_button6(); super(); MochiBot.track(this, "f5497250"); loaderInfo.addEventListener(ProgressEvent.PROGRESS, onRootLoaderProgress); loaderInfo.addEventListener(Event.COMPLETE, onRootLoaderComplete); m_loading_bar = new mc_loading_bar(); m_loading_bar.x = 56; m_loading_bar.y = 373; m_loading_bar.scaleY = (10 / 12); m_loading_bar.gotoAndStop(1); m_perc.x = 576; m_perc.y = 338; m_pres.x = 315; m_pres.y = 357; mc_arc_btn.x = 396; mc_arc_btn.y = 344; mc_arc_btn.addEventListener(MouseEvent.CLICK, onSplashClick); m_loading_bg = new mc_loading_bg(); addChild(m_loading_bg); addChild(m_loading_bar); addChild(mc_arc_btn); addChild(m_perc); addChild(m_pres); } private function onRootLoaderProgress(_arg1:ProgressEvent):void{ var _local2:Number = _arg1.target.bytesLoaded; var _local3:Number = _arg1.target.bytesTotal; m_percent_loaded = (_local2 / _local3); TextField(m_perc["tf_perc"]).text = (("" + int((m_percent_loaded * 100))) + "%"); m_loading_bar.gotoAndStop(int((m_percent_loaded * 100))); } private function onRootLoaderComplete(_arg1:Event):void{ var _local3:Object; loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onRootLoaderProgress); loaderInfo.removeEventListener(Event.COMPLETE, onRootLoaderComplete); removeChild(m_loading_bg); removeChild(m_loading_bar); removeChild(mc_arc_btn); removeChild(m_perc); mc_arc_btn.removeEventListener(MouseEvent.CLICK, onSplashClick); nextFrame(); var _local2:Class = Class(getDefinitionByName("StateManager")); if (_local2){ _local3 = new (_local2); addChild((_local3 as DisplayObject)); }; } private function onSplashClick(_arg1:MouseEvent):void{ var _local2:URLRequest = new URLRequest("http://arcadebomb.com"); navigateToURL(_local2); } private function siteLock():void{ var _local1:String = loaderInfo.loaderURL; var _local2:Number = (_local1.indexOf("://") + 3); var _local3:Number = _local1.indexOf("/", _local2); var _local4:String = _local1.substring(_local2, _local3); var _local5:Number = (_local4.lastIndexOf(".") - 1); var _local6:Number = (_local4.lastIndexOf(".", _local5) + 1); _local4 = _local4.substring(_local6, _local4.length); if (_local4 != "flashgamelicense.com"){ this.x = -5000; }; } } }//package
Section 306
//remake_button6 (remake_button6) package { import flash.display.*; public dynamic class remake_button6 extends SimpleButton { } }//package
Section 307
//snd_arr (snd_arr) package { import flash.media.*; public dynamic class snd_arr extends Sound { } }//package
Section 308
//snd_bubbling (snd_bubbling) package { import flash.media.*; public dynamic class snd_bubbling extends Sound { } }//package
Section 309
//snd_crate_crash (snd_crate_crash) package { import flash.media.*; public dynamic class snd_crate_crash extends Sound { } }//package
Section 310
//snd_expl0 (snd_expl0) package { import flash.media.*; public dynamic class snd_expl0 extends Sound { } }//package
Section 311
//snd_expl1 (snd_expl1) package { import flash.media.*; public dynamic class snd_expl1 extends Sound { } }//package
Section 312
//snd_help (snd_help) package { import flash.media.*; public dynamic class snd_help extends Sound { } }//package
Section 313
//snd_lose (snd_lose) package { import flash.media.*; public dynamic class snd_lose extends Sound { } }//package
Section 314
//snd_splash (snd_splash) package { import flash.media.*; public dynamic class snd_splash extends Sound { } }//package
Section 315
//snd_yohoho (snd_yohoho) package { import flash.media.*; public dynamic class snd_yohoho extends Sound { } }//package
Section 316
//StateManager (StateManager) package { import States.*; import flash.events.*; import flash.display.*; public class StateManager extends Sprite { private var m_states:Array; private static var m_instance:StateManager; public function StateManager(){ m_states = []; super(); m_instance = this; addEventListener(Event.ENTER_FRAME, update); pushState(PreloaderState.getInstance()); } public function popState():void{ GameState(m_states[(m_states.length - 1)]).cleanUp(); removeChild(GameState(m_states[(m_states.length - 1)])); m_states.pop(); } public function changeState(_arg1:GameState):void{ var _local2:GameState; for each (_local2 in m_states) { _local2.cleanUp(); removeChild(_local2); }; m_states = new Array(); pushState(_arg1); } public function pushState(_arg1:GameState):void{ addChild(_arg1); _arg1.init(); m_states.push(_arg1); } private function update(_arg1:Event):void{ var _local2:GameState; for each (_local2 in m_states) { _local2.update(); }; } public static function getInstance():StateManager{ return (m_instance); } } }//package
Section 317
//wood_corner1 (wood_corner1) package { import flash.display.*; public dynamic class wood_corner1 extends MovieClip { } }//package
Section 318
//wood_corner2 (wood_corner2) package { import flash.display.*; public dynamic class wood_corner2 extends MovieClip { } }//package
Section 319
//wood_corner3 (wood_corner3) package { import flash.display.*; public dynamic class wood_corner3 extends MovieClip { } }//package
Section 320
//wood_corner4 (wood_corner4) package { import flash.display.*; public dynamic class wood_corner4 extends MovieClip { } }//package

Library Items

Symbol 1 Bitmap {back_loading} [back_loading]Used by:2
Symbol 2 MovieClip {mc_loading_bg} [mc_loading_bg]Uses:1
Symbol 3 FontUsed by:4 168 171 177 178 179 180 208 210 212 216 217 263 264 266 267 293 294 301 302 304 343 344 348 349 350 354 355 363 389 397 398 431 433 434 446 447 456 461 462 477 478 515 516 518 519 521 522 524 526 527 528 529 530 536 537 558 559 568 569 570 579 584 585 590 592 604 605 617 619 628 629 631 639 640 641 644 648 649 650 651 652 653 655 684 685 689 690 713
Symbol 4 EditableTextUses:3 643Used by:5
Symbol 5 MovieClip {mc_perc} [mc_perc]Uses:4
Symbol 6 GraphicUsed by:7
Symbol 7 MovieClip {mc_pres} [mc_pres]Uses:6
Symbol 8 GraphicUsed by:9
Symbol 9 MovieClipUses:8Used by:11
Symbol 10 GraphicUsed by:11
Symbol 11 MovieClip {mc_loading_bar} [mc_loading_bar]Uses:9 10
Symbol 12 GraphicUsed by:16
Symbol 13 GraphicUsed by:16
Symbol 14 GraphicUsed by:16 602
Symbol 15 GraphicUsed by:16 602
Symbol 16 Button {remake_button6} [remake_button6]Uses:12 13 14 15
Symbol 17 GraphicUsed by:18
Symbol 18 MovieClip {backshape_u_3} [backshape_u_3]Uses:17
Symbol 19 BitmapUsed by:20 485
Symbol 20 GraphicUses:19Used by:21
Symbol 21 MovieClip {mc_fort_basement} [mc_fort_basement]Uses:20Used by:87 147 257 281 314 338 362 405 443 468 483 484 512 540 543 546 563 574 575 633 638 668 669 675 692 693 694 696 697 712
Symbol 22 BitmapUsed by:27 142 233 276 306 310 339 360 387 391 400 436 441 452 459 469 489 510 541 561 566 572 596 636 666
Symbol 23 BitmapUsed by:27 142 231 233 276 306 310 339 360 387 391 400 436 441 452 459 466 469 471 485 489 510 541 544 556 561 566 572 596 636 666
Symbol 24 BitmapUsed by:27 142 231 233 276 306 310 360 387 391 436 441 452 459 466 469 471 485 489 510 541 544 556 561 566 572 596 636 666
Symbol 25 BitmapUsed by:27 142 231 233 276 306 310 339 360 387 391 400 436 441 452 459 466 469 471 489 510 541 544 561 566 572 596 636 666
Symbol 26 BitmapUsed by:27 142 231 233 276 306 310 360 387 391 436 441 452 459 466 469 471 485 489 510 541 544 556 561 566 572 636 666
Symbol 27 GraphicUses:22 26 24 23 25Used by:28
Symbol 28 MovieClip {level23_back} [level23_back]Uses:27Used by:87
Symbol 29 BitmapUsed by:30 485
Symbol 30 GraphicUses:29Used by:31
Symbol 31 MovieClip {mc_barrel} [mc_barrel]Uses:30Used by:87 147 257 281 314 338 362 443 468 483 484 512 540 543 546 563 574 575 633 638 668 669 675 692 693 694 696 697 712
Symbol 32 BitmapUsed by:33
Symbol 33 GraphicUses:32Used by:34
Symbol 34 MovieClip {mc_mill} [mc_mill]Uses:33Used by:87 281 314 483 484 627
Symbol 35 BitmapUsed by:36 38 61 235 485
Symbol 36 GraphicUses:35Used by:37
Symbol 37 MovieClip {wood_corner1} [wood_corner1]Uses:36Used by:87 147 257 281 314 338 362 405 443 468 483 484 512 540 543 546 563 574 575 633 638 668 669 675 692 693 694 696 697 712
Symbol 38 GraphicUses:35Used by:39
Symbol 39 MovieClip {wood_corner3} [wood_corner3]Uses:38Used by:87 257 281 338 362 443 468 484 512 543 546 563 574 633 638 669 675 696
Symbol 40 BitmapUsed by:41 63 485
Symbol 41 GraphicUses:40Used by:42
Symbol 42 MovieClip {bricks_side} [bricks_side]Uses:41Used by:87 147 257 281 338 362 405 443 468 484 512 540 543 563 574 633 638 696 697 712
Symbol 43 BitmapUsed by:44 96
Symbol 44 GraphicUses:43Used by:45
Symbol 45 MovieClip {bricks_top} [bricks_top]Uses:44Used by:87 147 257 338 362 405 468 484 540 543 563 574 633 638 668 675 692 693 694 696 697 712
Symbol 46 BitmapUsed by:47 333 485
Symbol 47 GraphicUses:46Used by:48
Symbol 48 MovieClip {bricks_loop_hor} [bricks_loop_hor]Uses:47Used by:87 405 483 540 543 546 575 633 675 692 697
Symbol 49 BitmapUsed by:50 55 57 59 485
Symbol 50 GraphicUses:49Used by:51
Symbol 51 MovieClip {bricks_corner2} [bricks_corner2]Uses:50Used by:87 257 281 338 669 675 692 693 712
Symbol 52 BitmapUsed by:53 312
Symbol 53 GraphicUses:52Used by:54
Symbol 54 MovieClip {bricks_loop_vert} [bricks_loop_vert]Uses:53Used by:87 147 314 405 443 468 483 484 512 540 546 563 574 575 668 693
Symbol 55 GraphicUses:49Used by:56
Symbol 56 MovieClip {bricks_corner} [bricks_corner]Uses:55Used by:87 147 257 281 314 338 362 405 443 468 484 512 540 546 563 574 633 638 668 675 692 693 694 696 697 712
Symbol 57 GraphicUses:49Used by:58
Symbol 58 MovieClip {bricks_corner4} [bricks_corner4]Uses:57Used by:87 281 314 338 405 484 638 675 692
Symbol 59 GraphicUses:49Used by:60
Symbol 60 MovieClip {bricks_corner3} [bricks_corner3]Uses:59Used by:87 147 257 281 338 362 405 443 484 543 546 563 575 638 675 692 693 694 696 697 712
Symbol 61 GraphicUses:35Used by:62
Symbol 62 MovieClip {wood_corner2} [wood_corner2]Uses:61Used by:87 257 281 314 338 362 405 483 484 512 540 543 563 633 638 669 675 693 696 697 712
Symbol 63 GraphicUses:40Used by:64
Symbol 64 MovieClip {bricks_side2} [bricks_side2]Uses:63Used by:87 147 281 338 405 443 484 543 563 574 575 638 668 675 693 697 712
Symbol 65 GraphicUsed by:76 292 325 375
Symbol 66 ShapeTweeningUsed by:76
Symbol 67 GraphicUsed by:76
Symbol 68 GraphicUsed by:76
Symbol 69 GraphicUsed by:76
Symbol 70 GraphicUsed by:76 325 375
Symbol 71 GraphicUsed by:76 325 375
Symbol 72 GraphicUsed by:76
Symbol 73 GraphicUsed by:76 325 375
Symbol 74 GraphicUsed by:76
Symbol 75 GraphicUsed by:76 325 375
Symbol 76 MovieClip {SBResources_fla.explode_141} [SBResources_fla.explode_141]Uses:65 66 67 68 69 70 71 72 73 74 75Used by:83 248
Symbol 77 BitmapUsed by:78
Symbol 78 GraphicUses:77Used by:83
Symbol 79 GraphicUsed by:82
Symbol 80 ShapeTweeningUsed by:82
Symbol 81 GraphicUsed by:82
Symbol 82 MovieClipUses:79 80 81Used by:83 248
Symbol 83 MovieClipUses:76 78 82Used by:86
Symbol 84 BitmapUsed by:85
Symbol 85 GraphicUses:84Used by:86
Symbol 86 MovieClip {mc_cannon2_enemy} [mc_cannon2_enemy]Uses:83 85Used by:87 147 281 338 362 443 468 483 484 512 563 633 668
Symbol 87 MovieClip {level23} [level23]Uses:21 28 31 34 37 39 42 45 48 51 54 56 58 60 62 64 86
Symbol 88 BitmapUsed by:89
Symbol 89 GraphicUses:88Used by:90
Symbol 90 MovieClip {mc_ash} [mc_ash]Uses:89
Symbol 91 BitmapUsed by:93 94 335 336 670 671
Symbol 92 BitmapUsed by:93 94 335 336 670 671
Symbol 93 GraphicUses:91 92Used by:95
Symbol 94 GraphicUses:91 92Used by:95
Symbol 95 MovieClip {mc_switch2} [mc_switch2]Uses:93 94Used by:362 669 675 693
Symbol 96 GraphicUses:43Used by:97
Symbol 97 MovieClip {bricks_bott} [bricks_bott]Uses:96Used by:257 712
Symbol 98 BitmapUsed by:99
Symbol 99 GraphicUses:98Used by:106
Symbol 100 BitmapUsed by:101
Symbol 101 GraphicUses:100Used by:106
Symbol 102 BitmapUsed by:103
Symbol 103 GraphicUses:102Used by:106
Symbol 104 BitmapUsed by:105
Symbol 105 GraphicUses:104Used by:106
Symbol 106 MovieClip {mc_crashed_block} [mc_crashed_block]Uses:99 101 103 105Used by:257 443 512 543 546 693 694 696
Symbol 107 GraphicUsed by:140
Symbol 108 GraphicUsed by:140
Symbol 109 GraphicUsed by:140
Symbol 110 GraphicUsed by:140
Symbol 111 GraphicUsed by:140
Symbol 112 GraphicUsed by:140
Symbol 113 GraphicUsed by:140
Symbol 114 GraphicUsed by:140
Symbol 115 GraphicUsed by:140
Symbol 116 GraphicUsed by:140
Symbol 117 GraphicUsed by:140
Symbol 118 GraphicUsed by:140
Symbol 119 GraphicUsed by:140
Symbol 120 GraphicUsed by:140
Symbol 121 GraphicUsed by:140
Symbol 122 GraphicUsed by:140
Symbol 123 GraphicUsed by:140
Symbol 124 GraphicUsed by:140
Symbol 125 GraphicUsed by:140
Symbol 126 GraphicUsed by:140
Symbol 127 GraphicUsed by:140
Symbol 128 GraphicUsed by:140
Symbol 129 GraphicUsed by:140
Symbol 130 GraphicUsed by:140
Symbol 131 GraphicUsed by:140
Symbol 132 GraphicUsed by:140
Symbol 133 GraphicUsed by:140
Symbol 134 GraphicUsed by:140
Symbol 135 GraphicUsed by:140
Symbol 136 GraphicUsed by:140
Symbol 137 ShapeTweeningUsed by:140
Symbol 138 ShapeTweeningUsed by:140
Symbol 139 GraphicUsed by:140
Symbol 140 MovieClip {SBResources_fla.water_test_3} [SBResources_fla.water_test_3]Uses:107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139Used by:141
Symbol 141 MovieClip {mc_sea} [mc_sea]Uses:140
Symbol 142 GraphicUses:25 26 24 23 22Used by:143
Symbol 143 MovieClip {level26_back} [level26_back]Uses:142Used by:147
Symbol 144 BitmapUsed by:145 485
Symbol 145 GraphicUses:144Used by:146
Symbol 146 MovieClip {bricks1} [bricks1]Uses:145Used by:147 257 405 540 633 668
Symbol 147 MovieClip {level26} [level26]Uses:21 143 86 56 31 37 45 64 54 146 42 60
Symbol 148 GraphicUsed by:152
Symbol 149 GraphicUsed by:152
Symbol 150 GraphicUsed by:152
Symbol 151 GraphicUsed by:152
Symbol 152 ButtonUses:148 149 150 151Used by:153
Symbol 153 MovieClip {mc_arc_bt} [mc_arc_bt]Uses:152
Symbol 154 GraphicUsed by:163
Symbol 155 ShapeTweeningUsed by:163
Symbol 156 GraphicUsed by:163
Symbol 157 ShapeTweeningUsed by:163
Symbol 158 BitmapUsed by:159
Symbol 159 GraphicUses:158Used by:163
Symbol 160 ShapeTweeningUsed by:163
Symbol 161 GraphicUsed by:163
Symbol 162 GraphicUsed by:163
Symbol 163 MovieClip {mc_playerhealthbar} [mc_playerhealthbar]Uses:154 155 156 157 159 160 161 162
Symbol 164 GraphicUsed by:165
Symbol 165 MovieClip {backshape_u_1} [backshape_u_1]Uses:164
Symbol 166 BitmapUsed by:167 347 514 578 647
Symbol 167 GraphicUses:166Used by:225
Symbol 168 TextUses:3Used by:225
Symbol 169 BitmapUsed by:170 184 185 186 187 189 190 193 196 199 202 205
Symbol 170 GraphicUses:169Used by:176 209 211 213
Symbol 171 EditableTextUses:3 643Used by:176
Symbol 172 GraphicUsed by:176 188 192 195 198 201 204 207 209 211 213
Symbol 173 BitmapUsed by:174 657
Symbol 174 GraphicUses:173Used by:175
Symbol 175 MovieClipUses:174Used by:176 188 192 195 198 201 204 207 209 211 213
Symbol 176 MovieClip {btn_level_x0} [btn_level_x0]Uses:170 171 172 175Used by:225
Symbol 177 EditableTextUses:3 643Used by:225
Symbol 178 TextUses:3Used by:225
Symbol 179 EditableTextUses:3 643Used by:225
Symbol 180 TextUses:3Used by:225
Symbol 181 BitmapUsed by:183 221 347 520
Symbol 182 BitmapUsed by:183 220 347 517
Symbol 183 GraphicUses:181 182Used by:225
Symbol 184 GraphicUses:169Used by:188
Symbol 185 GraphicUses:169Used by:188
Symbol 186 GraphicUses:169Used by:188
Symbol 187 GraphicUses:169Used by:188 192 195 198 201 204 207
Symbol 188 MovieClipUses:184 172 185 186 187 175Used by:225
Symbol 189 GraphicUses:169Used by:192
Symbol 190 GraphicUses:169Used by:192 195 198 201 204 207
Symbol 191 GraphicUsed by:192
Symbol 192 MovieClipUses:189 172 190 191 187 175Used by:225
Symbol 193 GraphicUses:169Used by:195
Symbol 194 GraphicUsed by:195
Symbol 195 MovieClipUses:193 172 190 194 187 175Used by:225
Symbol 196 GraphicUses:169Used by:198
Symbol 197 GraphicUsed by:198
Symbol 198 MovieClipUses:196 172 190 197 187 175Used by:225
Symbol 199 GraphicUses:169Used by:201
Symbol 200 GraphicUsed by:201
Symbol 201 MovieClipUses:199 172 190 200 187 175Used by:225
Symbol 202 GraphicUses:169Used by:204
Symbol 203 GraphicUsed by:204
Symbol 204 MovieClipUses:202 172 190 203 187 175Used by:225
Symbol 205 GraphicUses:169Used by:207
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClipUses:205 172 190 206 187 175Used by:225
Symbol 208 EditableTextUses:3 643Used by:209
Symbol 209 MovieClip {btn_level_x1} [btn_level_x1]Uses:170 208 172 175Used by:225
Symbol 210 EditableTextUses:3 643Used by:211
Symbol 211 MovieClip {btn_level_x2} [btn_level_x2]Uses:170 210 172 175Used by:225
Symbol 212 EditableTextUses:3 643Used by:213
Symbol 213 MovieClip {btn_level_x3} [btn_level_x3]Uses:170 212 172 175Used by:225
Symbol 214 BitmapUsed by:215 352
Symbol 215 GraphicUses:214Used by:219 265 538
Symbol 216 TextUses:3Used by:219 353
Symbol 217 TextUses:3Used by:219 353
Symbol 218 GraphicUsed by:219 265 353 538
Symbol 219 ButtonUses:215 216 217 218Used by:225 658
Symbol 220 GraphicUses:182Used by:224
Symbol 221 GraphicUses:181Used by:224
Symbol 222 BitmapUsed by:223 347 523
Symbol 223 GraphicUses:222Used by:224
Symbol 224 MovieClip {SBResources_fla.mc_chest_icon_116} [SBResources_fla.mc_chest_icon_116]Uses:220 221 223Used by:225
Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface]Uses:167 168 176 177 178 179 180 183 188 192 195 198 201 204 207 209 211 213 219 224
Symbol 226 GraphicUsed by:227
Symbol 227 MovieClip {backshape_u_0} [backshape_u_0]Uses:226
Symbol 228 BitmapUsed by:229
Symbol 229 GraphicUses:228Used by:230
Symbol 230 MovieClip {mc_backsky_red} [mc_backsky_red]Uses:229
Symbol 231 GraphicUses:24 26 23 25Used by:232
Symbol 232 MovieClip {level25_back} [level25_back]Uses:231Used by:483
Symbol 233 GraphicUses:23 26 24 22 25Used by:234
Symbol 234 MovieClip {level20_back} [level20_back]Uses:233Used by:257
Symbol 235 GraphicUses:35Used by:236
Symbol 236 MovieClip {wood_corner4} [wood_corner4]Uses:235Used by:257 314 338 362 468 483 512 540 633 638 669 692 696 712
Symbol 237 BitmapUsed by:241 439 454 487
Symbol 238 BitmapUsed by:241
Symbol 239 BitmapUsed by:241 564
Symbol 240 BitmapUsed by:241
Symbol 241 GraphicUses:240 239 238 237Used by:242 357 482
Symbol 242 MovieClip {mc_crane_short} [mc_crane_short]Uses:241Used by:257 362 627
Symbol 243 BitmapUsed by:244 485
Symbol 244 GraphicUses:243Used by:245
Symbol 245 MovieClip {mc_metal_box} [mc_metal_box]Uses:244Used by:257 443 468 540 546 574 575 633 694
Symbol 246 BitmapUsed by:247
Symbol 247 GraphicUses:246Used by:248
Symbol 248 MovieClipUses:247 76 82Used by:256
Symbol 249 GraphicUsed by:253
Symbol 250 ShapeTweeningUsed by:253
Symbol 251 GraphicUsed by:253
Symbol 252 GraphicUsed by:253
Symbol 253 MovieClipUses:249 250 251 252Used by:256
Symbol 254 BitmapUsed by:255
Symbol 255 GraphicUses:254Used by:256
Symbol 256 MovieClip {mc_cannon_enemy} [mc_cannon_enemy]Uses:248 253 255Used by:257 314 540 543 546 574 575 638 669 675 692 693 694 696 697 712
Symbol 257 MovieClip {level20} [level20]Uses:21 234 236 56 242 31 45 60 146 37 51 245 106 39 42 62 97 256
Symbol 258 GraphicUsed by:259
Symbol 259 MovieClip {backshape_b_6} [backshape_b_6]Uses:258
Symbol 260 BitmapUsed by:261 351
Symbol 261 GraphicUses:260Used by:262
Symbol 262 MovieClipUses:261Used by:268 390 432 618 632 714
Symbol 263 TextUses:3Used by:265
Symbol 264 TextUses:3Used by:265
Symbol 265 ButtonUses:215 263 264 218Used by:268 390 432 539 618 632 714
Symbol 266 TextUses:3Used by:268
Symbol 267 TextUses:3Used by:268 390 432 618 632 714
Symbol 268 MovieClip {mc_tut_lev10} [mc_tut_lev10]Uses:262 265 266 267
Symbol 269 GraphicUsed by:270
Symbol 270 MovieClip {backshape_b_2} [backshape_b_2]Uses:269
Symbol 271 GraphicUsed by:272
Symbol 272 MovieClip {backshape_b_5} [backshape_b_5]Uses:271
Symbol 273 FontUsed by:274
Symbol 274 TextUses:273Used by:275
Symbol 275 MovieClip {mc_more} [mc_more]Uses:274
Symbol 276 GraphicUses:24 23 22 26 25Used by:277
Symbol 277 MovieClip {level22_back} [level22_back]Uses:276Used by:281
Symbol 278 BitmapUsed by:279 485
Symbol 279 GraphicUses:278Used by:280
Symbol 280 MovieClip {mc_crate} [mc_crate]Uses:279Used by:281 362 543 546 574 575 633 696
Symbol 281 MovieClip {level22} [level22]Uses:21 277 31 280 64 34 39 51 42 56 37 58 60 62 86
Symbol 282 ShapeTweeningUsed by:292
Symbol 283 GraphicUsed by:292
Symbol 284 GraphicUsed by:292
Symbol 285 GraphicUsed by:292
Symbol 286 GraphicUsed by:292
Symbol 287 GraphicUsed by:292
Symbol 288 GraphicUsed by:292
Symbol 289 GraphicUsed by:292
Symbol 290 GraphicUsed by:292
Symbol 291 GraphicUsed by:292
Symbol 292 MovieClip {mc_explode} [mc_explode]Uses:65 282 283 284 285 286 287 288 289 290 291
Symbol 293 TextUses:3Used by:298
Symbol 294 EditableTextUses:3 643Used by:295 296
Symbol 295 MovieClipUses:294Used by:297
Symbol 296 ButtonUses:294Used by:297
Symbol 297 MovieClip {SBResources_fla.scoresvalue_anims_18} [SBResources_fla.scoresvalue_anims_18]Uses:295 296Used by:298
Symbol 298 MovieClip {mc_scores} [mc_scores]Uses:293 297
Symbol 299 BitmapUsed by:300 444 688
Symbol 300 GraphicUses:299Used by:305
Symbol 301 TextUses:3Used by:305
Symbol 302 TextUses:3Used by:305
Symbol 303 GraphicUsed by:305 691
Symbol 304 EditableTextUses:3Used by:305
Symbol 305 Button {btn_quit} [btn_quit]Uses:300 301 302 303 304
Symbol 306 GraphicUses:23 24 26 22 25Used by:307
Symbol 307 MovieClip {level17_back} [level17_back]Uses:306Used by:338
Symbol 308 GraphicUsed by:309
Symbol 309 MovieClip {backshape_b_0} [backshape_b_0]Uses:308
Symbol 310 GraphicUses:25 24 23 22 26Used by:311
Symbol 311 MovieClip {level24_back} [level24_back]Uses:310Used by:314
Symbol 312 GraphicUses:52Used by:313
Symbol 313 MovieClip {bricks_loop_vert2} [bricks_loop_vert2]Uses:312Used by:314
Symbol 314 MovieClip {level24} [level24]Uses:21 311 256 31 34 37 56 58 54 62 236 313
Symbol 315 GraphicUsed by:316
Symbol 316 MovieClip {backshape_b_1} [backshape_b_1]Uses:315
Symbol 317 BitmapUsed by:318
Symbol 318 GraphicUses:317Used by:326
Symbol 319 ShapeTweeningUsed by:325
Symbol 320 GraphicUsed by:325
Symbol 321 GraphicUsed by:325
Symbol 322 GraphicUsed by:325
Symbol 323 GraphicUsed by:325
Symbol 324 GraphicUsed by:325
Symbol 325 MovieClip {SBResources_fla.explode3_119} [SBResources_fla.explode3_119]Uses:65 319 320 321 322 70 71 323 73 324 75Used by:326
Symbol 326 MovieClipUses:318 325Used by:329 474 481 599
Symbol 327 BitmapUsed by:328 473 480 598
Symbol 328 GraphicUses:327Used by:329
Symbol 329 MovieClip {mc_switchcannon2} [mc_switchcannon2]Uses:326 328Used by:338 362 669
Symbol 330 BitmapUsed by:331 485
Symbol 331 GraphicUses:330Used by:332
Symbol 332 MovieClip {bricks} [bricks]Uses:331Used by:338 443 468 484 512 540 563 633 638 693 694 696 697
Symbol 333 GraphicUses:46Used by:334
Symbol 334 MovieClip {bricks_loop_hor2} [bricks_loop_hor2]Uses:333Used by:338 483 540 543 546 575 675
Symbol 335 GraphicUses:91 92Used by:337
Symbol 336 GraphicUses:91 92Used by:337
Symbol 337 MovieClip {mc_switch} [mc_switch]Uses:335 336Used by:338
Symbol 338 MovieClip {level17} [level17]Uses:21 307 31 329 60 56 86 58 39 37 51 42 332 334 337 62 236 45 64
Symbol 339 GraphicUses:23 25 22Used by:340
Symbol 340 MovieClip {level29_back} [level29_back]Uses:339Used by:484
Symbol 341 BitmapUsed by:342 396
Symbol 342 GraphicUses:341Used by:346 463
Symbol 343 TextUses:3Used by:346
Symbol 344 TextUses:3Used by:346
Symbol 345 GraphicUsed by:346 399 463 479
Symbol 346 Button {btn_credits} [btn_credits]Uses:342 343 344 345
Symbol 347 GraphicUses:181 182 222 166Used by:356
Symbol 348 EditableTextUses:3Used by:356
Symbol 349 EditableTextUses:3Used by:356
Symbol 350 EditableTextUses:3Used by:356
Symbol 351 GraphicUses:260Used by:356
Symbol 352 GraphicUses:214Used by:353
Symbol 353 ButtonUses:352 216 217 218Used by:356
Symbol 354 TextUses:3Used by:356
Symbol 355 TextUses:3Used by:356
Symbol 356 MovieClip {mc_final} [mc_final]Uses:347 348 349 350 351 353 354 355
Symbol 357 MovieClip {mc_crane_mid} [mc_crane_mid]Uses:241Used by:696
Symbol 358 GraphicUsed by:359
Symbol 359 MovieClip {backshape_b_4} [backshape_b_4]Uses:358
Symbol 360 GraphicUses:26 24 23 22 25Used by:361
Symbol 361 MovieClip {level21_back} [level21_back]Uses:360Used by:362
Symbol 362 MovieClip {level21} [level21]Uses:21 361 86 62 95 329 56 42 37 31 45 39 236 60 242 280
Symbol 363 TextUses:3Used by:364
Symbol 364 MovieClip {mc_tut6} [mc_tut6]Uses:363
Symbol 365 BitmapUsed by:366
Symbol 366 GraphicUses:365Used by:380
Symbol 367 GraphicUsed by:368
Symbol 368 MovieClipUses:367Used by:380
Symbol 369 ShapeTweeningUsed by:375
Symbol 370 GraphicUsed by:375
Symbol 371 GraphicUsed by:375
Symbol 372 GraphicUsed by:375
Symbol 373 GraphicUsed by:375
Symbol 374 GraphicUsed by:375
Symbol 375 MovieClip {SBResources_fla.explode2_10} [SBResources_fla.explode2_10]Uses:65 369 370 371 372 70 71 373 73 374 75Used by:380
Symbol 376 GraphicUsed by:379
Symbol 377 ShapeTweeningUsed by:379
Symbol 378 GraphicUsed by:379
Symbol 379 MovieClip {SBResources_fla.cooldown_11} [SBResources_fla.cooldown_11]Uses:376 377 378Used by:380
Symbol 380 MovieClipUses:366 368 375 379Used by:386
Symbol 381 BitmapUsed by:382
Symbol 382 GraphicUses:381Used by:383
Symbol 383 MovieClipUses:382Used by:386
Symbol 384 GraphicUsed by:385
Symbol 385 MovieClipUses:384Used by:386
Symbol 386 MovieClip {mc_cannon_player} [mc_cannon_player]Uses:380 383 385
Symbol 387 GraphicUses:23 24 26 25 22Used by:388
Symbol 388 MovieClip {level7_back} [level7_back]Uses:387Used by:575
Symbol 389 TextUses:3Used by:390
Symbol 390 MovieClip {mc_tut_lev2} [mc_tut_lev2]Uses:262 265 389 267
Symbol 391 GraphicUses:24 26 23 22 25Used by:392
Symbol 392 MovieClip {level8_back} [level8_back]Uses:391Used by:540
Symbol 393 Sound {snd_expl1} [snd_expl1]
Symbol 394 GraphicUsed by:395
Symbol 395 MovieClip {backshape_u_2} [backshape_u_2]Uses:394
Symbol 396 GraphicUses:341Used by:399 479
Symbol 397 TextUses:3Used by:399
Symbol 398 TextUses:3Used by:399
Symbol 399 Button {btn_soundon} [btn_soundon]Uses:396 397 398 345
Symbol 400 GraphicUses:23 25 22Used by:401
Symbol 401 MovieClip {level0_back} [level0_back]Uses:400Used by:405
Symbol 402 BitmapUsed by:403
Symbol 403 GraphicUses:402Used by:404
Symbol 404 MovieClip {mc_aim} [mc_aim]Uses:403Used by:405
Symbol 405 MovieClip {level0} [level0]Uses:21 401 146 42 54 48 37 56 62 45 60 64 58 404
Symbol 406 GraphicUsed by:412
Symbol 407 GraphicUsed by:412
Symbol 408 GraphicUsed by:412
Symbol 409 GraphicUsed by:412
Symbol 410 GraphicUsed by:412
Symbol 411 GraphicUsed by:412
Symbol 412 MovieClipUses:406 407 408 409 410 411Used by:430
Symbol 413 BitmapUsed by:418
Symbol 414 BitmapUsed by:418
Symbol 415 BitmapUsed by:418
Symbol 416 BitmapUsed by:418
Symbol 417 BitmapUsed by:418
Symbol 418 GraphicUses:416 415 414 413 417Used by:430
Symbol 419 GraphicUsed by:429
Symbol 420 GraphicUsed by:429
Symbol 421 GraphicUsed by:429
Symbol 422 GraphicUsed by:429
Symbol 423 GraphicUsed by:429
Symbol 424 GraphicUsed by:429
Symbol 425 GraphicUsed by:429
Symbol 426 GraphicUsed by:429
Symbol 427 GraphicUsed by:429
Symbol 428 GraphicUsed by:429
Symbol 429 MovieClipUses:419 420 421 422 423 424 425 426 427 428Used by:430
Symbol 430 MovieClip {mc_ship_player} [mc_ship_player]Uses:412 418 429
Symbol 431 TextUses:3Used by:432
Symbol 432 MovieClip {mc_tut_lev1} [mc_tut_lev1]Uses:262 265 431 267
Symbol 433 TextUses:3Used by:435
Symbol 434 EditableTextUses:3 643Used by:435
Symbol 435 MovieClip {mc_shots} [mc_shots]Uses:433 434
Symbol 436 GraphicUses:24 26 23 22 25Used by:437
Symbol 437 MovieClip {level3_back} [level3_back]Uses:436Used by:697
Symbol 438 Sound {snd_expl0} [snd_expl0]
Symbol 439 GraphicUses:237Used by:440
Symbol 440 MovieClip {mc_chain_short} [mc_chain_short]Uses:439
Symbol 441 GraphicUses:24 25 23 26 22Used by:442
Symbol 442 MovieClip {level28_back} [level28_back]Uses:441Used by:443
Symbol 443 MovieClip {level28} [level28]Uses:21 442 86 31 42 54 60 56 332 39 37 245 106 64
Symbol 444 GraphicUses:299Used by:445
Symbol 445 MovieClipUses:444Used by:449
Symbol 446 TextUses:3Used by:449
Symbol 447 TextUses:3Used by:449
Symbol 448 GraphicUsed by:449
Symbol 449 ButtonUses:445 446 447 448Used by:450
Symbol 450 MovieClip {btn_replay} [btn_replay]Uses:449
Symbol 451 Sound {snd_yohoho} [snd_yohoho]
Symbol 452 GraphicUses:25 24 26 23 22Used by:453
Symbol 453 MovieClip {level18_back} [level18_back]Uses:452Used by:712
Symbol 454 GraphicUses:237Used by:455
Symbol 455 MovieClip {mc_chain} [mc_chain]Uses:454
Symbol 456 EditableTextUses:3Used by:457
Symbol 457 MovieClipUses:456Used by:458
Symbol 458 MovieClip {mc_scorehint_green} [mc_scorehint_green]Uses:457
Symbol 459 GraphicUses:25 22 26 24 23Used by:460
Symbol 460 MovieClip {level10_back} [level10_back]Uses:459Used by:694
Symbol 461 TextUses:3Used by:463
Symbol 462 EditableTextUses:3Used by:463
Symbol 463 Button {btn_continue} [btn_continue]Uses:342 461 462 345
Symbol 464 GraphicUsed by:465
Symbol 465 MovieClip {backshape_u_5} [backshape_u_5]Uses:464
Symbol 466 GraphicUses:25 26 23 24Used by:467
Symbol 467 MovieClip {level27_back} [level27_back]Uses:466Used by:468
Symbol 468 MovieClip {level27} [level27]Uses:21 467 86 56 37 31 45 332 54 245 236 42 39
Symbol 469 GraphicUses:24 26 25 23 22Used by:470
Symbol 470 MovieClip {level2_back} [level2_back]Uses:469Used by:692
Symbol 471 GraphicUses:25 24 26 23Used by:472
Symbol 472 MovieClip {level4_back} [level4_back]Uses:471Used by:638
Symbol 473 GraphicUses:327Used by:474
Symbol 474 MovieClip {mc_switchcannon1} [mc_switchcannon1]Uses:326 473
Symbol 475 GraphicUsed by:476
Symbol 476 MovieClip {backshape_u_4} [backshape_u_4]Uses:475
Symbol 477 TextUses:3Used by:479
Symbol 478 TextUses:3Used by:479
Symbol 479 Button {btn_soundoff} [btn_soundoff]Uses:396 477 478 345
Symbol 480 GraphicUses:327Used by:481
Symbol 481 MovieClip {mc_switchcannon} [mc_switchcannon]Uses:326 480Used by:675 693
Symbol 482 MovieClip {mc_crane_long} [mc_crane_long]Uses:241Used by:712
Symbol 483 MovieClip {level25} [level25]Uses:21 232 86 54 31 236 62 34 37 48 334
Symbol 484 MovieClip {level29} [level29]Uses:21 340 56 86 62 45 332 54 31 37 60 34 42 39 64 58
Symbol 485 GraphicUses:29 243 278 35 40 330 144 49 46 19 23 26 24Used by:486
Symbol 486 MovieClip {level_back} [level_back]Uses:485Used by:627
Symbol 487 GraphicUses:237Used by:488
Symbol 488 MovieClip {mc_chain_long} [mc_chain_long]Uses:487
Symbol 489 GraphicUses:24 26 23 22 25Used by:490
Symbol 490 MovieClip {level9_back} [level9_back]Uses:489Used by:633
Symbol 491 ShapeTweeningUsed by:498
Symbol 492 GraphicUsed by:498
Symbol 493 GraphicUsed by:496
Symbol 494 FontUsed by:495
Symbol 495 TextUses:494Used by:496
Symbol 496 MovieClipUses:493 495Used by:497
Symbol 497 MovieClipUses:496Used by:498
Symbol 498 MovieClip {mc_ab_splash} [mc_ab_splash]Uses:491 492 497
Symbol 499 BitmapUsed by:500
Symbol 500 GraphicUses:499Used by:501
Symbol 501 MovieClip {mc_crosshair} [mc_crosshair]Uses:500
Symbol 502 ShapeTweeningUsed by:509
Symbol 503 GraphicUsed by:509
Symbol 504 GraphicUsed by:509
Symbol 505 GraphicUsed by:509
Symbol 506 GraphicUsed by:509
Symbol 507 GraphicUsed by:509
Symbol 508 GraphicUsed by:509
Symbol 509 MovieClip {mc_water_bulk} [mc_water_bulk]Uses:502 503 504 505 506 507 508
Symbol 510 GraphicUses:23 26 25 24 22Used by:511
Symbol 511 MovieClip {level13_back} [level13_back]Uses:510Used by:512
Symbol 512 MovieClip {level13} [level13]Uses:21 511 86 31 39 54 37 56 106 62 236 42 332
Symbol 513 Sound {snd_crate_crash} [snd_crate_crash]
Symbol 514 GraphicUses:166Used by:539
Symbol 515 TextUses:3Used by:539
Symbol 516 TextUses:3Used by:525
Symbol 517 GraphicUses:182Used by:525
Symbol 518 TextUses:3Used by:525
Symbol 519 TextUses:3Used by:525
Symbol 520 GraphicUses:181Used by:525
Symbol 521 TextUses:3Used by:525
Symbol 522 TextUses:3Used by:525
Symbol 523 GraphicUses:222Used by:525
Symbol 524 TextUses:3Used by:525
Symbol 525 MovieClip {SBResources_fla.levelcomplete_chest_type_92} [SBResources_fla.levelcomplete_chest_type_92]Uses:516 517 518 519 520 521 522 523 524Used by:539
Symbol 526 EditableTextUses:3 643Used by:539
Symbol 527 EditableTextUses:3 643Used by:539
Symbol 528 EditableTextUses:3 643Used by:539
Symbol 529 EditableTextUses:3 643Used by:539
Symbol 530 EditableTextUses:3 643Used by:539
Symbol 531 GraphicUsed by:535
Symbol 532 ShapeTweeningUsed by:535
Symbol 533 GraphicUsed by:535
Symbol 534 ShapeTweeningUsed by:535
Symbol 535 MovieClipUses:531 532 533 534Used by:539
Symbol 536 TextUses:3Used by:538
Symbol 537 TextUses:3Used by:538
Symbol 538 ButtonUses:215 536 537 218Used by:539 583
Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen]Uses:514 515 525 526 527 528 529 530 535 265 538
Symbol 540 MovieClip {level8} [level8]Uses:392 21 45 37 42 146 48 31 334 332 56 245 236 62 54 256
Symbol 541 GraphicUses:24 26 23 25 22Used by:542
Symbol 542 MovieClip {level12_back} [level12_back]Uses:541Used by:543
Symbol 543 MovieClip {level12} [level12]Uses:21 542 256 106 31 42 64 37 39 334 45 280 60 48 62
Symbol 544 GraphicUses:25 23 24 26Used by:545
Symbol 545 MovieClip {level11_back} [level11_back]Uses:544Used by:546
Symbol 546 MovieClip {level11} [level11]Uses:545 21 31 106 54 245 48 334 39 60 56 280 37 256
Symbol 547 BitmapUsed by:548
Symbol 548 GraphicUses:547Used by:549
Symbol 549 MovieClip {mc_bg} [mc_bg]Uses:548
Symbol 550 GraphicUsed by:554
Symbol 551 GraphicUsed by:552
Symbol 552 MovieClipUses:551Used by:554
Symbol 553 GraphicUsed by:554
Symbol 554 MovieClipUses:550 552 553Used by:555
Symbol 555 MovieClip {mc_bmb} [mc_bmb]Uses:554
Symbol 556 GraphicUses:23 26 24Used by:557
Symbol 557 MovieClip {level1_back} [level1_back]Uses:556Used by:668
Symbol 558 TextUses:3Used by:560
Symbol 559 TextUses:3Used by:560
Symbol 560 MovieClip {mc_tut0} [mc_tut0]Uses:558 559
Symbol 561 GraphicUses:25 23 24 26 22Used by:562
Symbol 562 MovieClip {level5_back} [level5_back]Uses:561Used by:563
Symbol 563 MovieClip {level5} [level5]Uses:21 562 64 86 31 45 62 56 42 60 332 54 37 39
Symbol 564 GraphicUses:239Used by:565
Symbol 565 MovieClip {mc_platform} [mc_platform]Uses:564
Symbol 566 GraphicUses:26 23 22 24 25Used by:567
Symbol 567 MovieClip {level19_back} [level19_back]Uses:566Used by:696
Symbol 568 TextUses:3Used by:571
Symbol 569 TextUses:3Used by:571
Symbol 570 TextUses:3Used by:571
Symbol 571 MovieClip {mc_tut1} [mc_tut1]Uses:568 569 570
Symbol 572 GraphicUses:24 26 25 23 22Used by:573
Symbol 573 MovieClip {level6_back} [level6_back]Uses:572Used by:574
Symbol 574 MovieClip {level6} [level6]Uses:573 21 54 42 56 256 31 45 37 39 64 245 280
Symbol 575 MovieClip {level7} [level7]Uses:388 21 54 64 60 256 245 280 37 48 31 334
Symbol 576 GraphicUsed by:577
Symbol 577 MovieClip {mc_cannonball} [mc_cannonball]Uses:576
Symbol 578 GraphicUses:166Used by:583
Symbol 579 TextUses:3Used by:583
Symbol 580 BitmapUsed by:581
Symbol 581 GraphicUses:580Used by:582
Symbol 582 MovieClipUses:581Used by:583
Symbol 583 MovieClip {mc_defeat_screen} [mc_defeat_screen]Uses:578 538 579 582
Symbol 584 TextUses:3Used by:586
Symbol 585 EditableTextUses:3 643Used by:586
Symbol 586 MovieClip {mc_levelnumber} [mc_levelnumber]Uses:584 585
Symbol 587 GraphicUsed by:591
Symbol 588 GraphicUsed by:589
Symbol 589 MovieClipUses:588Used by:591 594
Symbol 590 TextUses:3Used by:591
Symbol 591 MovieClipUses:587 589 590Used by:595
Symbol 592 TextUses:3Used by:594
Symbol 593 GraphicUsed by:594
Symbol 594 MovieClipUses:592 589 593Used by:595
Symbol 595 MovieClip {mc_mouses} [mc_mouses]Uses:591 594
Symbol 596 GraphicUses:23 24 25 22Used by:597
Symbol 597 MovieClip {level14_back} [level14_back]Uses:596Used by:669
Symbol 598 GraphicUses:327Used by:599
Symbol 599 MovieClip {mc_switchcannon3} [mc_switchcannon3]Uses:326 598
Symbol 600 GraphicUsed by:602
Symbol 601 GraphicUsed by:602
Symbol 602 ButtonUses:600 601 14 15Used by:603
Symbol 603 MovieClip {mc_arcadebomb_logo} [mc_arcadebomb_logo]Uses:602
Symbol 604 TextUses:3Used by:606
Symbol 605 TextUses:3Used by:606
Symbol 606 MovieClip {mc_tut14} [mc_tut14]Uses:604 605
Symbol 607 ShapeTweeningUsed by:610
Symbol 608 ShapeTweeningUsed by:610
Symbol 609 GraphicUsed by:610
Symbol 610 MovieClip {SBResources_fla.mc_flash_health_28} [SBResources_fla.mc_flash_health_28]Uses:607 608 609Used by:616
Symbol 611 BitmapUsed by:612
Symbol 612 GraphicUses:611Used by:613
Symbol 613 MovieClip {mc_jail_chamber} [mc_jail_chamber]Uses:612
Symbol 614 Sound {mus_main_theme} [mus_main_theme]
Symbol 615 Sound {snd_arr} [snd_arr]
Symbol 616 MovieClip {mc_flash_health} [mc_flash_health]Uses:610
Symbol 617 TextUses:3Used by:618
Symbol 618 MovieClip {mc_tut_lev14} [mc_tut_lev14]Uses:262 265 617 267
Symbol 619 TextUses:3Used by:620
Symbol 620 MovieClip {mc_tut10} [mc_tut10]Uses:619
Symbol 621 Sound {snd_lose} [snd_lose]
Symbol 622 ShapeTweeningUsed by:625
Symbol 623 ShapeTweeningUsed by:625
Symbol 624 GraphicUsed by:625
Symbol 625 MovieClipUses:622 623 624Used by:626
Symbol 626 MovieClip {dot} [dot]Uses:625
Symbol 627 MovieClip {level} [level]Uses:486 34 242
Symbol 628 TextUses:3Used by:630
Symbol 629 EditableTextUses:3 643Used by:630
Symbol 630 MovieClip {mc_time} [mc_time]Uses:628 629
Symbol 631 TextUses:3Used by:632
Symbol 632 MovieClip {mc_tut_lev6} [mc_tut_lev6]Uses:262 265 631 267
Symbol 633 MovieClip {level9} [level9]Uses:21 490 86 245 48 31 42 280 146 56 45 332 37 39 236 62
Symbol 634 GraphicUsed by:635
Symbol 635 MovieClip {backshape_b_7} [backshape_b_7]Uses:634
Symbol 636 GraphicUses:25 26 23 24 22Used by:637
Symbol 637 MovieClip {level16_back} [level16_back]Uses:636Used by:675
Symbol 638 MovieClip {level4} [level4]Uses:21 472 58 39 31 256 42 56 332 64 60 45 62 37 236
Symbol 639 TextUses:3Used by:642
Symbol 640 TextUses:3Used by:642
Symbol 641 TextUses:3Used by:642
Symbol 642 Button {bt_Walkthrough} [bt_Walkthrough]Uses:639 640 641
Symbol 643 FontUsed by:4 171 177 179 208 210 212 294 434 526 527 528 529 530 585 629 644 653 655
Symbol 644 EditableTextUses:3 643Used by:645
Symbol 645 MovieClipUses:644Used by:646
Symbol 646 MovieClip {mc_scorehint_red} [mc_scorehint_red]Uses:645
Symbol 647 GraphicUses:166Used by:658
Symbol 648 TextUses:3Used by:658
Symbol 649 TextUses:3Used by:658
Symbol 650 TextUses:3Used by:658
Symbol 651 TextUses:3Used by:658
Symbol 652 TextUses:3Used by:658
Symbol 653 EditableTextUses:3 643Used by:654
Symbol 654 MovieClipUses:653Used by:658
Symbol 655 EditableTextUses:3 643Used by:656
Symbol 656 MovieClipUses:655Used by:658
Symbol 657 GraphicUses:173Used by:658
Symbol 658 MovieClip {mc_credits_wnd} [mc_credits_wnd]Uses:647 648 649 650 651 652 654 656 219 657
Symbol 659 GraphicUsed by:665
Symbol 660 GraphicUsed by:665
Symbol 661 GraphicUsed by:665
Symbol 662 GraphicUsed by:665
Symbol 663 GraphicUsed by:665
Symbol 664 GraphicUsed by:665
Symbol 665 MovieClip {mc_crate_explode} [mc_crate_explode]Uses:659 660 661 662 663 664
Symbol 666 GraphicUses:24 23 26 22 25Used by:667
Symbol 667 MovieClip {level15_back} [level15_back]Uses:666Used by:693
Symbol 668 MovieClip {level1} [level1]Uses:557 31 21 64 56 146 37 86 45 54
Symbol 669 MovieClip {level14} [level14]Uses:21 597 37 31 236 51 95 329 62 39 256
Symbol 670 GraphicUses:91 92Used by:672
Symbol 671 GraphicUses:91 92Used by:672
Symbol 672 MovieClip {mc_switch1} [mc_switch1]Uses:670 671
Symbol 673 GraphicUsed by:674
Symbol 674 MovieClip {backshape_b_3} [backshape_b_3]Uses:673
Symbol 675 MovieClip {level16} [level16]Uses:21 637 95 481 37 334 39 51 48 31 60 45 58 62 56 64 256
Symbol 676 GraphicUsed by:683
Symbol 677 GraphicUsed by:683
Symbol 678 GraphicUsed by:683
Symbol 679 GraphicUsed by:683
Symbol 680 GraphicUsed by:683
Symbol 681 GraphicUsed by:683
Symbol 682 GraphicUsed by:683
Symbol 683 MovieClip {mc_bullet_explode} [mc_bullet_explode]Uses:676 677 678 679 680 681 682
Symbol 684 TextUses:3Used by:686
Symbol 685 TextUses:3Used by:686
Symbol 686 MovieClip {mc_tut2} [mc_tut2]Uses:684 685
Symbol 687 Sound {snd_splash} [snd_splash]
Symbol 688 GraphicUses:299Used by:691
Symbol 689 TextUses:3Used by:691
Symbol 690 TextUses:3Used by:691
Symbol 691 Button {btn_play} [btn_play]Uses:688 689 690 303
Symbol 692 MovieClip {level2} [level2]Uses:21 470 48 31 256 45 51 56 37 236 58 60
Symbol 693 MovieClip {level15} [level15]Uses:21 667 31 256 95 51 37 56 45 60 62 481 106 54 332 64
Symbol 694 MovieClip {level10} [level10]Uses:460 21 56 106 256 31 45 245 60 37 332
Symbol 695 Sound {snd_help} [snd_help]
Symbol 696 MovieClip {level19} [level19]Uses:21 567 236 256 42 56 357 62 45 37 31 106 280 39 332 60
Symbol 697 MovieClip {level3} [level3]Uses:21 437 48 45 31 42 56 37 332 64 256 60 62
Symbol 698 Sound {snd_bubbling} [snd_bubbling]
Symbol 699 GraphicUsed by:711
Symbol 700 GraphicUsed by:711
Symbol 701 GraphicUsed by:711
Symbol 702 GraphicUsed by:711
Symbol 703 GraphicUsed by:711
Symbol 704 GraphicUsed by:711
Symbol 705 GraphicUsed by:711
Symbol 706 GraphicUsed by:711
Symbol 707 GraphicUsed by:711
Symbol 708 GraphicUsed by:711
Symbol 709 GraphicUsed by:711
Symbol 710 GraphicUsed by:711
Symbol 711 MovieClip {mc_bulk} [mc_bulk]Uses:699 700 701 702 703 704 705 706 707 708 709 710
Symbol 712 MovieClip {level18} [level18]Uses:21 453 37 236 256 42 51 56 482 31 62 45 64 60 97
Symbol 713 TextUses:3Used by:714
Symbol 714 MovieClip {mc_tut_lev0} [mc_tut_lev0]Uses:262 265 713 267

Instance Names

"tf_perc"Symbol 5 MovieClip {mc_perc} [mc_perc] Frame 1Symbol 4 EditableText
"mc_expl"Symbol 83 MovieClip Frame 1Symbol 76 MovieClip {SBResources_fla.explode_141} [SBResources_fla.explode_141]
"mc_reload"Symbol 83 MovieClip Frame 1Symbol 82 MovieClip
"m_gun"Symbol 86 MovieClip {mc_cannon2_enemy} [mc_cannon2_enemy] Frame 1Symbol 83 MovieClip
"mc_s0"Symbol 141 MovieClip {mc_sea} [mc_sea] Frame 1Symbol 140 MovieClip {SBResources_fla.water_test_3} [SBResources_fla.water_test_3]
"link_btn"Symbol 153 MovieClip {mc_arc_bt} [mc_arc_bt] Frame 1Symbol 152 Button
"m_tf"Symbol 176 MovieClip {btn_level_x0} [btn_level_x0] Frame 1Symbol 171 EditableText
"m_tf"Symbol 209 MovieClip {btn_level_x1} [btn_level_x1] Frame 1Symbol 208 EditableText
"m_tf"Symbol 211 MovieClip {btn_level_x2} [btn_level_x2] Frame 1Symbol 210 EditableText
"m_tf"Symbol 213 MovieClip {btn_level_x3} [btn_level_x3] Frame 1Symbol 212 EditableText
"bt_lev0"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 176 MovieClip {btn_level_x0} [btn_level_x0]
"m_golden_score"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 177 EditableText
"m_cur_score"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 179 EditableText
"m_metal_score"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 177 EditableText
"bt_p0"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 188 MovieClip
"bt_p1"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 192 MovieClip
"bt_p2"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 195 MovieClip
"bt_p3"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 198 MovieClip
"bt_p4"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 201 MovieClip
"bt_p5"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 204 MovieClip
"bt_p6"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 207 MovieClip
"bt_lev1"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 209 MovieClip {btn_level_x1} [btn_level_x1]
"bt_lev2"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 211 MovieClip {btn_level_x2} [btn_level_x2]
"bt_lev3"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 213 MovieClip {btn_level_x3} [btn_level_x3]
"m_bt_close"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 219 Button
"mc_chest_0"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 224 MovieClip {SBResources_fla.mc_chest_icon_116} [SBResources_fla.mc_chest_icon_116]
"mc_chest_1"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 224 MovieClip {SBResources_fla.mc_chest_icon_116} [SBResources_fla.mc_chest_icon_116]
"mc_chest_2"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 224 MovieClip {SBResources_fla.mc_chest_icon_116} [SBResources_fla.mc_chest_icon_116]
"mc_chest_3"Symbol 225 MovieClip {mc_choose_level_interface} [mc_choose_level_interface] Frame 1Symbol 224 MovieClip {SBResources_fla.mc_chest_icon_116} [SBResources_fla.mc_chest_icon_116]
"mc_expl"Symbol 248 MovieClip Frame 1Symbol 76 MovieClip {SBResources_fla.explode_141} [SBResources_fla.explode_141]
"mc_reload"Symbol 248 MovieClip Frame 1Symbol 82 MovieClip
"m_gun"Symbol 256 MovieClip {mc_cannon_enemy} [mc_cannon_enemy] Frame 1Symbol 248 MovieClip
"mc_health"Symbol 256 MovieClip {mc_cannon_enemy} [mc_cannon_enemy] Frame 1Symbol 253 MovieClip
"m_bt_next"Symbol 268 MovieClip {mc_tut_lev10} [mc_tut_lev10] Frame 10Symbol 265 Button
"m_tf"Symbol 295 MovieClip Frame 1Symbol 294 EditableText
"m_tf"Symbol 297 MovieClip {SBResources_fla.scoresvalue_anims_18} [SBResources_fla.scoresvalue_anims_18] Frame 1Symbol 295 MovieClip
"m_tf"Symbol 298 MovieClip {mc_scores} [mc_scores] Frame 1Symbol 297 MovieClip {SBResources_fla.scoresvalue_anims_18} [SBResources_fla.scoresvalue_anims_18]
"mc_expl"Symbol 326 MovieClip Frame 1Symbol 325 MovieClip {SBResources_fla.explode3_119} [SBResources_fla.explode3_119]
"mc_cannon"Symbol 329 MovieClip {mc_switchcannon2} [mc_switchcannon2] Frame 1Symbol 326 MovieClip
"tf_gold"Symbol 356 MovieClip {mc_final} [mc_final] Frame 1Symbol 348 EditableText
"tf_metal"Symbol 356 MovieClip {mc_final} [mc_final] Frame 1Symbol 349 EditableText
"tf_wooden"Symbol 356 MovieClip {mc_final} [mc_final] Frame 1Symbol 350 EditableText
"bt_close"Symbol 356 MovieClip {mc_final} [mc_final] Frame 1Symbol 353 Button
"mc_arrow"Symbol 380 MovieClip Frame 1Symbol 368 MovieClip
"mc_expl"Symbol 380 MovieClip Frame 1Symbol 375 MovieClip {SBResources_fla.explode2_10} [SBResources_fla.explode2_10]
"mc_reload"Symbol 380 MovieClip Frame 1Symbol 379 MovieClip {SBResources_fla.cooldown_11} [SBResources_fla.cooldown_11]
"m_gun"Symbol 386 MovieClip {mc_cannon_player} [mc_cannon_player] Frame 1Symbol 380 MovieClip
"m_center"Symbol 386 MovieClip {mc_cannon_player} [mc_cannon_player] Frame 1Symbol 385 MovieClip
"m_bt_next"Symbol 390 MovieClip {mc_tut_lev2} [mc_tut_lev2] Frame 10Symbol 265 Button
"mc_wave"Symbol 430 MovieClip {mc_ship_player} [mc_ship_player] Frame 1Symbol 429 MovieClip
"m_bt_next"Symbol 432 MovieClip {mc_tut_lev1} [mc_tut_lev1] Frame 10Symbol 265 Button
"m_tf"Symbol 435 MovieClip {mc_shots} [mc_shots] Frame 1Symbol 434 EditableText
"m_tf"Symbol 457 MovieClip Frame 1Symbol 456 EditableText
"m_tf"Symbol 458 MovieClip {mc_scorehint_green} [mc_scorehint_green] Frame 1Symbol 457 MovieClip
"mc_cannon"Symbol 474 MovieClip {mc_switchcannon1} [mc_switchcannon1] Frame 1Symbol 326 MovieClip
"mc_cannon"Symbol 481 MovieClip {mc_switchcannon} [mc_switchcannon] Frame 1Symbol 326 MovieClip
"mc_movie"Symbol 498 MovieClip {mc_ab_splash} [mc_ab_splash] Frame 20Symbol 497 MovieClip
"mc_chest"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 525 MovieClip {SBResources_fla.levelcomplete_chest_type_92} [SBResources_fla.levelcomplete_chest_type_92]
"mc_level"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 526 EditableText
"tf_score"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 527 EditableText
"tf_shots"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 528 EditableText
"tf_time"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 529 EditableText
"tf_total_score"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 530 EditableText
"m_bt_next"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 265 Button
"m_bt_replay"Symbol 539 MovieClip {mc_level_complete_screen} [mc_level_complete_screen] Frame 1Symbol 538 Button
"m_bt_replay"Symbol 583 MovieClip {mc_defeat_screen} [mc_defeat_screen] Frame 1Symbol 538 Button
"m_tf"Symbol 586 MovieClip {mc_levelnumber} [mc_levelnumber] Frame 1Symbol 585 EditableText
"mc_cannon"Symbol 599 MovieClip {mc_switchcannon3} [mc_switchcannon3] Frame 1Symbol 326 MovieClip
"mc"Symbol 616 MovieClip {mc_flash_health} [mc_flash_health] Frame 1Symbol 610 MovieClip {SBResources_fla.mc_flash_health_28} [SBResources_fla.mc_flash_health_28]
"m_bt_next"Symbol 618 MovieClip {mc_tut_lev14} [mc_tut_lev14] Frame 10Symbol 265 Button
"m_tf"Symbol 630 MovieClip {mc_time} [mc_time] Frame 1Symbol 629 EditableText
"m_bt_next"Symbol 632 MovieClip {mc_tut_lev6} [mc_tut_lev6] Frame 10Symbol 265 Button
"m_tf"Symbol 645 MovieClip Frame 1Symbol 644 EditableText
"m_tf"Symbol 646 MovieClip {mc_scorehint_red} [mc_scorehint_red] Frame 1Symbol 645 MovieClip
"m_mc_email_koseki"Symbol 658 MovieClip {mc_credits_wnd} [mc_credits_wnd] Frame 1Symbol 654 MovieClip
"m_mc_email_jamayka"Symbol 658 MovieClip {mc_credits_wnd} [mc_credits_wnd] Frame 1Symbol 656 MovieClip
"bt_close"Symbol 658 MovieClip {mc_credits_wnd} [mc_credits_wnd] Frame 1Symbol 219 Button
"m_bt_next"Symbol 714 MovieClip {mc_tut_lev0} [mc_tut_lev0] Frame 10Symbol 265 Button

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 1457 bytes "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'><rdf:Description rdf:about='' xmlns ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 2 as "mc_loading_bg"
ExportAssets (56)Timeline Frame 1Symbol 5 as "mc_perc"
ExportAssets (56)Timeline Frame 1Symbol 7 as "mc_pres"
ExportAssets (56)Timeline Frame 1Symbol 11 as "mc_loading_bar"
ExportAssets (56)Timeline Frame 1Symbol 16 as "remake_button6"
ExportAssets (56)Timeline Frame 1Symbol 1 as "back_loading"
ExportAssets (56)Timeline Frame 2Symbol 18 as "backshape_u_3"
ExportAssets (56)Timeline Frame 2Symbol 87 as "level23"
ExportAssets (56)Timeline Frame 2Symbol 90 as "mc_ash"
ExportAssets (56)Timeline Frame 2Symbol 95 as "mc_switch2"
ExportAssets (56)Timeline Frame 2Symbol 97 as "bricks_bott"
ExportAssets (56)Timeline Frame 2Symbol 106 as "mc_crashed_block"
ExportAssets (56)Timeline Frame 2Symbol 141 as "mc_sea"
ExportAssets (56)Timeline Frame 2Symbol 147 as "level26"
ExportAssets (56)Timeline Frame 2Symbol 153 as "mc_arc_bt"
ExportAssets (56)Timeline Frame 2Symbol 163 as "mc_playerhealthbar"
ExportAssets (56)Timeline Frame 2Symbol 165 as "backshape_u_1"
ExportAssets (56)Timeline Frame 2Symbol 45 as "bricks_top"
ExportAssets (56)Timeline Frame 2Symbol 225 as "mc_choose_level_interface"
ExportAssets (56)Timeline Frame 2Symbol 227 as "backshape_u_0"
ExportAssets (56)Timeline Frame 2Symbol 230 as "mc_backsky_red"
ExportAssets (56)Timeline Frame 2Symbol 232 as "level25_back"
ExportAssets (56)Timeline Frame 2Symbol 257 as "level20"
ExportAssets (56)Timeline Frame 2Symbol 259 as "backshape_b_6"
ExportAssets (56)Timeline Frame 2Symbol 268 as "mc_tut_lev10"
ExportAssets (56)Timeline Frame 2Symbol 270 as "backshape_b_2"
ExportAssets (56)Timeline Frame 2Symbol 272 as "backshape_b_5"
ExportAssets (56)Timeline Frame 2Symbol 34 as "mc_mill"
ExportAssets (56)Timeline Frame 2Symbol 275 as "mc_more"
ExportAssets (56)Timeline Frame 2Symbol 281 as "level22"
ExportAssets (56)Timeline Frame 2Symbol 292 as "mc_explode"
ExportAssets (56)Timeline Frame 2Symbol 298 as "mc_scores"
ExportAssets (56)Timeline Frame 2Symbol 305 as "btn_quit"
ExportAssets (56)Timeline Frame 2Symbol 307 as "level17_back"
ExportAssets (56)Timeline Frame 2Symbol 309 as "backshape_b_0"
ExportAssets (56)Timeline Frame 2Symbol 314 as "level24"
ExportAssets (56)Timeline Frame 2Symbol 316 as "backshape_b_1"
ExportAssets (56)Timeline Frame 2Symbol 338 as "level17"
ExportAssets (56)Timeline Frame 2Symbol 340 as "level29_back"
ExportAssets (56)Timeline Frame 2Symbol 346 as "btn_credits"
ExportAssets (56)Timeline Frame 2Symbol 356 as "mc_final"
ExportAssets (56)Timeline Frame 2Symbol 357 as "mc_crane_mid"
ExportAssets (56)Timeline Frame 2Symbol 146 as "bricks1"
ExportAssets (56)Timeline Frame 2Symbol 359 as "backshape_b_4"
ExportAssets (56)Timeline Frame 2Symbol 362 as "level21"
ExportAssets (56)Timeline Frame 2Symbol 364 as "mc_tut6"
ExportAssets (56)Timeline Frame 2Symbol 386 as "mc_cannon_player"
ExportAssets (56)Timeline Frame 2Symbol 388 as "level7_back"
ExportAssets (56)Timeline Frame 2Symbol 390 as "mc_tut_lev2"
ExportAssets (56)Timeline Frame 2Symbol 392 as "level8_back"
ExportAssets (56)Timeline Frame 2Symbol 48 as "bricks_loop_hor"
ExportAssets (56)Timeline Frame 2Symbol 393 as "snd_expl1"
ExportAssets (56)Timeline Frame 2Symbol 395 as "backshape_u_2"
ExportAssets (56)Timeline Frame 2Symbol 399 as "btn_soundon"
ExportAssets (56)Timeline Frame 2Symbol 405 as "level0"
ExportAssets (56)Timeline Frame 2Symbol 430 as "mc_ship_player"
ExportAssets (56)Timeline Frame 2Symbol 297 as "SBResources_fla.scoresvalue_anims_18"
ExportAssets (56)Timeline Frame 2Symbol 432 as "mc_tut_lev1"
ExportAssets (56)Timeline Frame 2Symbol 435 as "mc_shots"
ExportAssets (56)Timeline Frame 2Symbol 437 as "level3_back"
ExportAssets (56)Timeline Frame 2Symbol 438 as "snd_expl0"
ExportAssets (56)Timeline Frame 2Symbol 440 as "mc_chain_short"
ExportAssets (56)Timeline Frame 2Symbol 443 as "level28"
ExportAssets (56)Timeline Frame 2Symbol 450 as "btn_replay"
ExportAssets (56)Timeline Frame 2Symbol 140 as "SBResources_fla.water_test_3"
ExportAssets (56)Timeline Frame 2Symbol 242 as "mc_crane_short"
ExportAssets (56)Timeline Frame 2Symbol 451 as "snd_yohoho"
ExportAssets (56)Timeline Frame 2Symbol 453 as "level18_back"
ExportAssets (56)Timeline Frame 2Symbol 332 as "bricks"
ExportAssets (56)Timeline Frame 2Symbol 86 as "mc_cannon2_enemy"
ExportAssets (56)Timeline Frame 2Symbol 329 as "mc_switchcannon2"
ExportAssets (56)Timeline Frame 2Symbol 455 as "mc_chain"
ExportAssets (56)Timeline Frame 2Symbol 313 as "bricks_loop_vert2"
ExportAssets (56)Timeline Frame 2Symbol 458 as "mc_scorehint_green"
ExportAssets (56)Timeline Frame 2Symbol 234 as "level20_back"
ExportAssets (56)Timeline Frame 2Symbol 460 as "level10_back"
ExportAssets (56)Timeline Frame 2Symbol 463 as "btn_continue"
ExportAssets (56)Timeline Frame 2Symbol 224 as "SBResources_fla.mc_chest_icon_116"
ExportAssets (56)Timeline Frame 2Symbol 465 as "backshape_u_5"
ExportAssets (56)Timeline Frame 2Symbol 468 as "level27"
ExportAssets (56)Timeline Frame 2Symbol 470 as "level2_back"
ExportAssets (56)Timeline Frame 2Symbol 472 as "level4_back"
ExportAssets (56)Timeline Frame 2Symbol 474 as "mc_switchcannon1"
ExportAssets (56)Timeline Frame 2Symbol 476 as "backshape_u_4"
ExportAssets (56)Timeline Frame 2Symbol 58 as "bricks_corner4"
ExportAssets (56)Timeline Frame 2Symbol 479 as "btn_soundoff"
ExportAssets (56)Timeline Frame 2Symbol 60 as "bricks_corner3"
ExportAssets (56)Timeline Frame 2Symbol 481 as "mc_switchcannon"
ExportAssets (56)Timeline Frame 2Symbol 482 as "mc_crane_long"
ExportAssets (56)Timeline Frame 2Symbol 483 as "level25"
ExportAssets (56)Timeline Frame 2Symbol 484 as "level29"
ExportAssets (56)Timeline Frame 2Symbol 486 as "level_back"
ExportAssets (56)Timeline Frame 2Symbol 54 as "bricks_loop_vert"
ExportAssets (56)Timeline Frame 2Symbol 488 as "mc_chain_long"
ExportAssets (56)Timeline Frame 2Symbol 490 as "level9_back"
ExportAssets (56)Timeline Frame 2Symbol 62 as "wood_corner2"
ExportAssets (56)Timeline Frame 2Symbol 277 as "level22_back"
ExportAssets (56)Timeline Frame 2Symbol 498 as "mc_ab_splash"
ExportAssets (56)Timeline Frame 2Symbol 501 as "mc_crosshair"
ExportAssets (56)Timeline Frame 2Symbol 509 as "mc_water_bulk"
ExportAssets (56)Timeline Frame 2Symbol 236 as "wood_corner4"
ExportAssets (56)Timeline Frame 2Symbol 512 as "level13"
ExportAssets (56)Timeline Frame 2Symbol 28 as "level23_back"
ExportAssets (56)Timeline Frame 2Symbol 513 as "snd_crate_crash"
ExportAssets (56)Timeline Frame 2Symbol 539 as "mc_level_complete_screen"
ExportAssets (56)Timeline Frame 2Symbol 540 as "level8"
ExportAssets (56)Timeline Frame 2Symbol 543 as "level12"
ExportAssets (56)Timeline Frame 2Symbol 546 as "level11"
ExportAssets (56)Timeline Frame 2Symbol 549 as "mc_bg"
ExportAssets (56)Timeline Frame 2Symbol 555 as "mc_bmb"
ExportAssets (56)Timeline Frame 2Symbol 51 as "bricks_corner2"
ExportAssets (56)Timeline Frame 2Symbol 557 as "level1_back"
ExportAssets (56)Timeline Frame 2Symbol 560 as "mc_tut0"
ExportAssets (56)Timeline Frame 2Symbol 37 as "wood_corner1"
ExportAssets (56)Timeline Frame 2Symbol 563 as "level5"
ExportAssets (56)Timeline Frame 2Symbol 565 as "mc_platform"
ExportAssets (56)Timeline Frame 2Symbol 567 as "level19_back"
ExportAssets (56)Timeline Frame 2Symbol 571 as "mc_tut1"
ExportAssets (56)Timeline Frame 2Symbol 574 as "level6"
ExportAssets (56)Timeline Frame 2Symbol 575 as "level7"
ExportAssets (56)Timeline Frame 2Symbol 577 as "mc_cannonball"
ExportAssets (56)Timeline Frame 2Symbol 583 as "mc_defeat_screen"
ExportAssets (56)Timeline Frame 2Symbol 586 as "mc_levelnumber"
ExportAssets (56)Timeline Frame 2Symbol 595 as "mc_mouses"
ExportAssets (56)Timeline Frame 2Symbol 56 as "bricks_corner"
ExportAssets (56)Timeline Frame 2Symbol 597 as "level14_back"
ExportAssets (56)Timeline Frame 2Symbol 599 as "mc_switchcannon3"
ExportAssets (56)Timeline Frame 2Symbol 603 as "mc_arcadebomb_logo"
ExportAssets (56)Timeline Frame 2Symbol 606 as "mc_tut14"
ExportAssets (56)Timeline Frame 2Symbol 442 as "level28_back"
ExportAssets (56)Timeline Frame 2Symbol 610 as "SBResources_fla.mc_flash_health_28"
ExportAssets (56)Timeline Frame 2Symbol 613 as "mc_jail_chamber"
ExportAssets (56)Timeline Frame 2Symbol 614 as "mus_main_theme"
ExportAssets (56)Timeline Frame 2Symbol 245 as "mc_metal_box"
ExportAssets (56)Timeline Frame 2Symbol 615 as "snd_arr"
ExportAssets (56)Timeline Frame 2Symbol 616 as "mc_flash_health"
ExportAssets (56)Timeline Frame 2Symbol 42 as "bricks_side"
ExportAssets (56)Timeline Frame 2Symbol 618 as "mc_tut_lev14"
ExportAssets (56)Timeline Frame 2Symbol 573 as "level6_back"
ExportAssets (56)Timeline Frame 2Symbol 620 as "mc_tut10"
ExportAssets (56)Timeline Frame 2Symbol 280 as "mc_crate"
ExportAssets (56)Timeline Frame 2Symbol 621 as "snd_lose"
ExportAssets (56)Timeline Frame 2Symbol 626 as "dot"
ExportAssets (56)Timeline Frame 2Symbol 627 as "level"
ExportAssets (56)Timeline Frame 2Symbol 211 as "btn_level_x2"
ExportAssets (56)Timeline Frame 2Symbol 404 as "mc_aim"
ExportAssets (56)Timeline Frame 2Symbol 630 as "mc_time"
ExportAssets (56)Timeline Frame 2Symbol 76 as "SBResources_fla.explode_141"
ExportAssets (56)Timeline Frame 2Symbol 511 as "level13_back"
ExportAssets (56)Timeline Frame 2Symbol 632 as "mc_tut_lev6"
ExportAssets (56)Timeline Frame 2Symbol 633 as "level9"
ExportAssets (56)Timeline Frame 2Symbol 635 as "backshape_b_7"
ExportAssets (56)Timeline Frame 2Symbol 637 as "level16_back"
ExportAssets (56)Timeline Frame 2Symbol 638 as "level4"
ExportAssets (56)Timeline Frame 2Symbol 642 as "bt_Walkthrough"
ExportAssets (56)Timeline Frame 2Symbol 209 as "btn_level_x1"
ExportAssets (56)Timeline Frame 2Symbol 379 as "SBResources_fla.cooldown_11"
ExportAssets (56)Timeline Frame 2Symbol 646 as "mc_scorehint_red"
ExportAssets (56)Timeline Frame 2Symbol 658 as "mc_credits_wnd"
ExportAssets (56)Timeline Frame 2Symbol 361 as "level21_back"
ExportAssets (56)Timeline Frame 2Symbol 143 as "level26_back"
ExportAssets (56)Timeline Frame 2Symbol 665 as "mc_crate_explode"
ExportAssets (56)Timeline Frame 2Symbol 667 as "level15_back"
ExportAssets (56)Timeline Frame 2Symbol 668 as "level1"
ExportAssets (56)Timeline Frame 2Symbol 669 as "level14"
ExportAssets (56)Timeline Frame 2Symbol 672 as "mc_switch1"
ExportAssets (56)Timeline Frame 2Symbol 674 as "backshape_b_3"
ExportAssets (56)Timeline Frame 2Symbol 256 as "mc_cannon_enemy"
ExportAssets (56)Timeline Frame 2Symbol 675 as "level16"
ExportAssets (56)Timeline Frame 2Symbol 683 as "mc_bullet_explode"
ExportAssets (56)Timeline Frame 2Symbol 21 as "mc_fort_basement"
ExportAssets (56)Timeline Frame 2Symbol 686 as "mc_tut2"
ExportAssets (56)Timeline Frame 2Symbol 542 as "level12_back"
ExportAssets (56)Timeline Frame 2Symbol 687 as "snd_splash"
ExportAssets (56)Timeline Frame 2Symbol 691 as "btn_play"
ExportAssets (56)Timeline Frame 2Symbol 692 as "level2"
ExportAssets (56)Timeline Frame 2Symbol 693 as "level15"
ExportAssets (56)Timeline Frame 2Symbol 525 as "SBResources_fla.levelcomplete_chest_type_92"
ExportAssets (56)Timeline Frame 2Symbol 694 as "level10"
ExportAssets (56)Timeline Frame 2Symbol 334 as "bricks_loop_hor2"
ExportAssets (56)Timeline Frame 2Symbol 213 as "btn_level_x3"
ExportAssets (56)Timeline Frame 2Symbol 562 as "level5_back"
ExportAssets (56)Timeline Frame 2Symbol 695 as "snd_help"
ExportAssets (56)Timeline Frame 2Symbol 375 as "SBResources_fla.explode2_10"
ExportAssets (56)Timeline Frame 2Symbol 401 as "level0_back"
ExportAssets (56)Timeline Frame 2Symbol 176 as "btn_level_x0"
ExportAssets (56)Timeline Frame 2Symbol 467 as "level27_back"
ExportAssets (56)Timeline Frame 2Symbol 696 as "level19"
ExportAssets (56)Timeline Frame 2Symbol 697 as "level3"
ExportAssets (56)Timeline Frame 2Symbol 698 as "snd_bubbling"
ExportAssets (56)Timeline Frame 2Symbol 39 as "wood_corner3"
ExportAssets (56)Timeline Frame 2Symbol 545 as "level11_back"
ExportAssets (56)Timeline Frame 2Symbol 311 as "level24_back"
ExportAssets (56)Timeline Frame 2Symbol 711 as "mc_bulk"
ExportAssets (56)Timeline Frame 2Symbol 64 as "bricks_side2"
ExportAssets (56)Timeline Frame 2Symbol 712 as "level18"
ExportAssets (56)Timeline Frame 2Symbol 31 as "mc_barrel"
ExportAssets (56)Timeline Frame 2Symbol 337 as "mc_switch"
ExportAssets (56)Timeline Frame 2Symbol 714 as "mc_tut_lev0"
ExportAssets (56)Timeline Frame 2Symbol 325 as "SBResources_fla.explode3_119"
SerialNumber (41)Timeline Frame 1

Labels

"Preloader"Frame 1
"two"Frame 2
"scroll"Symbol 140 MovieClip {SBResources_fla.water_test_3} [SBResources_fla.water_test_3] Frame 1
"static"Symbol 140 MovieClip {SBResources_fla.water_test_3} [SBResources_fla.water_test_3] Frame 61
"green"Symbol 297 MovieClip {SBResources_fla.scoresvalue_anims_18} [SBResources_fla.scoresvalue_anims_18] Frame 1
"red"Symbol 297 MovieClip {SBResources_fla.scoresvalue_anims_18} [SBResources_fla.scoresvalue_anims_18] Frame 16




http://swfchan.com/24/118505/info.shtml
Created: 7/3 -2019 04:44:17 Last modified: 7/3 -2019 04:44:17 Server time: 28/04 -2024 19:02:34