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

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

Windy Day - control the wind and fly your paper plane.swf

This is the info page for
Flash #93634

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


Text
a
windy
day

ver 2.4

Loading

100%

Play More!

play

options

more games

credits

medals

scores

help

close

HELP

The PAPER PLANE will fly forward

CLICK + HOLD your mouse below the plane
to give it an UPWARD BOOST

click + hold

CLICK + HOLD your mouse above the plane
to give it an DOWNWARD BOOST

but pay attention to your WIND GAUGE

Avoid crashing BIRDS, BUILDINGS, or TREES
as they will DESTROY your PLANE

POP BALLOONS to earn BONUS POINTS
and extra WIND POWER

500

PROGRAMMER
Sudarmin Then

ART & DESIGN
Kris Antoni

MUSIC

by

"Sunny Day!"

"Sunny Day!"

"Sunny Day!"

BattleShield

BattleShield

BattleShield

"White Sand"

"White Sand"

"White Sand"

Coleman Trapp

Coleman Trapp

Coleman Trapp

CREDITS

Medal Name

Description

Acheived or Not

?

MEDALS

loading...

please wait

loading..

loading.

loading

graphic quality

low

med

high

sound

on

off

OPTIONS

6x
ss

- Champion -

UNLOCKED!

100v

DISTANCE

RESULTS

TOTAL SCORE

0

0

retry

submit

BALLOONS POPPED

0

Trivia

Toge production literaly means beansprout production

2X

menu

(click to skip)

Your Name Here

Check This Out!

PAUSED

resume

option

ActionScript [AS3]

Section 1
//adArea_37 (AWindyDay_fla.adArea_37) package AWindyDay_fla { import flash.display.*; public dynamic class adArea_37 extends MovieClip { public var adArea:MovieClip; } }//package AWindyDay_fla
Section 2
//baloonHead_106 (AWindyDay_fla.baloonHead_106) package AWindyDay_fla { import flash.display.*; public dynamic class baloonHead_106 extends MovieClip { public function baloonHead_106(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package AWindyDay_fla
Section 3
//collisionBox_114 (AWindyDay_fla.collisionBox_114) package AWindyDay_fla { import flash.display.*; public dynamic class collisionBox_114 extends MovieClip { public function collisionBox_114(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package AWindyDay_fla
Section 4
//collisionBoxcopy_137 (AWindyDay_fla.collisionBoxcopy_137) package AWindyDay_fla { import flash.display.*; public dynamic class collisionBoxcopy_137 extends MovieClip { public function collisionBoxcopy_137(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package AWindyDay_fla
Section 5
//collisionBoxcopy2_139 (AWindyDay_fla.collisionBoxcopy2_139) package AWindyDay_fla { import flash.display.*; public dynamic class collisionBoxcopy2_139 extends MovieClip { public function collisionBoxcopy2_139(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package AWindyDay_fla
Section 6
//exportedSound_53 (AWindyDay_fla.exportedSound_53) package AWindyDay_fla { import flash.display.*; public dynamic class exportedSound_53 extends MovieClip { public function exportedSound_53(){ addFrameScript(1, frame2); } function frame2(){ stop(); } } }//package AWindyDay_fla
Section 7
//GUIStatusInfo_126 (AWindyDay_fla.GUIStatusInfo_126) package AWindyDay_fla { import flash.display.*; import flash.events.*; import flash.text.*; import flash.net.*; public dynamic class GUIStatusInfo_126 extends MovieClip { public var retryButton:SimpleButton; public var balloonPoppedText:TextField; public var bonusClip:MovieClip; public var triviaText:TextField; public var nameText:TextField; public var submitButton:SimpleButton; public var menuButton:SimpleButton; public var adBox:MovieClip; public var logo:MovieClip; public var distanceText:TextField; public var scoreText:TextField; public function GUIStatusInfo_126(){ addFrameScript(0, frame1); } function frame1(){ logo.addEventListener(MouseEvent.CLICK, onLogoClicked); logo.buttonMode = true; } public function onLogoClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://minijuegos.com/"); navigateToURL(_local2, "_blank"); } } }//package AWindyDay_fla
Section 8
//kid_19 (AWindyDay_fla.kid_19) package AWindyDay_fla { import flash.display.*; public dynamic class kid_19 extends MovieClip { public var lineBar:MovieClip; public var powerBar:MovieClip; public function kid_19(){ addFrameScript(8, frame9, 25, frame26); } function frame26(){ stop(); } function frame9(){ stop(); } } }//package AWindyDay_fla
Section 9
//loadingBar_35 (AWindyDay_fla.loadingBar_35) package AWindyDay_fla { import flash.display.*; public dynamic class loadingBar_35 extends MovieClip { public var bar:MovieClip; } }//package AWindyDay_fla
Section 10
//medalInfoMenu_120 (AWindyDay_fla.medalInfoMenu_120) package AWindyDay_fla { import flash.display.*; import flash.text.*; public dynamic class medalInfoMenu_120 extends MovieClip { public var clipHolder:MovieClip; public var medalName:TextField; } }//package AWindyDay_fla
Section 11
//poof_27 (AWindyDay_fla.poof_27) package AWindyDay_fla { import flash.display.*; public dynamic class poof_27 extends MovieClip { public function poof_27(){ addFrameScript(14, frame15); } function frame15(){ stop(); } } }//package AWindyDay_fla
Section 12
//powerBar_30 (AWindyDay_fla.powerBar_30) package AWindyDay_fla { import flash.display.*; public dynamic class powerBar_30 extends MovieClip { public var bar:MovieClip; } }//package AWindyDay_fla
Section 13
//screenCredits_77 (AWindyDay_fla.screenCredits_77) package AWindyDay_fla { import flash.display.*; import flash.events.*; import flash.net.*; public dynamic class screenCredits_77 extends MovieClip { public var windyDayLink:SimpleButton; public var chromosapienLink:SimpleButton; public var closeButton:SimpleButton; public var sunnyDayLink:SimpleButton; public var battleShieldLink:SimpleButton; public function screenCredits_77(){ addFrameScript(0, frame1); } public function onChromosapienClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.colemantrapp.com/"); navigateToURL(_local2, "_blank"); } public function onBattleShieldClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://battleshield.newgrounds.com/"); navigateToURL(_local2, "_blank"); } function frame1(){ sunnyDayLink.addEventListener(MouseEvent.CLICK, onSunnyDayClicked); battleShieldLink.addEventListener(MouseEvent.CLICK, onBattleShieldClicked); windyDayLink.addEventListener(MouseEvent.CLICK, onWindyDayClicked); chromosapienLink.addEventListener(MouseEvent.CLICK, onChromosapienClicked); } public function onWindyDayClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.colemantrapp.com"); navigateToURL(_local2, "_blank"); } public function onSunnyDayClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://www.newgrounds.com/audio/listen/103445"); navigateToURL(_local2, "_blank"); } } }//package AWindyDay_fla
Section 14
//screenCreditsAnimated_76 (AWindyDay_fla.screenCreditsAnimated_76) package AWindyDay_fla { import flash.display.*; public dynamic class screenCreditsAnimated_76 extends MovieClip { public var animationDone:Boolean; public var menu:MovieClip; public function screenCreditsAnimated_76(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package AWindyDay_fla
Section 15
//screenHelp_63 (AWindyDay_fla.screenHelp_63) package AWindyDay_fla { import flash.display.*; public dynamic class screenHelp_63 extends MovieClip { public var tutorial:MovieClip; public var closeButton:SimpleButton; } }//package AWindyDay_fla
Section 16
//screenMedals_83 (AWindyDay_fla.screenMedals_83) package AWindyDay_fla { import flash.display.*; import flash.text.*; public dynamic class screenMedals_83 extends MovieClip { public var helpingHand:helpingHandMedal; public var medalName:TextField; public var balloonPopper:balloonPopperMedal; public var champion:championMedal; public var acquainted:acquaintedMedal; public var crashLanding:crashLandingMedal; public var closeButton:SimpleButton; public var medalAchieved:TextField; public var birdHunter:birdHunterMedal; public var medalDescription:TextField; public var maximumPower:maximumPowerMedal; public var roofLander:roofLanderMedal; public var millionaire:millionaireMedal; public var traveller:travellerMedal; } }//package AWindyDay_fla
Section 17
//screenMedalsAnimated_82 (AWindyDay_fla.screenMedalsAnimated_82) package AWindyDay_fla { import flash.display.*; public dynamic class screenMedalsAnimated_82 extends MovieClip { public var animationDone:Boolean; public var menu:MovieClip; public function screenMedalsAnimated_82(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package AWindyDay_fla
Section 18
//screenOption_98 (AWindyDay_fla.screenOption_98) package AWindyDay_fla { import flash.display.*; public dynamic class screenOption_98 extends MovieClip { public var maskOffButton:SimpleButton; public var maskLowButton:SimpleButton; public var medButton:SimpleButton; public var onButton:SimpleButton; public var closeButton:SimpleButton; public var highButton:SimpleButton; public var maskHighButton:SimpleButton; public var offButton:SimpleButton; public var maskMedButton:SimpleButton; public var lowButton:SimpleButton; public var maskOnButton:SimpleButton; } }//package AWindyDay_fla
Section 19
//Symbol3_129 (AWindyDay_fla.Symbol3_129) package AWindyDay_fla { import flash.display.*; import flash.text.*; public dynamic class Symbol3_129 extends MovieClip { public var bonusText:TextField; } }//package AWindyDay_fla
Section 20
//UIAdvertising_131 (AWindyDay_fla.UIAdvertising_131) package AWindyDay_fla { import flash.display.*; public dynamic class UIAdvertising_131 extends MovieClip { public var adBox:MovieClip; } }//package AWindyDay_fla
Section 21
//windBar_123 (AWindyDay_fla.windBar_123) package AWindyDay_fla { import flash.display.*; public dynamic class windBar_123 extends MovieClip { public var bar:MovieClip; } }//package AWindyDay_fla
Section 22
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2CircleDef extends b2ShapeDef { public var localPosition:b2Vec2; public var radius:Number; public function b2CircleDef(){ localPosition = new b2Vec2(0, 0); super(); type = b2Shape.e_circleShape; radius = 1; } } }//package Box2D.Collision.Shapes
Section 23
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2CircleShape extends b2Shape { public var m_radius:Number; public var m_localPosition:b2Vec2; public function b2CircleShape(_arg1:b2ShapeDef){ var _local2:b2CircleDef; m_localPosition = new b2Vec2(); super(_arg1); _local2 = (_arg1 as b2CircleDef); m_type = e_circleShape; m_localPosition.SetV(_local2.localPosition); m_radius = _local2.radius; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg1.R; _local4 = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _local4 = (_arg2.x - _local4); _local5 = (_arg2.y - _local5); return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius))); } public function GetLocalPosition():b2Vec2{ return (m_localPosition); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg1.R; _local7 = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y))); _local8 = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y))); _local9 = (_arg4.p1.x - _local7); _local10 = (_arg4.p1.y - _local8); _local11 = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius)); if (_local11 < 0){ return (false); }; _local12 = (_arg4.p2.x - _arg4.p1.x); _local13 = (_arg4.p2.y - _arg4.p1.y); _local14 = ((_local9 * _local12) + (_local10 * _local13)); _local15 = ((_local12 * _local12) + (_local13 * _local13)); _local16 = ((_local14 * _local14) - (_local15 * _local11)); if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){ return (false); }; _local17 = -((_local14 + Math.sqrt(_local16))); if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){ _local17 = (_local17 / _local15); _arg2[0] = _local17; _arg3.x = (_local9 + (_local17 * _local12)); _arg3.y = (_local10 + (_local17 * _local13)); _arg3.Normalize(); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ _arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius); _arg1.center.SetV(m_localPosition); _arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y)))); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = _arg2.R; _local5 = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local6 = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _local4 = _arg3.R; _local7 = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y))); _local8 = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius)); _arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius)); } public function GetRadius():Number{ return (m_radius); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (m_localPosition.x - _arg1.x); _local3 = (m_localPosition.y - _arg1.y); _local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3))); m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop); } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; _local3 = _arg2.R; _local4 = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y))); _local5 = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y))); _arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius)); _arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius)); } } }//package Box2D.Collision.Shapes
Section 24
//b2FilterData (Box2D.Collision.Shapes.b2FilterData) package Box2D.Collision.Shapes { public class b2FilterData { public var maskBits:uint;// = 0xFFFF public var groupIndex:int;// = 0 public var categoryBits:uint;// = 1 public function b2FilterData(){ categoryBits = 1; maskBits = 0xFFFF; groupIndex = 0; super(); } public function Copy():b2FilterData{ var _local1:b2FilterData; _local1 = new b2FilterData(); _local1.categoryBits = categoryBits; _local1.maskBits = maskBits; _local1.groupIndex = groupIndex; return (_local1); } } }//package Box2D.Collision.Shapes
Section 25
//b2MassData (Box2D.Collision.Shapes.b2MassData) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; public class b2MassData { public var mass:Number;// = 0 public var center:b2Vec2; public var I:Number;// = 0 public function b2MassData(){ mass = 0; center = new b2Vec2(0, 0); I = 0; super(); } } }//package Box2D.Collision.Shapes
Section 26
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PolygonDef extends b2ShapeDef { public var vertexCount:int; public var vertices:Array; private static var s_mat:b2Mat22 = new b2Mat22(); public function b2PolygonDef(){ var _local1:int; vertices = new Array(b2Settings.b2_maxPolygonVertices); super(); type = b2Shape.e_polygonShape; vertexCount = 0; _local1 = 0; while (_local1 < b2Settings.b2_maxPolygonVertices) { vertices[_local1] = new b2Vec2(); _local1++; }; } public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{ var _local5:b2Vec2; var _local6:b2Mat22; var _local7:int; vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); if (_arg3){ _local5 = _arg3; _local6 = s_mat; _local6.Set(_arg4); _local7 = 0; while (_local7 < vertexCount) { _arg3 = vertices[_local7]; _arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y))); _arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y))); _arg3.x = _arg1; _local7++; }; }; } public function SetAsBox(_arg1:Number, _arg2:Number):void{ vertexCount = 4; vertices[0].Set(-(_arg1), -(_arg2)); vertices[1].Set(_arg1, -(_arg2)); vertices[2].Set(_arg1, _arg2); vertices[3].Set(-(_arg1), _arg2); } } }//package Box2D.Collision.Shapes
Section 27
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolygonShape extends b2Shape { public var m_vertices:Array; public var m_normals:Array; private var s_supportVec:b2Vec2; public var m_obb:b2OBB; public var m_coreVertices:Array; public var m_centroid:b2Vec2; public var m_vertexCount:int; private static var s_computeMat:b2Mat22 = new b2Mat22(); private static var s_sweptAABB1:b2AABB = new b2AABB(); private static var s_sweptAABB2:b2AABB = new b2AABB(); public function b2PolygonShape(_arg1:b2ShapeDef){ var _local2:b2PolygonDef; var _local3:int; var _local4:int; var _local5:int; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; s_supportVec = new b2Vec2(); m_obb = new b2OBB(); m_vertices = new Array(b2Settings.b2_maxPolygonVertices); m_normals = new Array(b2Settings.b2_maxPolygonVertices); m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices); super(_arg1); m_type = e_polygonShape; _local2 = (_arg1 as b2PolygonDef); m_vertexCount = _local2.vertexCount; _local4 = _local3; _local5 = _local3; _local3 = 0; while (_local3 < m_vertexCount) { m_vertices[_local3] = _local2.vertices[_local3].Copy(); _local3++; }; _local3 = 0; while (_local3 < m_vertexCount) { _local4 = _local3; _local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0; _local6 = (m_vertices[_local5].x - m_vertices[_local4].x); _local7 = (m_vertices[_local5].y - m_vertices[_local4].y); _local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7))); m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8)); _local3++; }; m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount); ComputeOBB(m_obb, m_vertices, m_vertexCount); _local3 = 0; while (_local3 < m_vertexCount) { _local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1); _local5 = _local3; _local9 = m_normals[_local4].x; _local10 = m_normals[_local4].y; _local11 = m_normals[_local5].x; _local12 = m_normals[_local5].y; _local13 = (m_vertices[_local3].x - m_centroid.x); _local14 = (m_vertices[_local3].y - m_centroid.y); _local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop); _local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop); _local17 = (1 / ((_local9 * _local12) - (_local10 * _local11))); m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y)); _local3++; }; } override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ var _local3:b2Vec2; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:Number; _local4 = _arg1.R; _local5 = (_arg2.x - _arg1.position.x); _local6 = (_arg2.y - _arg1.position.y); _local7 = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y)); _local8 = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y)); _local9 = 0; while (_local9 < m_vertexCount) { _local3 = m_vertices[_local9]; _local5 = (_local7 - _local3.x); _local6 = (_local8 - _local3.y); _local3 = m_normals[_local9]; _local10 = ((_local3.x * _local5) + (_local3.y * _local6)); if (_local10 > 0){ return (false); }; _local9++; }; return (true); } public function GetCoreVertices():Array{ return (m_coreVertices); } public function GetCentroid():b2Vec2{ return (m_centroid); } override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:Number; var _local21:Number; _local6 = 0; _local7 = _arg5; _local8 = (_arg4.p1.x - _arg1.position.x); _local9 = (_arg4.p1.y - _arg1.position.y); _local10 = _arg1.R; _local12 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local13 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local8 = (_arg4.p2.x - _arg1.position.x); _local9 = (_arg4.p2.y - _arg1.position.y); _local10 = _arg1.R; _local14 = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y)); _local15 = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y)); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local18 = -1; _local19 = 0; while (_local19 < m_vertexCount) { _local11 = m_vertices[_local19]; _local8 = (_local11.x - _local12); _local9 = (_local11.y - _local13); _local11 = m_normals[_local19]; _local20 = ((_local11.x * _local8) + (_local11.y * _local9)); _local21 = ((_local11.x * _local16) + (_local11.y * _local17)); if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){ _local6 = (_local20 / _local21); _local18 = _local19; } else { if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){ _local7 = (_local20 / _local21); }; }; if (_local7 < _local6){ return (false); }; _local19++; }; if (_local18 >= 0){ _arg2[0] = _local6; _local10 = _arg1.R; _local11 = m_normals[_local18]; _arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); return (true); }; return (false); } override public function ComputeMass(_arg1:b2MassData):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local2 = 0; _local3 = 0; _local4 = 0; _local5 = 0; _local6 = 0; _local7 = 0; _local8 = (1 / 3); _local9 = 0; while (_local9 < m_vertexCount) { _local10 = m_vertices[_local9]; _local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0]; _local12 = (_local10.x - _local6); _local13 = (_local10.y - _local7); _local14 = (_local11.x - _local6); _local15 = (_local11.y - _local7); _local16 = ((_local12 * _local15) - (_local13 * _local14)); _local17 = (0.5 * _local16); _local4 = (_local4 + _local17); _local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x))); _local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y))); _local18 = _local6; _local19 = _local7; _local20 = _local12; _local21 = _local13; _local22 = _local14; _local23 = _local15; _local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18)); _local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19)); _local5 = (_local5 + (_local16 * (_local24 + _local25))); _local9++; }; _arg1.mass = (m_density * _local4); _local2 = (_local2 * (1 / _local4)); _local3 = (_local3 * (1 / _local4)); _arg1.center.Set(_local2, _local3); _arg1.I = (m_density * _local5); } public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:b2Vec2; var _local5:b2Mat22; var _local6:Number; var _local7:Number; var _local8:int; var _local9:Number; var _local10:int; var _local11:Number; _local5 = _arg1.R; _local6 = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y)); _local7 = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y)); _local8 = 0; _local4 = m_coreVertices[0]; _local9 = ((_local4.x * _local6) + (_local4.y * _local7)); _local10 = 1; while (_local10 < m_vertexCount) { _local4 = m_coreVertices[_local10]; _local11 = ((_local4.x * _local6) + (_local4.y * _local7)); if (_local11 > _local9){ _local8 = _local10; _local9 = _local11; }; _local10++; }; _local5 = _arg1.R; _local4 = m_coreVertices[_local8]; s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y))); s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y))); return (s_supportVec); } public function GetVertexCount():int{ return (m_vertexCount); } override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ var _local4:b2AABB; var _local5:b2AABB; _local4 = s_sweptAABB1; _local5 = s_sweptAABB2; ComputeAABB(_local4, _arg2); ComputeAABB(_local5, _arg3); _arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y); _arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y); } public function GetVertices():Array{ return (m_vertices); } public function GetNormals():Array{ return (m_normals); } public function GetOBB():b2OBB{ return (m_obb); } public function GetFirstVertex(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_coreVertices[0])); } public function Centroid(_arg1:b2XForm):b2Vec2{ return (b2Math.b2MulX(_arg1, m_centroid)); } override public function UpdateSweepRadius(_arg1:b2Vec2):void{ var _local2:b2Vec2; var _local3:int; var _local4:Number; var _local5:Number; m_sweepRadius = 0; _local3 = 0; while (_local3 < m_vertexCount) { _local2 = m_coreVertices[_local3]; _local4 = (_local2.x - _arg1.x); _local5 = (_local2.y - _arg1.y); _local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5))); if (_local4 > m_sweepRadius){ m_sweepRadius = _local4; }; _local3++; }; } override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Mat22; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = s_computeMat; _local3 = _arg2.R; _local4 = m_obb.R.col1; _local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local4 = m_obb.R.col2; _local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); _local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); _local5.Abs(); _local6 = _local5; _local4 = m_obb.extents; _local7 = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y)); _local8 = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y)); _local3 = _arg2.R; _local4 = m_obb.center; _local9 = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y))); _local10 = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y))); _arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8)); _arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8)); } public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{ var _local3:b2Vec2; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local3 = new b2Vec2(); _local4 = 0; _local5 = 0; _local6 = 0; _local7 = (1 / 3); _local8 = 0; while (_local8 < _arg2) { _local9 = _arg1[_local8]; _local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0]; _local11 = (_local9.x - _local5); _local12 = (_local9.y - _local6); _local13 = (_local10.x - _local5); _local14 = (_local10.y - _local6); _local15 = ((_local11 * _local14) - (_local12 * _local13)); _local16 = (0.5 * _local15); _local4 = (_local4 + _local16); _local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x))); _local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y))); _local8++; }; _local3.x = (_local3.x * (1 / _local4)); _local3.y = (_local3.y * (1 / _local4)); return (_local3); } public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{ var _local4:int; var _local5:Array; var _local6:Number; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:b2Mat22; _local5 = new Array((b2Settings.b2_maxPolygonVertices + 1)); _local4 = 0; while (_local4 < _arg3) { _local5[_local4] = _arg2[_local4]; _local4++; }; _local5[_arg3] = _local5[0]; _local6 = Number.MAX_VALUE; _local4 = 1; while (_local4 <= _arg3) { _local7 = _local5[int((_local4 - 1))]; _local8 = (_local5[_local4].x - _local7.x); _local9 = (_local5[_local4].y - _local7.y); _local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local8 = (_local8 / _local10); _local9 = (_local9 / _local10); _local11 = -(_local9); _local12 = _local8; _local13 = Number.MAX_VALUE; _local14 = Number.MAX_VALUE; _local15 = -(Number.MAX_VALUE); _local16 = -(Number.MAX_VALUE); _local17 = 0; while (_local17 < _arg3) { _local19 = (_local5[_local17].x - _local7.x); _local20 = (_local5[_local17].y - _local7.y); _local21 = ((_local8 * _local19) + (_local9 * _local20)); _local22 = ((_local11 * _local19) + (_local12 * _local20)); if (_local21 < _local13){ _local13 = _local21; }; if (_local22 < _local14){ _local14 = _local22; }; if (_local21 > _local15){ _local15 = _local21; }; if (_local22 > _local16){ _local16 = _local22; }; _local17++; }; _local18 = ((_local15 - _local13) * (_local16 - _local14)); if (_local18 < (0.95 * _local6)){ _local6 = _local18; _arg1.R.col1.x = _local8; _arg1.R.col1.y = _local9; _arg1.R.col2.x = _local11; _arg1.R.col2.y = _local12; _local23 = (0.5 * (_local13 + _local15)); _local24 = (0.5 * (_local14 + _local16)); _local25 = _arg1.R; _arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24))); _arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24))); _arg1.extents.x = (0.5 * (_local15 - _local13)); _arg1.extents.y = (0.5 * (_local16 - _local14)); }; _local4++; }; } } }//package Box2D.Collision.Shapes
Section 28
//b2Shape (Box2D.Collision.Shapes.b2Shape) package Box2D.Collision.Shapes { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2Shape { public var m_type:int; public var m_sweepRadius:Number; public var m_density:Number; public var m_filter:b2FilterData; public var id:String;// = "unidentified" public var m_next:b2Shape; public var m_restitution:Number; public var m_userData; public var m_isSensor:Boolean; public var m_proxyId:uint; public var m_friction:Number; 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){ id = "unidentified"; super(); m_userData = _arg1.userData; m_friction = _arg1.friction; m_restitution = _arg1.restitution; m_density = _arg1.density; m_body = null; m_sweepRadius = 0; m_next = null; m_proxyId = b2Pair.b2_nullProxy; m_filter = _arg1.filter.Copy(); m_isSensor = _arg1.isSensor; } public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{ return (false); } public function GetSweepRadius():Number{ return (m_sweepRadius); } public function GetNext():b2Shape{ return (m_next); } public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{ } public function GetType():int{ return (m_type); } public function GetRestitution():Number{ return (m_restitution); } public function GetFriction():Number{ return (m_friction); } public function GetFilterData():b2FilterData{ return (m_filter.Copy()); } public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{ return (false); } public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; if (m_proxyId == b2Pair.b2_nullProxy){ return; }; _arg1.DestroyProxy(m_proxyId); _local3 = s_resetAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetFilterData(_arg1:b2FilterData):void{ m_filter = _arg1.Copy(); } public function GetUserData(){ return (m_userData); } public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{ var _local4:b2AABB; if (m_proxyId == b2Pair.b2_nullProxy){ return (false); }; _local4 = s_syncAABB; ComputeSweptAABB(_local4, _arg2, _arg3); if (_arg1.InRange(_local4)){ _arg1.MoveProxy(m_proxyId, _local4); return (true); }; return (false); } public function ComputeMass(_arg1:b2MassData):void{ } public function IsSensor():Boolean{ return (m_isSensor); } public function DestroyProxy(_arg1:b2BroadPhase):void{ if (m_proxyId != b2Pair.b2_nullProxy){ _arg1.DestroyProxy(m_proxyId); m_proxyId = b2Pair.b2_nullProxy; }; } public function UpdateSweepRadius(_arg1:b2Vec2):void{ } public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{ } public function GetBody():b2Body{ return (m_body); } public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{ var _local3:b2AABB; var _local4:Boolean; _local3 = s_proxyAABB; ComputeAABB(_local3, _arg2); _local4 = _arg1.InRange(_local3); if (_local4){ m_proxyId = _arg1.CreateProxy(_local3, this); } else { m_proxyId = b2Pair.b2_nullProxy; }; } public function SetUserData(_arg1):void{ m_userData = _arg1; } public static function Destroy(_arg1:b2Shape, _arg2):void{ } public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{ switch (_arg1.type){ case e_circleShape: return (new b2CircleShape(_arg1)); case e_polygonShape: return (new b2PolygonShape(_arg1)); default: return (null); }; } } }//package Box2D.Collision.Shapes
Section 29
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef) package Box2D.Collision.Shapes { public class b2ShapeDef { public var id:String;// = "unidentified" public var isSensor:Boolean;// = false public var density:Number;// = 0 public var type:int; public var restitution:Number;// = 0 public var userData;// = null public var filter:b2FilterData; public var friction:Number;// = 0.2 public function b2ShapeDef(){ id = "unidentified"; type = b2Shape.e_unknownShape; userData = null; friction = 0.2; restitution = 0; density = 0; isSensor = false; filter = new b2FilterData(); super(); } } }//package Box2D.Collision.Shapes
Section 30
//b2AABB (Box2D.Collision.b2AABB) package Box2D.Collision { import Box2D.Common.Math.*; public class b2AABB { public var upperBound:b2Vec2; public var lowerBound:b2Vec2; public function b2AABB(){ lowerBound = new b2Vec2(); upperBound = new b2Vec2(); super(); } public function IsValid():Boolean{ var _local1:Number; var _local2:Number; var _local3:Boolean; _local1 = (upperBound.x - lowerBound.x); _local2 = (upperBound.y - lowerBound.y); _local3 = (((_local1 >= 0)) && ((_local2 >= 0))); _local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid())); return (_local3); } } }//package Box2D.Collision
Section 31
//b2Bound (Box2D.Collision.b2Bound) package Box2D.Collision { public class b2Bound { public var proxyId:uint; public var stabbingCount:uint; public var value:uint; public function Swap(_arg1:b2Bound):void{ var _local2:uint; var _local3:uint; var _local4:uint; _local2 = value; _local3 = proxyId; _local4 = stabbingCount; value = _arg1.value; proxyId = _arg1.proxyId; stabbingCount = _arg1.stabbingCount; _arg1.value = _local2; _arg1.proxyId = _local3; _arg1.stabbingCount = _local4; } public function IsLower():Boolean{ return (((value & 1) == 0)); } public function IsUpper():Boolean{ return (((value & 1) == 1)); } } }//package Box2D.Collision
Section 32
//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 33
//b2BroadPhase (Box2D.Collision.b2BroadPhase) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2BroadPhase { public var m_quantizationFactor:b2Vec2; public var m_worldAABB:b2AABB; public var m_bounds:Array; public var m_freeProxy:uint; public var m_proxyCount:int; public var m_proxyPool:Array; public var m_queryResultCount:int; public var m_pairManager:b2PairManager; public var m_timeStamp:uint; public var m_queryResults:Array; public static const b2_nullEdge:uint = b2Settings.USHRT_MAX; public static const b2_invalid:uint = b2Settings.USHRT_MAX; public static var s_validate:Boolean = false; public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){ var _local3:int; var _local4:Number; var _local5:Number; var _local6:b2Proxy; var _local7:int; m_pairManager = new b2PairManager(); m_proxyPool = new Array(b2Settings.b2_maxPairs); m_bounds = new Array((2 * b2Settings.b2_maxProxies)); m_queryResults = new Array(b2Settings.b2_maxProxies); m_quantizationFactor = new b2Vec2(); super(); m_pairManager.Initialize(this, _arg2); m_worldAABB = _arg1; m_proxyCount = 0; _local3 = 0; while (_local3 < b2Settings.b2_maxProxies) { m_queryResults[_local3] = 0; _local3++; }; m_bounds = new Array(2); _local3 = 0; while (_local3 < 2) { m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies)); _local7 = 0; while (_local7 < (2 * b2Settings.b2_maxProxies)) { m_bounds[_local3][_local7] = new b2Bound(); _local7++; }; _local3++; }; _local4 = (_arg1.upperBound.x - _arg1.lowerBound.x); _local5 = (_arg1.upperBound.y - _arg1.lowerBound.y); m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4); m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5); _local3 = 0; while (_local3 < (b2Settings.b2_maxProxies - 1)) { _local6 = new b2Proxy(); m_proxyPool[_local3] = _local6; _local6.SetNext((_local3 + 1)); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; _local3++; }; _local6 = new b2Proxy(); m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6; _local6.SetNext(b2Pair.b2_nullProxy); _local6.timeStamp = 0; _local6.overlapCount = b2_invalid; _local6.userData = null; m_freeProxy = 0; m_timeStamp = 1; m_queryResultCount = 0; } public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{ var _local4:Array; var _local5:Array; var _local6:uint; var _local7:uint; var _local8:Array; var _local9:Array; var _local10:int; var _local11:int; var _local12:b2Proxy; _local4 = new Array(); _local5 = new Array(); ComputeBounds(_local4, _local5, _arg1); _local8 = [_local6]; _local9 = [_local7]; Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0); Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1); _local10 = 0; _local11 = 0; while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) { _local12 = m_proxyPool[m_queryResults[_local11]]; _arg2[_local11] = _local12.userData; _local11++; _local10++; }; m_queryResultCount = 0; IncrementTimeStamp(); return (_local10); } public function Commit():void{ m_pairManager.Commit(); } public function GetProxy(_arg1:int):b2Proxy{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){ return (null); }; return (_local2); } private function IncrementTimeStamp():void{ var _local1:uint; if (m_timeStamp == b2Settings.USHRT_MAX){ _local1 = 0; while (_local1 < b2Settings.b2_maxProxies) { (m_proxyPool[_local1] as b2Proxy).timeStamp = 0; _local1++; }; m_timeStamp = 1; } else { m_timeStamp++; }; } private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{ var _local8:uint; var _local9:uint; var _local10:b2Bound; var _local11:uint; var _local12:int; var _local13:int; var _local14:b2Proxy; _local8 = BinarySearch(_arg5, _arg6, _arg3); _local9 = BinarySearch(_arg5, _arg6, _arg4); _local11 = _local8; while (_local11 < _local9) { _local10 = _arg5[_local11]; if (_local10.IsLower()){ IncrementOverlapCount(_local10.proxyId); }; _local11++; }; if (_local8 > 0){ _local12 = (_local8 - 1); _local10 = _arg5[_local12]; _local13 = _local10.stabbingCount; while (_local13) { _local10 = _arg5[_local12]; if (_local10.IsLower()){ _local14 = m_proxyPool[_local10.proxyId]; if (_local8 <= _local14.upperBounds[_arg7]){ IncrementOverlapCount(_local10.proxyId); _local13--; }; }; _local12--; }; }; _arg1[0] = _local8; _arg2[0] = _local9; } private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; var _local6:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg1.lowerBounds[_local3]]; _local6 = _local4[_arg2.upperBounds[_local3]]; if (_local5.value > _local6.value){ return (false); }; _local5 = _local4[_arg1.upperBounds[_local3]]; _local6 = _local4[_arg2.lowerBounds[_local3]]; if (_local5.value < _local6.value){ return (false); }; _local3++; }; return (true); } private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = _arg3.lowerBound.x; _local5 = _arg3.lowerBound.y; _local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x); _local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y); _local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x); _local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y); _local6 = _arg3.upperBound.x; _local7 = _arg3.upperBound.y; _local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x); _local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y); _local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x); _local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y); _arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1)); _arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1); _arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1)); _arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1); } public function CreateProxy(_arg1:b2AABB, _arg2):uint{ var _local3:uint; var _local4:b2Proxy; var _local5:uint; var _local6:uint; var _local7:Array; var _local8:Array; var _local9:int; var _local10:int; var _local11:Array; var _local12:uint; var _local13:uint; var _local14:Array; var _local15:Array; var _local16:Array; var _local17:int; var _local18:int; var _local19:b2Bound; var _local20:b2Bound; var _local21:b2Bound; var _local22:int; var _local23:b2Proxy; _local5 = m_freeProxy; _local4 = m_proxyPool[_local5]; m_freeProxy = _local4.GetNext(); _local4.overlapCount = 0; _local4.userData = _arg2; _local6 = (2 * m_proxyCount); _local7 = new Array(); _local8 = new Array(); ComputeBounds(_local7, _local8, _arg1); _local9 = 0; while (_local9 < 2) { _local11 = m_bounds[_local9]; _local14 = [_local12]; _local15 = [_local13]; Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9); _local12 = _local14[0]; _local13 = _local15[0]; _local16 = new Array(); _local18 = (_local6 - _local13); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local13 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local13 + 2); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local16 = new Array(); _local18 = (_local13 - _local12); _local17 = 0; while (_local17 < _local18) { _local16[_local17] = new b2Bound(); _local19 = _local16[_local17]; _local20 = _local11[int((_local12 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local18 = _local16.length; _local22 = (_local12 + 1); _local17 = 0; while (_local17 < _local18) { _local20 = _local16[_local17]; _local19 = _local11[int((_local22 + _local17))]; _local19.value = _local20.value; _local19.proxyId = _local20.proxyId; _local19.stabbingCount = _local20.stabbingCount; _local17++; }; _local13++; _local19 = _local11[_local12]; _local20 = _local11[_local13]; _local19.value = _local7[_local9]; _local19.proxyId = _local5; _local20.value = _local8[_local9]; _local20.proxyId = _local5; _local21 = _local11[int((_local12 - 1))]; _local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount; _local21 = _local11[int((_local13 - 1))]; _local20.stabbingCount = _local21.stabbingCount; _local3 = _local12; while (_local3 < _local13) { _local21 = _local11[_local3]; _local21.stabbingCount++; _local3++; }; _local3 = _local12; while (_local3 < (_local6 + 2)) { _local19 = _local11[_local3]; _local23 = m_proxyPool[_local19.proxyId]; if (_local19.IsLower()){ _local23.lowerBounds[_local9] = _local3; } else { _local23.upperBounds[_local9] = _local3; }; _local3++; }; _local9++; }; m_proxyCount++; _local10 = 0; while (_local10 < m_queryResultCount) { m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]); _local10++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); return (_local5); } public function DestroyProxy(_arg1:uint):void{ var _local2:b2Bound; var _local3:b2Bound; var _local4:b2Proxy; var _local5:int; var _local6:int; var _local7:int; var _local8:Array; var _local9:uint; var _local10:uint; var _local11:uint; var _local12:uint; var _local13:Array; var _local14:int; var _local15:int; var _local16:int; var _local17:uint; var _local18:int; var _local19:b2Proxy; _local4 = m_proxyPool[_arg1]; _local5 = (2 * m_proxyCount); _local6 = 0; while (_local6 < 2) { _local8 = m_bounds[_local6]; _local9 = _local4.lowerBounds[_local6]; _local10 = _local4.upperBounds[_local6]; _local2 = _local8[_local9]; _local11 = _local2.value; _local3 = _local8[_local10]; _local12 = _local3.value; _local13 = new Array(); _local15 = ((_local10 - _local9) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local9 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = _local9; _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local13 = new Array(); _local15 = ((_local5 - _local10) - 1); _local14 = 0; while (_local14 < _local15) { _local13[_local14] = new b2Bound(); _local2 = _local13[_local14]; _local3 = _local8[int(((_local10 + 1) + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = _local13.length; _local16 = (_local10 - 1); _local14 = 0; while (_local14 < _local15) { _local3 = _local13[_local14]; _local2 = _local8[int((_local16 + _local14))]; _local2.value = _local3.value; _local2.proxyId = _local3.proxyId; _local2.stabbingCount = _local3.stabbingCount; _local14++; }; _local15 = (_local5 - 2); _local17 = _local9; while (_local17 < _local15) { _local2 = _local8[_local17]; _local19 = m_proxyPool[_local2.proxyId]; if (_local2.IsLower()){ _local19.lowerBounds[_local6] = _local17; } else { _local19.upperBounds[_local6] = _local17; }; _local17++; }; _local15 = (_local10 - 1); _local18 = _local9; while (_local18 < _local15) { _local2 = _local8[_local18]; _local2.stabbingCount--; _local18++; }; Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6); _local6++; }; _local7 = 0; while (_local7 < m_queryResultCount) { m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]); _local7++; }; m_pairManager.Commit(); m_queryResultCount = 0; IncrementTimeStamp(); _local4.userData = null; _local4.overlapCount = b2_invalid; _local4.lowerBounds[0] = b2_invalid; _local4.lowerBounds[1] = b2_invalid; _local4.upperBounds[0] = b2_invalid; _local4.upperBounds[1] = b2_invalid; _local4.SetNext(m_freeProxy); m_freeProxy = _arg1; m_proxyCount--; } public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{ var _local3:int; var _local4:Array; var _local5:b2Bound; _local3 = 0; while (_local3 < 2) { _local4 = m_bounds[_local3]; _local5 = _local4[_arg2.upperBounds[_local3]]; if (_arg1.lowerValues[_local3] > _local5.value){ return (false); }; _local5 = _local4[_arg2.lowerBounds[_local3]]; if (_arg1.upperValues[_local3] < _local5.value){ return (false); }; _local3++; }; return (true); } public function Validate():void{ var _local1:b2Pair; var _local2:b2Proxy; var _local3:b2Proxy; var _local4:Boolean; var _local5:int; var _local6:b2Bound; var _local7:uint; var _local8:uint; var _local9:uint; var _local10:b2Bound; _local5 = 0; while (_local5 < 2) { _local6 = m_bounds[_local5]; _local7 = (2 * m_proxyCount); _local8 = 0; _local9 = 0; while (_local9 < _local7) { _local10 = _local6[_local9]; if (_local10.IsLower() == true){ _local8++; } else { _local8--; }; _local9++; }; _local5++; }; } private function IncrementOverlapCount(_arg1:uint):void{ var _local2:b2Proxy; _local2 = m_proxyPool[_arg1]; if (_local2.timeStamp < m_timeStamp){ _local2.timeStamp = m_timeStamp; _local2.overlapCount = 1; } else { _local2.overlapCount = 2; m_queryResults[m_queryResultCount] = _arg1; m_queryResultCount++; }; } public function InRange(_arg1:b2AABB):Boolean{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local2 = _arg1.lowerBound.x; _local3 = _arg1.lowerBound.y; _local2 = (_local2 - m_worldAABB.upperBound.x); _local3 = (_local3 - m_worldAABB.upperBound.y); _local4 = m_worldAABB.lowerBound.x; _local5 = m_worldAABB.lowerBound.y; _local4 = (_local4 - _arg1.upperBound.x); _local5 = (_local5 - _arg1.upperBound.y); _local2 = b2Math.b2Max(_local2, _local4); _local3 = b2Math.b2Max(_local3, _local5); return ((b2Math.b2Max(_local2, _local3) < 0)); } public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{ var _local3:Array; var _local4:int; var _local5:uint; var _local6:uint; var _local7:b2Bound; var _local8:b2Bound; var _local9:b2Bound; var _local10:uint; var _local11:b2Proxy; var _local12:uint; var _local13:b2Proxy; var _local14:b2BoundValues; var _local15:b2BoundValues; var _local16:Array; var _local17:uint; var _local18:uint; var _local19:uint; var _local20:uint; var _local21:int; var _local22:int; var _local23:uint; var _local24:b2Proxy; if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){ return; }; if (_arg2.IsValid() == false){ return; }; _local12 = (2 * m_proxyCount); _local13 = m_proxyPool[_arg1]; _local14 = new b2BoundValues(); ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2); _local15 = new b2BoundValues(); _local5 = 0; while (_local5 < 2) { _local7 = m_bounds[_local5][_local13.lowerBounds[_local5]]; _local15.lowerValues[_local5] = _local7.value; _local7 = m_bounds[_local5][_local13.upperBounds[_local5]]; _local15.upperValues[_local5] = _local7.value; _local5++; }; _local5 = 0; while (_local5 < 2) { _local16 = m_bounds[_local5]; _local17 = _local13.lowerBounds[_local5]; _local18 = _local13.upperBounds[_local5]; _local19 = _local14.lowerValues[_local5]; _local20 = _local14.upperValues[_local5]; _local7 = _local16[_local17]; _local21 = (_local19 - _local7.value); _local7.value = _local19; _local7 = _local16[_local18]; _local22 = (_local20 - _local7.value); _local7.value = _local20; if (_local21 < 0){ _local6 = _local17; while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local8.proxyId]; _local8.stabbingCount++; if (_local8.IsUpper() == true){ if (TestOverlap(_local14, _local24)){ m_pairManager.AddBufferedPair(_arg1, _local23); }; _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; if (_local22 > 0){ _local6 = _local18; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount++; if (_local9.IsLower() == true){ if (TestOverlap(_local14, _local11)){ m_pairManager.AddBufferedPair(_arg1, _local10); }; _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; } else { _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local21 > 0){ _local6 = _local17; while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) { _local7 = _local16[_local6]; _local9 = _local16[int((_local6 + 1))]; _local10 = _local9.proxyId; _local11 = m_proxyPool[_local10]; _local9.stabbingCount--; if (_local9.IsUpper()){ if (TestOverlap(_local15, _local11)){ m_pairManager.RemoveBufferedPair(_arg1, _local10); }; _local3 = _local11.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local11.lowerBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.Swap(_local9); _local6++; }; }; if (_local22 < 0){ _local6 = _local18; while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) { _local7 = _local16[_local6]; _local8 = _local16[int((_local6 - 1))]; _local23 = _local8.proxyId; _local24 = m_proxyPool[_local23]; _local8.stabbingCount--; if (_local8.IsLower() == true){ if (TestOverlap(_local15, _local24)){ m_pairManager.RemoveBufferedPair(_arg1, _local23); }; _local3 = _local24.lowerBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount--; } else { _local3 = _local24.upperBounds; _local4 = _local3[_local5]; _local4++; _local3[_local5] = _local4; _local7.stabbingCount++; }; _local3 = _local13.upperBounds; _local4 = _local3[_local5]; _local4--; _local3[_local5] = _local4; _local7.Swap(_local8); _local6--; }; }; _local5++; }; } public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{ var _local4:int; var _local5:int; var _local6:int; var _local7:b2Bound; _local4 = 0; _local5 = (_arg2 - 1); while (_local4 <= _local5) { _local6 = ((_local4 + _local5) / 2); _local7 = _arg1[_local6]; if (_local7.value > _arg3){ _local5 = (_local6 - 1); } else { if (_local7.value < _arg3){ _local4 = (_local6 + 1); } else { return (uint(_local6)); }; }; }; return (uint(_local4)); } } }//package Box2D.Collision
Section 34
//b2BufferedPair (Box2D.Collision.b2BufferedPair) package Box2D.Collision { public class b2BufferedPair { public var proxyId1:uint; public var proxyId2:uint; } }//package Box2D.Collision
Section 35
//b2Collision (Box2D.Collision.b2Collision) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Collision { public static const b2_nullFeature:uint = 0xFF; private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2(); public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:Array; var _local9:int; var _local10:Array; var _local11:b2Mat22; var _local12:b2Vec2; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _local6 = _arg1.m_vertexCount; _local7 = _arg1.m_vertices; _local8 = _arg1.m_normals; _local9 = _arg4.m_vertexCount; _local10 = _arg4.m_vertices; _local11 = _arg2.R; _local12 = _local8[_arg3]; _local13 = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)); _local14 = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)); _local11 = _arg5.R; _local15 = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14)); _local16 = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14)); _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local12 = _local10[_local19]; _local25 = ((_local12.x * _local15) + (_local12.y * _local16)); if (_local25 < _local18){ _local18 = _local25; _local17 = _local19; }; _local19++; }; _local12 = _local7[_arg3]; _local11 = _arg2.R; _local20 = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local21 = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local12 = _local10[_local17]; _local11 = _arg5.R; _local22 = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y))); _local23 = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y))); _local22 = (_local22 - _local20); _local23 = (_local23 - _local21); _local24 = ((_local22 * _local13) + (_local23 * _local14)); return (_local24); } public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local3 = _arg2.lowerBound; _local4 = _arg1.upperBound; _local5 = (_local3.x - _local4.x); _local6 = (_local3.y - _local4.y); _local3 = _arg1.lowerBound; _local4 = _arg2.upperBound; _local7 = (_local3.x - _local4.x); _local8 = (_local3.y - _local4.y); if ((((_local5 > 0)) || ((_local6 > 0)))){ return (false); }; if ((((_local7 > 0)) || ((_local8 > 0)))){ return (false); }; return (true); } public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{ var _local7:int; var _local8:Array; var _local9:int; var _local10:Array; var _local11:Array; var _local12:b2Mat22; var _local13:b2Vec2; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:int; var _local18:Number; var _local19:int; var _local20:ClipVertex; var _local21:int; var _local22:int; var _local23:Number; _local7 = _arg2.m_vertexCount; _local8 = _arg2.m_normals; _local9 = _arg5.m_vertexCount; _local10 = _arg5.m_vertices; _local11 = _arg5.m_normals; _local12 = _arg3.R; _local13 = _local8[_arg4]; _local14 = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)); _local15 = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)); _local12 = _arg6.R; _local16 = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15)); _local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15)); _local14 = _local16; _local17 = 0; _local18 = Number.MAX_VALUE; _local19 = 0; while (_local19 < _local9) { _local13 = _local11[_local19]; _local23 = ((_local14 * _local13.x) + (_local15 * _local13.y)); if (_local23 < _local18){ _local18 = _local23; _local17 = _local19; }; _local19++; }; _local21 = _local17; _local22 = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0; _local20 = _arg1[0]; _local13 = _local10[_local21]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local21; _local20.id.features.incidentVertex = 0; _local20 = _arg1[1]; _local13 = _local10[_local22]; _local12 = _arg6.R; _local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y))); _local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y))); _local20.id.features.referenceEdge = _arg4; _local20.id.features.incidentEdge = _local22; _local20.id.features.incidentVertex = 1; } public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{ var _local6:ClipVertex; var _local7:int; var _local8:Array; var _local9:Number; var _local10:int; var _local11:Array; var _local12:Number; var _local13:b2PolygonShape; var _local14:b2PolygonShape; var _local15:b2XForm; var _local16:b2XForm; var _local17:int; var _local18:uint; var _local19:Number; var _local20:Number; var _local21:Array; var _local22:int; var _local23:Array; var _local24:b2Vec2; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:b2Vec2; var _local28:b2Vec2; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Array; var _local33:Array; var _local34:int; var _local35:int; var _local36:int; var _local37:b2Vec2; var _local38:Number; var _local39:b2ManifoldPoint; _arg1.pointCount = 0; _local7 = 0; _local8 = [_local7]; _local9 = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5); _local7 = _local8[0]; if (_local9 > 0){ return; }; _local10 = 0; _local11 = [_local10]; _local12 = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3); _local10 = _local11[0]; if (_local12 > 0){ return; }; _local15 = new b2XForm(); _local16 = new b2XForm(); _local19 = 0.98; _local20 = 0.001; if (_local12 > ((_local19 * _local9) + _local20)){ _local13 = _arg4; _local14 = _arg2; _local15.Set(_arg5); _local16.Set(_arg3); _local17 = _local10; _local18 = 1; } else { _local13 = _arg2; _local14 = _arg4; _local15.Set(_arg3); _local16.Set(_arg5); _local17 = _local7; _local18 = 0; }; _local21 = [new ClipVertex(), new ClipVertex()]; FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16); _local22 = _local13.m_vertexCount; _local23 = _local13.m_vertices; _local24 = _local23[_local17]; _local25 = _local24.Copy(); if ((_local17 + 1) < _local22){ _local24 = _local23[int((_local17 + 1))]; _local37 = _local24.Copy(); } else { _local24 = _local23[0]; _local37 = _local24.Copy(); }; _local26 = b2Math.SubtractVV(_local37, _local25); _local27 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25)); _local27.Normalize(); _local28 = b2Math.b2CrossVF(_local27, 1); _local25 = b2Math.b2MulX(_local15, _local25); _local37 = b2Math.b2MulX(_local15, _local37); _local29 = b2Math.b2Dot(_local28, _local25); _local30 = -(b2Math.b2Dot(_local27, _local25)); _local31 = b2Math.b2Dot(_local27, _local37); _local32 = [new ClipVertex(), new ClipVertex()]; _local33 = [new ClipVertex(), new ClipVertex()]; _local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30); if (_local34 < 2){ return; }; _local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31); if (_local34 < 2){ return; }; _arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy(); _local35 = 0; _local36 = 0; while (_local36 < b2Settings.b2_maxManifoldPoints) { _local6 = _local33[_local36]; _local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29); if (_local38 <= 0){ _local39 = _arg1.points[_local35]; _local39.separation = _local38; _local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v); _local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v); _local39.id.key = _local6.id._key; _local39.id.features.flip = _local18; _local35++; }; _local36++; }; _arg1.pointCount = _local35; } public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{ var _local6:int; var _local7:Array; var _local8:b2Vec2; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:int; var _local15:Number; var _local16:int; var _local17:Number; var _local18:int; var _local19:Number; var _local20:int; var _local21:Number; var _local22:int; var _local23:Number; var _local24:int; var _local25:Number; _local6 = _arg2.m_vertexCount; _local7 = _arg2.m_normals; _local9 = _arg5.R; _local8 = _arg4.m_centroid; _local10 = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))); _local11 = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))); _local9 = _arg3.R; _local8 = _arg2.m_centroid; _local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)))); _local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)))); _local12 = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y)); _local13 = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y)); _local14 = 0; _local15 = -(Number.MAX_VALUE); _local16 = 0; while (_local16 < _local6) { _local8 = _local7[_local16]; _local25 = ((_local8.x * _local12) + (_local8.y * _local13)); if (_local25 > _local15){ _local15 = _local25; _local14 = _local16; }; _local16++; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; _local18 = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1); _local19 = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5); if (_local19 > 0){ return (_local19); }; _local20 = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0; _local21 = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5); if (_local21 > 0){ return (_local21); }; if ((((_local19 > _local17)) && ((_local19 > _local21)))){ _local24 = -1; _local22 = _local18; _local23 = _local19; } else { if (_local21 > _local17){ _local24 = 1; _local22 = _local20; _local23 = _local21; } else { _arg1[0] = _local14; return (_local17); }; }; while (true) { if (_local24 == -1){ _local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1); } else { _local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0; }; _local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5); if (_local17 > 0){ return (_local17); }; if (_local17 > _local23){ _local22 = _local14; _local23 = _local17; } else { break; }; }; _arg1[0] = _local22; return (_local23); } public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{ var _local5:ClipVertex; var _local6:int; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:b2Vec2; var _local13:ClipVertex; _local6 = 0; _local5 = _arg2[0]; _local7 = _local5.v; _local5 = _arg2[1]; _local8 = _local5.v; _local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4); _local10 = (b2Math.b2Dot(_arg3, _local8) - _arg4); if (_local9 <= 0){ var _temp1 = _local6; _local6 = (_local6 + 1); var _local14 = _temp1; _arg1[_local14] = _arg2[0]; }; if (_local10 <= 0){ var _temp2 = _local6; _local6 = (_local6 + 1); _local14 = _temp2; _arg1[_local14] = _arg2[1]; }; if ((_local9 * _local10) < 0){ _local11 = (_local9 / (_local9 - _local10)); _local5 = _arg1[_local6]; _local12 = _local5.v; _local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x))); _local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y))); _local5 = _arg1[_local6]; if (_local9 > 0){ _local13 = _arg2[0]; _local5.id = _local13.id; } else { _local13 = _arg2[1]; _local5.id = _local13.id; }; _local6++; }; return (_local6); } public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2Mat22; var _local7:b2Vec2; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:b2ManifoldPoint; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; _arg1.pointCount = 0; _local6 = _arg3.R; _local7 = _arg2.m_localPosition; _local8 = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local9 = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local6 = _arg5.R; _local7 = _arg4.m_localPosition; _local10 = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y))); _local11 = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y))); _local12 = (_local10 - _local8); _local13 = (_local11 - _local9); _local14 = ((_local12 * _local12) + (_local13 * _local13)); _local15 = _arg2.m_radius; _local16 = _arg4.m_radius; _local17 = (_local15 + _local16); if (_local14 > (_local17 * _local17)){ return; }; if (_local14 < Number.MIN_VALUE){ _local18 = -(_local17); _arg1.normal.Set(0, 1); } else { _local24 = Math.sqrt(_local14); _local18 = (_local24 - _local17); _local25 = (1 / _local24); _arg1.normal.x = (_local25 * _local12); _arg1.normal.y = (_local25 * _local13); }; _arg1.pointCount = 1; _local19 = _arg1.points[0]; _local19.id.key = 0; _local19.separation = _local18; _local8 = (_local8 + (_local15 * _arg1.normal.x)); _local9 = (_local9 + (_local15 * _arg1.normal.y)); _local10 = (_local10 - (_local16 * _arg1.normal.x)); _local11 = (_local11 - (_local16 * _arg1.normal.y)); _local20 = (0.5 * (_local8 + _local10)); _local21 = (0.5 * (_local9 + _local11)); _local22 = (_local20 - _arg3.position.x); _local23 = (_local21 - _arg3.position.y); _local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y)); _local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y)); _local22 = (_local20 - _arg5.position.x); _local23 = (_local21 - _arg5.position.y); _local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y)); _local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y)); } public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{ var _local6:b2ManifoldPoint; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:b2Vec2; var _local12:b2Mat22; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:Number; var _local20:Number; var _local21:int; var _local22:Array; var _local23:Array; var _local24:int; var _local25:int; var _local26:int; var _local27:b2Vec2; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; _arg1.pointCount = 0; _local12 = _arg5.R; _local11 = _arg4.m_localPosition; _local13 = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y))); _local14 = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y))); _local7 = (_local13 - _arg3.position.x); _local8 = (_local14 - _arg3.position.y); _local12 = _arg3.R; _local15 = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local16 = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local18 = 0; _local19 = -(Number.MAX_VALUE); _local20 = _arg4.m_radius; _local21 = _arg2.m_vertexCount; _local22 = _arg2.m_vertices; _local23 = _arg2.m_normals; _local24 = 0; while (_local24 < _local21) { _local11 = _local22[_local24]; _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local11 = _local23[_local24]; _local34 = ((_local11.x * _local7) + (_local11.y * _local8)); if (_local34 > _local20){ return; }; if (_local34 > _local19){ _local19 = _local34; _local18 = _local24; }; _local24++; }; if (_local19 < Number.MIN_VALUE){ _arg1.pointCount = 1; _local11 = _local23[_local18]; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)); _arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)); _local6 = _arg1.points[0]; _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = b2_nullFeature; _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local19 - _local20); return; }; _local25 = _local18; _local26 = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0; _local11 = _local22[_local25]; _local27 = _local22[_local26]; _local28 = (_local27.x - _local11.x); _local29 = (_local27.y - _local11.y); _local30 = Math.sqrt(((_local28 * _local28) + (_local29 * _local29))); _local28 = (_local28 / _local30); _local29 = (_local29 / _local30); _local7 = (_local15 - _local11.x); _local8 = (_local16 - _local11.y); _local31 = ((_local7 * _local28) + (_local8 * _local29)); _local6 = _arg1.points[0]; if (_local31 <= 0){ _local32 = _local11.x; _local33 = _local11.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local25; } else { if (_local31 >= _local30){ _local32 = _local27.x; _local33 = _local27.y; _local6.id.features.incidentEdge = b2_nullFeature; _local6.id.features.incidentVertex = _local26; } else { _local32 = ((_local28 * _local31) + _local11.x); _local33 = ((_local29 * _local31) + _local11.y); _local6.id.features.incidentEdge = _local18; _local6.id.features.incidentVertex = 0; }; }; _local7 = (_local15 - _local32); _local8 = (_local16 - _local33); _local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8))); _local7 = (_local7 / _local17); _local8 = (_local8 / _local17); if (_local17 > _local20){ return; }; _arg1.pointCount = 1; _local12 = _arg3.R; _arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8)); _arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8)); _local9 = (_local13 - (_local20 * _arg1.normal.x)); _local10 = (_local14 - (_local20 * _arg1.normal.y)); _local7 = (_local9 - _arg3.position.x); _local8 = (_local10 - _arg3.position.y); _local12 = _arg3.R; _local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local7 = (_local9 - _arg5.position.x); _local8 = (_local10 - _arg5.position.y); _local12 = _arg5.R; _local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y)); _local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y)); _local6.separation = (_local17 - _local20); _local6.id.features.referenceEdge = 0; _local6.id.features.flip = 0; } } }//package Box2D.Collision
Section 36
//b2ContactID (Box2D.Collision.b2ContactID) package Box2D.Collision { public class b2ContactID { public var _key:uint; public var features:Features; public function b2ContactID(){ features = new Features(); super(); features._m_id = this; } public function Set(_arg1:b2ContactID):void{ key = _arg1._key; } public function Copy():b2ContactID{ var _local1:b2ContactID; _local1 = new b2ContactID(); _local1.key = key; return (_local1); } public function get key():uint{ return (_key); } public function set key(_arg1:uint):void{ _key = _arg1; features._referenceEdge = (_key & 0xFF); features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF); features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF); features._flip = (((_key & 4278190080) >> 24) & 0xFF); } } }//package Box2D.Collision
Section 37
//b2ContactPoint (Box2D.Collision.b2ContactPoint) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2ContactPoint { public var separation:Number; public var normal:b2Vec2; public var position:b2Vec2; public var restitution:Number; public var shape1:b2Shape; public var shape2:b2Shape; public var id:b2ContactID; public var friction:Number; public var velocity:b2Vec2; public function b2ContactPoint(){ position = new b2Vec2(); velocity = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 38
//b2Distance (Box2D.Collision.b2Distance) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Distance { private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()]; private static var gPoint:b2Point = new b2Point(); public static var g_GJK_Iterations:int = 0; public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{ var _local4:Number; var _local5:int; var _local6:b2Vec2; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local4 = (100 * Number.MIN_VALUE); _local5 = 0; while (_local5 < _arg3) { _local6 = _arg2[_local5]; _local7 = Math.abs((_arg1.x - _local6.x)); _local8 = Math.abs((_arg1.y - _local6.y)); _local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x)); _local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y)); if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){ return (true); }; _local5++; }; return (false); } public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{ var _local7:b2Vec2; var _local8:Array; var _local9:Array; var _local10:Array; var _local11:int; var _local12:Number; var _local13:int; var _local14:int; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:int; _local8 = s_p1s; _local9 = s_p2s; _local10 = s_points; _local11 = 0; _arg1.SetV(_arg3.GetFirstVertex(_arg4)); _arg2.SetV(_arg5.GetFirstVertex(_arg6)); _local12 = 0; _local13 = 20; _local14 = 0; while (_local14 < _local13) { _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local17 = _arg3.Support(_arg4, _local15, _local16); _local18 = _arg5.Support(_arg6, -(_local15), -(_local16)); _local12 = ((_local15 * _local15) + (_local16 * _local16)); _local19 = (_local18.x - _local17.x); _local20 = (_local18.y - _local17.y); _local21 = ((_local15 * _local19) + (_local16 * _local20)); if ((_local12 - ((_local15 * _local19) + (_local16 * _local20))) <= (0.01 * _local12)){ if (_local11 == 0){ _arg1.SetV(_local17); _arg2.SetV(_local18); }; g_GJK_Iterations = _local14; return (Math.sqrt(_local12)); }; switch (_local11){ case 0: _local7 = _local8[0]; _local7.SetV(_local17); _local7 = _local9[0]; _local7.SetV(_local18); _local7 = _local10[0]; _local7.x = _local19; _local7.y = _local20; _arg1.SetV(_local8[0]); _arg2.SetV(_local9[0]); _local11++; break; case 1: _local7 = _local8[1]; _local7.SetV(_local17); _local7 = _local9[1]; _local7.SetV(_local18); _local7 = _local10[1]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10); break; case 2: _local7 = _local8[2]; _local7.SetV(_local17); _local7 = _local9[2]; _local7.SetV(_local18); _local7 = _local10[2]; _local7.x = _local19; _local7.y = _local20; _local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10); break; }; if (_local11 == 3){ g_GJK_Iterations = _local14; return (0); }; _local22 = -(Number.MAX_VALUE); _local23 = 0; while (_local23 < _local11) { _local7 = _local10[_local23]; _local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y))); _local23++; }; if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){ g_GJK_Iterations = _local14; _local15 = (_arg2.x - _arg1.x); _local16 = (_arg2.y - _arg1.y); _local12 = ((_local15 * _local15) + (_local16 * _local16)); return (Math.sqrt(_local12)); }; _local14++; }; g_GJK_Iterations = _local13; return (Math.sqrt(_local12)); } public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local7 = _arg4.R; _local8 = _arg3.m_localPosition; _local9 = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local10 = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local7 = _arg6.R; _local8 = _arg5.m_localPosition; _local11 = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local12 = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = ((_local13 * _local13) + (_local14 * _local14)); _local16 = (_arg3.m_radius - b2Settings.b2_toiSlop); _local17 = (_arg5.m_radius - b2Settings.b2_toiSlop); _local18 = (_local16 + _local17); if (_local15 > (_local18 * _local18)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _local20 = (_local19 - _local18); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = (_local11 - (_local17 * _local13)); _arg2.y = (_local12 - (_local17 * _local14)); return (_local20); }; if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){ _local19 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14))); _local13 = (_local13 / _local19); _local14 = (_local14 / _local19); _arg1.x = (_local9 + (_local16 * _local13)); _arg1.y = (_local10 + (_local16 * _local14)); _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); }; _arg1.x = _local9; _arg1.y = _local10; _arg2.x = _arg1.x; _arg2.y = _arg1.y; return (0); } public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:b2Vec2; var _local13:b2Vec2; var _local14:b2Vec2; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg5[2]; _local9 = _arg3[0]; _local10 = _arg3[1]; _local11 = _arg3[2]; _local12 = _arg4[0]; _local13 = _arg4[1]; _local14 = _arg4[2]; _local15 = _local6.x; _local16 = _local6.y; _local17 = _local7.x; _local18 = _local7.y; _local19 = _local8.x; _local20 = _local8.y; _local21 = (_local17 - _local15); _local22 = (_local18 - _local16); _local23 = (_local19 - _local15); _local24 = (_local20 - _local16); _local25 = (_local19 - _local17); _local26 = (_local20 - _local18); _local27 = -(((_local15 * _local21) + (_local16 * _local22))); _local28 = ((_local17 * _local21) + (_local18 * _local22)); _local29 = -(((_local15 * _local23) + (_local16 * _local24))); _local30 = ((_local19 * _local23) + (_local20 * _local24)); _local31 = -(((_local17 * _local25) + (_local18 * _local26))); _local32 = ((_local19 * _local25) + (_local20 * _local26)); if ((((_local30 <= 0)) && ((_local32 <= 0)))){ _arg1.SetV(_local11); _arg2.SetV(_local14); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (1); }; _local33 = ((_local21 * _local24) - (_local22 * _local23)); _local34 = (_local33 * ((_local15 * _local18) - (_local16 * _local17))); _local36 = (_local33 * ((_local17 * _local20) - (_local18 * _local19))); if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){ _local35 = (_local31 / (_local31 + _local32)); _arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x))); _arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y))); _arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x))); _arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y))); _local9.SetV(_local11); _local12.SetV(_local14); _local6.SetV(_local8); return (2); }; _local37 = (_local33 * ((_local19 * _local16) - (_local20 * _local15))); if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){ _local35 = (_local29 / (_local29 + _local30)); _arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x))); _arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y))); _arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x))); _arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y))); _local10.SetV(_local11); _local13.SetV(_local14); _local7.SetV(_local8); return (2); }; _local38 = ((_local36 + _local37) + _local34); _local38 = (1 / _local38); _local39 = (_local36 * _local38); _local40 = (_local37 * _local38); _local41 = ((1 - _local39) - _local40); _arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x)); _arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y)); _arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x)); _arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y)); return (3); } public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{ var _local7:b2Mat22; var _local8:b2Vec2; var _local9:b2Point; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local9 = gPoint; _local8 = _arg5.m_localPosition; _local7 = _arg6.R; _local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y))); _local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y))); _local10 = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity); _local11 = (_arg5.m_radius - b2Settings.b2_toiSlop); if (_local10 > _local11){ _local10 = (_local10 - _local11); _local12 = (_arg2.x - _arg1.x); _local13 = (_arg2.y - _arg1.y); _local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13))); _local12 = (_local12 / _local14); _local13 = (_local13 / _local14); _arg2.x = (_arg2.x - (_local11 * _local12)); _arg2.y = (_arg2.y - (_local11 * _local13)); } else { _local10 = 0; _arg2.x = _arg1.x; _arg2.y = _arg1.y; }; return (_local10); } public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{ var _local7:int; var _local8:int; _local7 = _arg3.m_type; _local8 = _arg5.m_type; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){ return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6)); }; if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4)); }; if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){ return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6)); }; return (0); } public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{ var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Vec2; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local6 = _arg5[0]; _local7 = _arg5[1]; _local8 = _arg3[0]; _local9 = _arg3[1]; _local10 = _arg4[0]; _local11 = _arg4[1]; _local12 = -(_local7.x); _local13 = -(_local7.y); _local14 = (_local6.x - _local7.x); _local15 = (_local6.y - _local7.y); _local16 = Math.sqrt(((_local14 * _local14) + (_local15 * _local15))); _local14 = (_local14 / _local16); _local15 = (_local15 / _local16); _local17 = ((_local12 * _local14) + (_local13 * _local15)); if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){ _arg1.SetV(_local9); _arg2.SetV(_local11); _local8.SetV(_local9); _local10.SetV(_local11); _local6.SetV(_local7); return (1); }; _local17 = (_local17 / _local16); _arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x))); _arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y))); _arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x))); _arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y))); return (2); } } }//package Box2D.Collision
Section 39
//b2Manifold (Box2D.Collision.b2Manifold) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2Manifold { public var points:Array; public var pointCount:int;// = 0 public var normal:b2Vec2; public function b2Manifold(){ var _local1:int; pointCount = 0; super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ManifoldPoint(); _local1++; }; normal = new b2Vec2(); } public function Set(_arg1:b2Manifold):void{ var _local2:int; pointCount = _arg1.pointCount; _local2 = 0; while (_local2 < b2Settings.b2_maxManifoldPoints) { (points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]); _local2++; }; normal.SetV(_arg1.normal); } public function Reset():void{ var _local1:int; _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { (points[_local1] as b2ManifoldPoint).Reset(); _local1++; }; normal.SetZero(); pointCount = 0; } } }//package Box2D.Collision
Section 40
//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 41
//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 42
//b2Pair (Box2D.Collision.b2Pair) package Box2D.Collision { import Box2D.Common.*; public class b2Pair { public var userData;// = null public var proxyId1:uint; public var proxyId2:uint; public var 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 b2Pair(){ userData = null; super(); } public function SetBuffered():void{ status = (status | e_pairBuffered); } public function IsBuffered():Boolean{ return (((status & e_pairBuffered) == e_pairBuffered)); } public function IsFinal():Boolean{ return (((status & e_pairFinal) == e_pairFinal)); } public function ClearRemoved():void{ status = (status & ~(e_pairRemoved)); } public function SetFinal():void{ status = (status | e_pairFinal); } public function IsRemoved():Boolean{ return (((status & e_pairRemoved) == e_pairRemoved)); } public function ClearBuffered():void{ status = (status & ~(e_pairBuffered)); } public function SetRemoved():void{ status = (status | e_pairRemoved); } } }//package Box2D.Collision
Section 43
//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 44
//b2PairManager (Box2D.Collision.b2PairManager) package Box2D.Collision { import Box2D.Common.Math.*; import Box2D.Common.*; public class b2PairManager { public var m_pairCount:int; public var m_pairBuffer:Array; public var m_callback:b2PairCallback; public var m_pairs:Array; public var m_pairBufferCount:int; public var m_hashTable:Array; public var m_broadPhase:b2BroadPhase; public var m_freePair:uint; public function b2PairManager(){ var _local1:uint; super(); m_hashTable = new Array(b2Pair.b2_tableCapacity); _local1 = 0; while (_local1 < b2Pair.b2_tableCapacity) { m_hashTable[_local1] = b2Pair.b2_nullPair; _local1++; }; m_pairs = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1] = new b2Pair(); _local1++; }; m_pairBuffer = new Array(b2Settings.b2_maxPairs); _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairBuffer[_local1] = new b2BufferedPair(); _local1++; }; _local1 = 0; while (_local1 < b2Settings.b2_maxPairs) { m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy; m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy; m_pairs[_local1].userData = null; m_pairs[_local1].status = 0; m_pairs[_local1].next = (_local1 + 1); _local1++; }; m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair; m_pairCount = 0; m_pairBufferCount = 0; } private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{ var _local4:b2Pair; var _local5:uint; _local5 = m_hashTable[_arg3]; _local4 = m_pairs[_local5]; while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) { _local5 = _local4.next; _local4 = m_pairs[_local5]; }; if (_local5 == b2Pair.b2_nullPair){ return (null); }; return (_local4); } private function Find(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:uint; if (_arg1 > _arg2){ _local4 = _arg1; _arg1 = _arg2; _arg2 = _local4; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); return (FindHash(_arg1, _arg2, _local3)); } private function ValidateBuffer():void{ } public function Commit():void{ var _local1:b2BufferedPair; var _local2:int; var _local3:int; var _local4:Array; var _local5:b2Pair; var _local6:b2Proxy; var _local7:b2Proxy; _local3 = 0; _local4 = m_broadPhase.m_proxyPool; _local2 = 0; while (_local2 < m_pairBufferCount) { _local1 = m_pairBuffer[_local2]; _local5 = Find(_local1.proxyId1, _local1.proxyId2); _local5.ClearBuffered(); _local6 = _local4[_local5.proxyId1]; _local7 = _local4[_local5.proxyId2]; if (_local5.IsRemoved()){ if (_local5.IsFinal() == true){ m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData); }; _local1 = m_pairBuffer[_local3]; _local1.proxyId1 = _local5.proxyId1; _local1.proxyId2 = _local5.proxyId2; _local3++; } else { if (_local5.IsFinal() == false){ _local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData); _local5.SetFinal(); }; }; _local2++; }; _local2 = 0; while (_local2 < _local3) { _local1 = m_pairBuffer[_local2]; RemovePair(_local1.proxyId1, _local1.proxyId2); _local2++; }; m_pairBufferCount = 0; if (b2BroadPhase.s_validate){ ValidateTable(); }; } public function RemoveBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = Find(_arg1, _arg2); if (_local4 == null){ return; }; if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.SetRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function RemovePair(_arg1:uint, _arg2:uint){ var _local3:b2Pair; var _local4:uint; var _local5:uint; var _local6:b2Pair; var _local7:uint; var _local8:uint; var _local9:*; if (_arg1 > _arg2){ _local7 = _arg1; _arg1 = _arg2; _arg2 = _local7; }; _local4 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local5 = m_hashTable[_local4]; _local6 = null; while (_local5 != b2Pair.b2_nullPair) { if (Equals(m_pairs[_local5], _arg1, _arg2)){ _local8 = _local5; _local3 = m_pairs[_local5]; if (_local6){ _local6.next = _local3.next; } else { m_hashTable[_local4] = _local3.next; }; _local3 = m_pairs[_local8]; _local9 = _local3.userData; _local3.next = m_freePair; _local3.proxyId1 = b2Pair.b2_nullProxy; _local3.proxyId2 = b2Pair.b2_nullProxy; _local3.userData = null; _local3.status = 0; m_freePair = _local8; m_pairCount--; return (_local9); } else { _local6 = m_pairs[_local5]; _local5 = _local6.next; }; }; return (null); } public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{ m_broadPhase = _arg1; m_callback = _arg2; } public function AddBufferedPair(_arg1:int, _arg2:int):void{ var _local3:b2BufferedPair; var _local4:b2Pair; _local4 = AddPair(_arg1, _arg2); if (_local4.IsBuffered() == false){ _local4.SetBuffered(); _local3 = m_pairBuffer[m_pairBufferCount]; _local3.proxyId1 = _local4.proxyId1; _local3.proxyId2 = _local4.proxyId2; m_pairBufferCount++; }; _local4.ClearRemoved(); if (b2BroadPhase.s_validate){ ValidateBuffer(); }; } private function AddPair(_arg1:uint, _arg2:uint):b2Pair{ var _local3:uint; var _local4:b2Pair; var _local5:uint; var _local6:uint; if (_arg1 > _arg2){ _local6 = _arg1; _arg1 = _arg2; _arg2 = _local6; }; _local3 = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask); _local4 = FindHash(_arg1, _arg2, _local3); if (_local4 != null){ return (_local4); }; _local5 = m_freePair; _local4 = m_pairs[_local5]; m_freePair = _local4.next; _local4.proxyId1 = _arg1; _local4.proxyId2 = _arg2; _local4.status = 0; _local4.userData = null; _local4.next = m_hashTable[_local3]; m_hashTable[_local3] = _local5; m_pairCount++; return (_local4); } private function ValidateTable():void{ } public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{ return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2)))); } public static function Hash(_arg1:uint, _arg2:uint):uint{ var _local3:uint; _local3 = (((_arg2 << 16) & 4294901760) | _arg1); _local3 = (~(_local3) + ((_local3 << 15) & 4294934528)); _local3 = (_local3 ^ ((_local3 >> 12) & 1048575)); _local3 = (_local3 + ((_local3 << 2) & 4294967292)); _local3 = (_local3 ^ ((_local3 >> 4) & 268435455)); _local3 = (_local3 * 2057); _local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF)); return (_local3); } public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{ return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3)))); } } }//package Box2D.Collision
Section 45
//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 46
//b2Proxy (Box2D.Collision.b2Proxy) package Box2D.Collision { public class b2Proxy { public var overlapCount:uint; public var lowerBounds:Array; public var upperBounds:Array; public var userData;// = null public var timeStamp:uint; public function b2Proxy(){ lowerBounds = [uint(0), uint(0)]; upperBounds = [uint(0), uint(0)]; userData = null; super(); } public function GetNext():uint{ return (lowerBounds[0]); } public function IsValid():Boolean{ return (!((overlapCount == b2BroadPhase.b2_invalid))); } public function SetNext(_arg1:uint):void{ lowerBounds[0] = (_arg1 & 0xFFFF); } } }//package Box2D.Collision
Section 47
//b2Segment (Box2D.Collision.b2Segment) package Box2D.Collision { import Box2D.Common.Math.*; public class b2Segment { public var p1:b2Vec2; public var p2:b2Vec2; public function b2Segment(){ p1 = new b2Vec2(); p2 = new b2Vec2(); super(); } public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{ var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; _local5 = _arg3.p1; _local6 = (_arg3.p2.x - _local5.x); _local7 = (_arg3.p2.y - _local5.y); _local8 = (p2.x - p1.x); _local9 = (p2.y - p1.y); _local10 = _local9; _local11 = -(_local8); _local12 = (100 * Number.MIN_VALUE); _local13 = -(((_local6 * _local10) + (_local7 * _local11))); if (_local13 > _local12){ _local14 = (_local5.x - p1.x); _local15 = (_local5.y - p1.y); _local16 = ((_local14 * _local10) + (_local15 * _local11)); if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){ _local17 = ((-(_local7) * _local15) + (_local7 * _local14)); if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){ _local16 = (_local16 / _local13); _local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local10 = (_local10 / _local18); _local11 = (_local11 / _local18); _arg1[0] = _local16; _arg2.Set(_local10, _local11); return (true); }; }; }; return (false); } } }//package Box2D.Collision
Section 48
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact) package Box2D.Collision { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Common.*; public class b2TimeOfImpact { public static var s_xf1:b2XForm = new b2XForm(); public static var s_xf2:b2XForm = new b2XForm(); public static var s_p1:b2Vec2 = new b2Vec2(); public static var s_p2:b2Vec2 = new b2Vec2(); public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Vec2; var _local18:b2Vec2; var _local19:int; var _local20:int; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:b2XForm; var _local27:b2XForm; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; _local7 = _arg1.m_sweepRadius; _local8 = _arg3.m_sweepRadius; _local9 = _arg2.t0; _local10 = (_arg2.c.x - _arg2.c0.x); _local11 = (_arg2.c.y - _arg2.c0.y); _local12 = (_arg4.c.x - _arg4.c0.x); _local13 = (_arg4.c.y - _arg4.c0.y); _local14 = (_arg2.a - _arg2.a0); _local15 = (_arg4.a - _arg4.a0); _local16 = 0; _local17 = s_p1; _local18 = s_p2; _local19 = 20; _local20 = 0; _local21 = 0; _local22 = 0; _local23 = 0; _local24 = 0; while (true) { _local25 = (((1 - _local16) * _local9) + _local16); _local26 = s_xf1; _local27 = s_xf2; _arg2.GetXForm(_local26, _local25); _arg4.GetXForm(_local27, _local25); _local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27); if (_local20 == 0){ if (_local23 > (2 * b2Settings.b2_toiSlop)){ _local24 = (1.5 * b2Settings.b2_toiSlop); } else { _local5 = (0.05 * b2Settings.b2_toiSlop); _local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop)); _local24 = ((_local5 > _local6)) ? _local5 : _local6; }; }; if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){ break; }; _local21 = (_local18.x - _local17.x); _local22 = (_local18.y - _local17.y); _local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22))); _local21 = (_local21 / _local28); _local22 = (_local22 / _local28); _local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8)); if (_local29 == 0){ _local16 = 1; break; }; _local30 = ((_local23 - _local24) / _local29); _local31 = (_local16 + _local30); if ((((_local31 < 0)) || ((1 < _local31)))){ _local16 = 1; break; }; if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){ break; }; _local16 = _local31; _local20++; }; return (_local16); } } }//package Box2D.Collision
Section 49
//ClipVertex (Box2D.Collision.ClipVertex) package Box2D.Collision { import Box2D.Common.Math.*; public class ClipVertex { public var v:b2Vec2; public var id:b2ContactID; public function ClipVertex(){ v = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Collision
Section 50
//Features (Box2D.Collision.Features) package Box2D.Collision { public class Features { public var _referenceEdge:int; public var _incidentEdge:int; public var _flip:int; public var _incidentVertex:int; public var _m_id:b2ContactID; public function get referenceEdge():int{ return (_referenceEdge); } public function set incidentVertex(_arg1:int):void{ _incidentVertex = _arg1; _m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000)); } public function get flip():int{ return (_flip); } public function get incidentEdge():int{ return (_incidentEdge); } public function set referenceEdge(_arg1:int):void{ _referenceEdge = _arg1; _m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF)); } public function set flip(_arg1:int):void{ _flip = _arg1; _m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080)); } public function get incidentVertex():int{ return (_incidentVertex); } public function set incidentEdge(_arg1:int):void{ _incidentEdge = _arg1; _m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00)); } } }//package Box2D.Collision
Section 51
//b2Mat22 (Box2D.Common.Math.b2Mat22) package Box2D.Common.Math { public class b2Mat22 { public var col1:b2Vec2; public var col2:b2Vec2; public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){ var _local4:Number; var _local5:Number; col1 = new b2Vec2(); col2 = new b2Vec2(); super(); if (((!((_arg2 == null))) && (!((_arg3 == null))))){ col1.SetV(_arg2); col2.SetV(_arg3); } else { _local4 = Math.cos(_arg1); _local5 = Math.sin(_arg1); col1.x = _local4; col2.x = -(_local5); col1.y = _local5; col2.y = _local4; }; } public function SetIdentity():void{ col1.x = 1; col2.x = 0; col1.y = 0; col2.y = 1; } public function Set(_arg1:Number):void{ var _local2:Number; var _local3:Number; _local2 = Math.cos(_arg1); _local3 = Math.sin(_arg1); col1.x = _local2; col2.x = -(_local3); col1.y = _local3; col2.y = _local2; } public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{ col1.SetV(_arg1); col2.SetV(_arg2); } public function SetZero():void{ col1.x = 0; col2.x = 0; col1.y = 0; col2.y = 0; } public function SetM(_arg1:b2Mat22):void{ col1.SetV(_arg1.col1); col2.SetV(_arg1.col2); } public function AddM(_arg1:b2Mat22):void{ col1.x = (col1.x + _arg1.col1.x); col1.y = (col1.y + _arg1.col1.y); col2.x = (col2.x + _arg1.col2.x); col2.y = (col2.y + _arg1.col2.y); } public function Abs():void{ col1.Abs(); col2.Abs(); } public function Copy():b2Mat22{ return (new b2Mat22(0, col1, col2)); } public function Invert(_arg1:b2Mat22):b2Mat22{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = col1.x; _local3 = col2.x; _local4 = col1.y; _local5 = col2.y; _local6 = ((_local2 * _local5) - (_local3 * _local4)); _local6 = (1 / _local6); _arg1.col1.x = (_local6 * _local5); _arg1.col2.x = (-(_local6) * _local3); _arg1.col1.y = (-(_local6) * _local4); _arg1.col2.y = (_local6 * _local2); return (_arg1); } public function GetAngle():Number{ return (Math.atan2(col1.y, col1.x)); } public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local4 = col1.x; _local5 = col2.x; _local6 = col1.y; _local7 = col2.y; _local8 = ((_local4 * _local7) - (_local5 * _local6)); _local8 = (1 / _local8); _arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3))); _arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2))); return (_arg1); } } }//package Box2D.Common.Math
Section 52
//b2Math (Box2D.Common.Math.b2Math) package Box2D.Common.Math { public class b2Math { public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1)); public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity); public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0); public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x)); return (_local3); } public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y)); return (_local3); } public static function b2IsValid(_arg1:Number):Boolean{ return (isFinite(_arg1)); } public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y)); return (_local3); } public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = b2MulMV(_arg1.R, _arg2); _local3.x = (_local3.x + _arg1.position.x); _local3.y = (_local3.y + _arg1.position.y); return (_local3); } public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (((_local3 * _local3) + (_local4 * _local4))); } public static function b2Swap(_arg1:Array, _arg2:Array):void{ var _local3:*; _local3 = _arg1[0]; _arg1[0] = _arg2[0]; _arg2[0] = _local3; } public static function b2AbsM(_arg1:b2Mat22):b2Mat22{ var _local2:b2Mat22; _local2 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2)); return (_local2); } public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y)); return (_local3); } public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; var _local4:Number; _local3 = SubtractVV(_arg2, _arg1.position); _local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y)); _local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y)); _local3.x = _local4; return (_local3); } public static function b2Abs(_arg1:Number):Number{ return (((_arg1 > 0)) ? _arg1 : -(_arg1)); } public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{ return (b2Max(_arg2, b2Min(_arg1, _arg3))); } public static function b2AbsV(_arg1:b2Vec2):b2Vec2{ var _local2:b2Vec2; _local2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y)); return (_local2); } public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y)); return (_local3); } public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x))); } public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{ return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y))); } public static function degreesToRadians(_arg1:Number):Number{ return (((_arg1 / 180) * Math.PI)); } public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x)); return (_local3); } public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2)); return (_local3); } public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; _local3 = (_arg1.x - _arg2.x); _local4 = (_arg1.y - _arg2.y); return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4)))); } public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2Mat22; _local3 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1)); _local4 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2)); _local5 = new b2Mat22(0, _local3, _local4); return (_local5); } public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y)); return (_local3); } public static function b2IsPowerOfTwo(_arg1:uint):Boolean{ var _local2:Boolean; _local2 = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0))); return (_local2); } public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{ return (b2MaxV(_arg2, b2MinV(_arg1, _arg3))); } public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{ var _local3:Number; _local3 = Math.random(); _local3 = (((_arg2 - _arg1) * _local3) + _arg1); return (_local3); } public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2)); return (_local3); } public static function b2Min(_arg1:Number, _arg2:Number):Number{ return (((_arg1 < _arg2)) ? _arg1 : _arg2); } public static function b2Random():Number{ return (((Math.random() * 2) - 1)); } public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{ var _local3:b2Mat22; _local3 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2)); return (_local3); } public static function b2NextPowerOfTwo(_arg1:uint):uint{ _arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647)); _arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823)); _arg1 = (_arg1 | ((_arg1 >> 4) & 268435455)); _arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF)); _arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF)); return ((_arg1 + 1)); } public static function b2Max(_arg1:Number, _arg2:Number):Number{ return (((_arg1 > _arg2)) ? _arg1 : _arg2); } public static function radiansToDegrees(_arg1:Number):Number{ return (((_arg1 / Math.PI) * 180)); } public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{ var _local3:b2Vec2; _local3 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y))); return (_local3); } } }//package Box2D.Common.Math
Section 53
//b2Sweep (Box2D.Common.Math.b2Sweep) package Box2D.Common.Math { public class b2Sweep { public var localCenter:b2Vec2; public var c:b2Vec2; public var a:Number; public var c0:b2Vec2; public var a0:Number; public var t0:Number; public function b2Sweep(){ localCenter = new b2Vec2(); c0 = new b2Vec2(); c = new b2Vec2(); super(); } public function Advance(_arg1:Number):void{ var _local2:Number; if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){ _local2 = ((_arg1 - t0) / (1 - t0)); c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x)); c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y)); a0 = (((1 - _local2) * a0) + (_local2 * a)); t0 = _arg1; }; } public function GetXForm(_arg1:b2XForm, _arg2:Number):void{ var _local3:b2Mat22; var _local4:Number; var _local5:Number; if ((1 - t0) > Number.MIN_VALUE){ _local4 = ((_arg2 - t0) / (1 - t0)); _arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x)); _arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y)); _local5 = (((1 - _local4) * a0) + (_local4 * a)); _arg1.R.Set(_local5); } else { _arg1.position.SetV(c); _arg1.R.Set(a); }; _local3 = _arg1.R; _arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y))); _arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y))); } } }//package Box2D.Common.Math
Section 54
//b2Vec2 (Box2D.Common.Math.b2Vec2) package Box2D.Common.Math { public class b2Vec2 { public var x:Number; public var y:Number; public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Set(_arg1:Number=0, _arg2:Number=0):void{ x = _arg1; y = _arg2; } public function Multiply(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function Length():Number{ return (Math.sqrt(((x * x) + (y * y)))); } public function LengthSquared():Number{ return (((x * x) + (y * y))); } public function SetZero():void{ x = 0; y = 0; } public function Add(_arg1:b2Vec2):void{ x = (x + _arg1.x); y = (y + _arg1.y); } public function MaxV(_arg1:b2Vec2):void{ x = ((x > _arg1.x)) ? x : _arg1.x; y = ((y > _arg1.y)) ? y : _arg1.y; } public function SetV(_arg1:b2Vec2):void{ x = _arg1.x; y = _arg1.y; } public function Negative():b2Vec2{ return (new b2Vec2(-(x), -(y))); } public function CrossVF(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (_arg1 * y); y = (-(_arg1) * _local2); } public function Abs():void{ if (x < 0){ x = -(x); }; if (y < 0){ y = -(y); }; } public function Copy():b2Vec2{ return (new b2Vec2(x, y)); } public function MulTM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = b2Math.b2Dot(this, _arg1.col1); y = b2Math.b2Dot(this, _arg1.col2); x = _local2; } public function IsValid():Boolean{ return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y)))); } public function MinV(_arg1:b2Vec2):void{ x = ((x < _arg1.x)) ? x : _arg1.x; y = ((y < _arg1.y)) ? y : _arg1.y; } public function MulM(_arg1:b2Mat22):void{ var _local2:Number; _local2 = x; x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y)); y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y)); } public function Normalize():Number{ var _local1:Number; var _local2:Number; _local1 = Math.sqrt(((x * x) + (y * y))); if (_local1 < Number.MIN_VALUE){ return (0); }; _local2 = (1 / _local1); x = (x * _local2); y = (y * _local2); return (_local1); } public function Subtract(_arg1:b2Vec2):void{ x = (x - _arg1.x); y = (y - _arg1.y); } public function CrossFV(_arg1:Number):void{ var _local2:Number; _local2 = x; x = (-(_arg1) * y); y = (_arg1 * _local2); } public static function vectorTransform(_arg1:Number, _arg2:b2Vec2):b2Vec2{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:b2Vec2; _local3 = b2Math.degreesToRadians(_arg1); _local4 = ((_arg2.x * Math.cos(_local3)) - (_arg2.y * Math.sin(_local3))); _local5 = ((_arg2.x * Math.sin(_local3)) + (_arg2.y * Math.cos(_local3))); _local6 = new (b2Vec2); _local6.x = _local4; _local6.y = _local5; return (_local6); } public static function vectorToRotation(_arg1:b2Vec2, _arg2:b2Vec2):Number{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local3 = _arg1.Length(); _local4 = _arg2.Length(); _local5 = _arg1.Normalize(); _local6 = _arg2.Normalize(); _local7 = b2Math.b2Dot(_arg1, _arg2); _local8 = (_local3 * _local4); _local9 = Math.acos((_local7 / _local8)); _local10 = b2Math.radiansToDegrees(_local9); return (_local10); } public static function Make(_arg1:Number, _arg2:Number):b2Vec2{ return (new b2Vec2(_arg1, _arg2)); } } }//package Box2D.Common.Math
Section 55
//b2XForm (Box2D.Common.Math.b2XForm) package Box2D.Common.Math { public class b2XForm { public var R:b2Mat22; public var position:b2Vec2; public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{ position = new b2Vec2(); R = new b2Mat22(); super(); if (_arg1){ position.SetV(_arg1); R.SetM(_arg2); }; } public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{ position.SetV(_arg1); R.SetM(_arg2); } public function Set(_arg1:b2XForm):void{ position.SetV(_arg1.position); R.SetM(_arg1.R); } public function SetIdentity():void{ position.SetZero(); R.SetIdentity(); } } }//package Box2D.Common.Math
Section 56
//b2Color (Box2D.Common.b2Color) package Box2D.Common { import Box2D.Common.Math.*; public class b2Color { private var _g:uint;// = 0 private var _b:uint;// = 0 private var _r:uint;// = 0 public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){ _r = 0; _g = 0; _b = 0; super(); _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); _g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1))); _b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1))); } public function get color():uint{ return (((_r | (_g << 8)) | (_b << 16))); } public function set r(_arg1:Number):void{ _r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set b(_arg1:Number):void{ _b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } public function set g(_arg1:Number):void{ _g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1))); } } }//package Box2D.Common
Section 57
//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 58
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2CircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:b2ManifoldPoint; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf); _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ m_manifoldCount = 1; _local8 = m_manifold.points[0]; if (m0.pointCount == 0){ _local8.normalImpulse = 0; _local8.tangentImpulse = 0; if (_arg1){ _local7.position = _local5.GetWorldPoint(_local8.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local8.separation; _local7.id.key = _local8.id._key; _arg1.Add(_local7, this); }; } 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, this); }; }; } 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, this); }; }; } 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 59
//b2Contact (Box2D.Dynamics.Contacts.b2Contact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2Contact { public var m_shape1:b2Shape; public var m_shape2:b2Shape; public var m_prev:b2Contact; public var m_toi:Number; public var m_next:b2Contact; public var m_friction:Number; public var m_manifoldCount:int; public var m_node1:b2ContactEdge; public var m_node2:b2ContactEdge; public var m_restitution:Number; public var m_flags:uint; public static var e_toiFlag:uint = 8; public static var e_nonSolidFlag:uint = 1; public static var e_slowFlag:uint = 2; public static var e_islandFlag:uint = 4; public static var s_registers:Array; public static var s_initialized:Boolean = false; public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){ m_node1 = new b2ContactEdge(); m_node2 = new b2ContactEdge(); super(); m_flags = 0; if (((!(_arg1)) || (!(_arg2)))){ m_shape1 = null; m_shape2 = null; return; }; if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){ m_flags = (m_flags | e_nonSolidFlag); }; m_shape1 = _arg1; m_shape2 = _arg2; m_manifoldCount = 0; m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction)); m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution); m_prev = null; m_next = null; m_node1.contact = null; m_node1.prev = null; m_node1.next = null; m_node1.other = null; m_node2.contact = null; m_node2.prev = null; m_node2.next = null; m_node2.other = null; } public function GetShape1():b2Shape{ return (m_shape1); } public function IsSolid():Boolean{ return (((m_flags & e_nonSolidFlag) == 0)); } public function GetNext():b2Contact{ return (m_next); } public function GetManifolds():Array{ return (null); } public function GetShape2():b2Shape{ return (m_shape2); } public function GetManifoldCount():int{ return (m_manifoldCount); } public function Update(_arg1:b2ContactListener):void{ var _local2:int; var _local3:int; var _local4:b2Body; var _local5:b2Body; _local2 = m_manifoldCount; Evaluate(_arg1); _local3 = m_manifoldCount; _local4 = m_shape1.m_body; _local5 = m_shape2.m_body; if ((((_local3 == 0)) && ((_local2 > 0)))){ _local4.WakeUp(); _local5.WakeUp(); }; if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){ m_flags = (m_flags & ~(e_slowFlag)); } else { m_flags = (m_flags | e_slowFlag); }; } public function Evaluate(_arg1:b2ContactListener):void{ } public static function InitializeRegisters():void{ var _local1:int; var _local2:int; s_registers = new Array(b2Shape.e_shapeTypeCount); _local1 = 0; while (_local1 < b2Shape.e_shapeTypeCount) { s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount); _local2 = 0; while (_local2 < b2Shape.e_shapeTypeCount) { s_registers[_local1][_local2] = new b2ContactRegister(); _local2++; }; _local1++; }; AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape); AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape); AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape); } public static function Destroy(_arg1:b2Contact, _arg2):void{ var _local3:int; var _local4:int; var _local5:b2ContactRegister; var _local6:Function; if (_arg1.m_manifoldCount > 0){ _arg1.m_shape1.m_body.WakeUp(); _arg1.m_shape2.m_body.WakeUp(); }; _local3 = _arg1.m_shape1.m_type; _local4 = _arg1.m_shape2.m_type; _local5 = s_registers[_local3][_local4]; _local6 = _local5.destroyFcn; _local6(_arg1, _arg2); } public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{ s_registers[_arg3][_arg4].createFcn = _arg1; s_registers[_arg3][_arg4].destroyFcn = _arg2; s_registers[_arg3][_arg4].primary = true; if (_arg3 != _arg4){ s_registers[_arg4][_arg3].createFcn = _arg1; s_registers[_arg4][_arg3].destroyFcn = _arg2; s_registers[_arg4][_arg3].primary = false; }; } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ var _local4:int; var _local5:int; var _local6:b2ContactRegister; var _local7:Function; var _local8:b2Contact; var _local9:int; var _local10:b2Manifold; if (s_initialized == false){ InitializeRegisters(); s_initialized = true; }; _local4 = _arg1.m_type; _local5 = _arg2.m_type; _local6 = s_registers[_local4][_local5]; _local7 = _local6.createFcn; if (_local7 != null){ if (_local6.primary){ return (_local7(_arg1, _arg2, _arg3)); }; _local8 = _local7(_arg2, _arg1, _arg3); _local9 = 0; while (_local9 < _local8.m_manifoldCount) { _local10 = _local8.GetManifolds()[_local9]; _local8.GetManifolds()[_local9].normal = _local10.normal.Negative(); _local9++; }; return (_local8); //unresolved jump }; return (null); } } }//package Box2D.Dynamics.Contacts
Section 60
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactConstraint { public var points:Array; public var restitution:Number; public var body1:b2Body; public var manifold:b2Manifold; public var normal:b2Vec2; public var body2:b2Body; public var friction:Number; public var pointCount:int; public function b2ContactConstraint(){ var _local1:int; normal = new b2Vec2(); super(); points = new Array(b2Settings.b2_maxManifoldPoints); _local1 = 0; while (_local1 < b2Settings.b2_maxManifoldPoints) { points[_local1] = new b2ContactConstraintPoint(); _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 61
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; public class b2ContactConstraintPoint { public var r2:b2Vec2; public var separation:Number; public var positionImpulse:Number; public var normalImpulse:Number; public var equalizedMass:Number; public var tangentMass:Number; public var tangentImpulse:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var normalMass:Number; public var velocityBias:Number; public var r1:b2Vec2; public function b2ContactConstraintPoint(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); r1 = new b2Vec2(); r2 = new b2Vec2(); super(); } } }//package Box2D.Dynamics.Contacts
Section 62
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2ContactEdge { public var next:b2ContactEdge; public var other:b2Body; public var contact:b2Contact; public var prev:b2ContactEdge; } }//package Box2D.Dynamics.Contacts
Section 63
//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 64
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; public class b2ContactResult { public var normal:b2Vec2; public var position:b2Vec2; public var shape1:b2Shape; public var shape2:b2Shape; public var normalImpulse:Number; public var tangentImpulse:Number; public var id:b2ContactID; public function b2ContactResult(){ position = new b2Vec2(); normal = new b2Vec2(); id = new b2ContactID(); super(); } } }//package Box2D.Dynamics.Contacts
Section 65
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver) package Box2D.Dynamics.Contacts { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2ContactSolver { public var m_constraintCount:int; public var m_constraints:Array; public var m_allocator; public var m_step:b2TimeStep; public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){ var _local5:b2Contact; var _local6:int; var _local7:b2Vec2; var _local8:b2Mat22; var _local9:int; var _local10:b2Body; var _local11:b2Body; var _local12:int; var _local13:Array; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:int; var _local23:b2Manifold; var _local24:Number; var _local25:Number; var _local26:b2ContactConstraint; var _local27:uint; var _local28:b2ManifoldPoint; var _local29:b2ContactConstraintPoint; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; var _local39:Number; var _local40:Number; var _local41:Number; var _local42:Number; var _local43:Number; var _local44:Number; var _local45:Number; var _local46:Number; var _local47:Number; m_step = new b2TimeStep(); m_constraints = new Array(); super(); m_step.dt = _arg1.dt; m_step.inv_dt = _arg1.inv_dt; m_step.maxIterations = _arg1.maxIterations; m_allocator = _arg4; m_constraintCount = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; m_constraintCount = (m_constraintCount + _local5.m_manifoldCount); _local6++; }; _local6 = 0; while (_local6 < m_constraintCount) { m_constraints[_local6] = new b2ContactConstraint(); _local6++; }; _local9 = 0; _local6 = 0; while (_local6 < _arg3) { _local5 = _arg2[_local6]; _local10 = _local5.m_shape1.m_body; _local11 = _local5.m_shape2.m_body; _local12 = _local5.m_manifoldCount; _local13 = _local5.GetManifolds(); _local14 = _local5.m_friction; _local15 = _local5.m_restitution; _local16 = _local10.m_linearVelocity.x; _local17 = _local10.m_linearVelocity.y; _local18 = _local11.m_linearVelocity.x; _local19 = _local11.m_linearVelocity.y; _local20 = _local10.m_angularVelocity; _local21 = _local11.m_angularVelocity; _local22 = 0; while (_local22 < _local12) { _local23 = _local13[_local22]; _local24 = _local23.normal.x; _local25 = _local23.normal.y; _local26 = m_constraints[_local9]; _local26.body1 = _local10; _local26.body2 = _local11; _local26.manifold = _local23; _local26.normal.x = _local24; _local26.normal.y = _local25; _local26.pointCount = _local23.pointCount; _local26.friction = _local14; _local26.restitution = _local15; _local27 = 0; while (_local27 < _local26.pointCount) { _local28 = _local23.points[_local27]; _local29 = _local26.points[_local27]; _local29.normalImpulse = _local28.normalImpulse; _local29.tangentImpulse = _local28.tangentImpulse; _local29.separation = _local28.separation; _local29.positionImpulse = 0; _local29.localAnchor1.SetV(_local28.localPoint1); _local29.localAnchor2.SetV(_local28.localPoint2); _local8 = _local10.m_xf.R; _local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x); _local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33)); _local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33)); _local32 = _local30; _local29.r1.Set(_local32, _local33); _local8 = _local11.m_xf.R; _local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x); _local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y); _local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35)); _local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35)); _local34 = _local30; _local29.r2.Set(_local34, _local35); _local36 = ((_local32 * _local32) + (_local33 * _local33)); _local37 = ((_local34 * _local34) + (_local35 * _local35)); _local38 = ((_local32 * _local24) + (_local33 * _local25)); _local39 = ((_local34 * _local24) + (_local35 * _local25)); _local40 = (_local10.m_invMass + _local11.m_invMass); _local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39))))); _local29.normalMass = (1 / _local40); _local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass)); _local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39))))); _local29.equalizedMass = (1 / _local41); _local42 = _local25; _local43 = -(_local24); _local44 = ((_local32 * _local42) + (_local33 * _local43)); _local45 = ((_local34 * _local42) + (_local35 * _local43)); _local46 = (_local10.m_invMass + _local11.m_invMass); _local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45))))); _local29.tangentMass = (1 / _local46); _local29.velocityBias = 0; if (_local29.separation > 0){ _local29.velocityBias = (-60 * _local29.separation); }; _local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33)); _local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32)); _local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31)); if (_local47 < -(b2Settings.b2_velocityThreshold)){ _local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47)); }; _local27++; }; _local9++; _local22++; }; _local6++; }; } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2Mat22; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:int; var _local19:int; var _local20:b2ContactConstraintPoint; var _local21:Number; var _local22:Number; var _local23:b2ContactConstraintPoint; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_invMass; _local10 = _local7.m_invI; _local11 = _local8.m_invMass; _local12 = _local8.m_invI; _local13 = _local6.normal.x; _local14 = _local6.normal.y; _local15 = _local14; _local16 = -(_local13); if (_arg1.warmStarting){ _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local20 = _local6.points[_local18]; _local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio); _local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio); _local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15)); _local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16)); _local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21)))); _local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21)); _local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22)); _local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21)))); _local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21)); _local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22)); _local18++; }; } else { _local19 = _local6.pointCount; _local18 = 0; while (_local18 < _local19) { _local23 = _local6.points[_local18]; _local23.normalImpulse = 0; _local23.tangentImpulse = 0; _local18++; }; }; _local5++; }; } public function SolvePositionConstraints(_arg1:Number):Boolean{ var _local2:Number; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; var _local6:b2ContactConstraint; var _local7:b2Body; var _local8:b2Body; var _local9:b2Vec2; var _local10:Number; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:int; var _local20:int; var _local21:b2ContactConstraintPoint; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:Number; var _local38:Number; _local2 = 0; _local5 = 0; while (_local5 < m_constraintCount) { _local6 = m_constraints[_local5]; _local7 = _local6.body1; _local8 = _local6.body2; _local9 = _local7.m_sweep.c; _local10 = _local7.m_sweep.a; _local11 = _local8.m_sweep.c; _local12 = _local8.m_sweep.a; _local13 = (_local7.m_mass * _local7.m_invMass); _local14 = (_local7.m_mass * _local7.m_invI); _local15 = (_local8.m_mass * _local8.m_invMass); _local16 = (_local8.m_mass * _local8.m_invI); _local17 = _local6.normal.x; _local18 = _local6.normal.y; _local19 = _local6.pointCount; _local20 = 0; while (_local20 < _local19) { _local21 = _local6.points[_local20]; _local3 = _local7.m_xf.R; _local4 = _local7.m_sweep.localCenter; _local22 = (_local21.localAnchor1.x - _local4.x); _local23 = (_local21.localAnchor1.y - _local4.y); _local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23)); _local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23)); _local22 = _local26; _local3 = _local8.m_xf.R; _local4 = _local8.m_sweep.localCenter; _local24 = (_local21.localAnchor2.x - _local4.x); _local25 = (_local21.localAnchor2.y - _local4.y); _local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25)); _local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25)); _local24 = _local26; _local27 = (_local9.x + _local22); _local28 = (_local9.y + _local23); _local29 = (_local11.x + _local24); _local30 = (_local11.y + _local25); _local31 = (_local29 - _local27); _local32 = (_local30 - _local28); _local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation); _local2 = b2Math.b2Min(_local2, _local33); _local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0)); _local35 = (-(_local21.equalizedMass) * _local34); _local36 = _local21.positionImpulse; _local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0); _local35 = (_local21.positionImpulse - _local36); _local37 = (_local35 * _local17); _local38 = (_local35 * _local18); _local9.x = (_local9.x - (_local13 * _local37)); _local9.y = (_local9.y - (_local13 * _local38)); _local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37)))); _local7.m_sweep.a = _local10; _local7.SynchronizeTransform(); _local11.x = (_local11.x + (_local15 * _local37)); _local11.y = (_local11.y + (_local15 * _local38)); _local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37)))); _local8.m_sweep.a = _local12; _local8.SynchronizeTransform(); _local20++; }; _local5++; }; return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop))); } public function SolveVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraintPoint; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:b2Mat22; var _local18:b2Vec2; var _local19:int; var _local20:b2ContactConstraint; var _local21:b2Body; var _local22:b2Body; var _local23:Number; var _local24:Number; var _local25:b2Vec2; var _local26:b2Vec2; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; var _local33:Number; var _local34:Number; var _local35:Number; var _local36:Number; var _local37:int; var _local38:Number; _local19 = 0; while (_local19 < m_constraintCount) { _local20 = m_constraints[_local19]; _local21 = _local20.body1; _local22 = _local20.body2; _local23 = _local21.m_angularVelocity; _local24 = _local22.m_angularVelocity; _local25 = _local21.m_linearVelocity; _local26 = _local22.m_linearVelocity; _local27 = _local21.m_invMass; _local28 = _local21.m_invI; _local29 = _local22.m_invMass; _local30 = _local22.m_invI; _local31 = _local20.normal.x; _local32 = _local20.normal.y; _local33 = _local32; _local34 = -(_local31); _local35 = _local20.friction; _local37 = _local20.pointCount; _local1 = 0; while (_local1 < _local37) { _local2 = _local20.points[_local1]; _local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y)); _local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x)); _local9 = ((_local7 * _local31) + (_local8 * _local32)); _local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias)); _local10 = ((_local7 * _local33) + (_local8 * _local34)); _local12 = (_local2.tangentMass * -(_local10)); _local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0); _local11 = (_local13 - _local2.normalImpulse); _local38 = (_local35 * _local2.normalImpulse); _local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38); _local12 = (_local14 - _local2.tangentImpulse); _local15 = ((_local11 * _local31) + (_local12 * _local33)); _local16 = ((_local11 * _local32) + (_local12 * _local34)); _local25.x = (_local25.x - (_local27 * _local15)); _local25.y = (_local25.y - (_local27 * _local16)); _local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15)))); _local26.x = (_local26.x + (_local29 * _local15)); _local26.y = (_local26.y + (_local29 * _local16)); _local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15)))); _local2.normalImpulse = _local13; _local2.tangentImpulse = _local14; _local1++; }; _local21.m_angularVelocity = _local23; _local22.m_angularVelocity = _local24; _local19++; }; } public function FinalizeVelocityConstraints():void{ var _local1:int; var _local2:b2ContactConstraint; var _local3:b2Manifold; var _local4:int; var _local5:b2ManifoldPoint; var _local6:b2ContactConstraintPoint; _local1 = 0; while (_local1 < m_constraintCount) { _local2 = m_constraints[_local1]; _local3 = _local2.manifold; _local4 = 0; while (_local4 < _local2.pointCount) { _local5 = _local3.points[_local4]; _local6 = _local2.points[_local4]; _local5.normalImpulse = _local6.normalImpulse; _local5.tangentImpulse = _local6.tangentImpulse; _local4++; }; _local1++; }; } } }//package Box2D.Dynamics.Contacts
Section 66
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact) package Box2D.Dynamics.Contacts { import Box2D.Dynamics.*; public class b2NullContact extends b2Contact { override public function GetManifolds():Array{ return (null); } override public function Evaluate(_arg1:b2ContactListener):void{ } } }//package Box2D.Dynamics.Contacts
Section 67
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Common.*; public class b2PolyAndCircleContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){ var _local3:b2ManifoldPoint; m_manifolds = [new b2Manifold()]; m0 = new b2Manifold(); super(_arg1, _arg2); m_manifold = m_manifolds[0]; b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape)); b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape)); m_manifold.pointCount = 0; _local3 = m_manifold.points[0]; _local3.normalImpulse = 0; _local3.tangentImpulse = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:int; var _local3:b2Vec2; var _local4:b2Vec2; var _local5:b2ManifoldPoint; var _local6:b2Body; var _local7:b2Body; var _local8:Array; var _local9:b2ContactPoint; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local6 = m_shape1.m_body; _local7 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf); _local8 = [false, false]; _local9 = s_evalCP; _local9.shape1 = m_shape1; _local9.shape2 = m_shape2; _local9.friction = m_friction; _local9.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local2 = 0; while (_local2 < m_manifold.pointCount) { _local10 = m_manifold.points[_local2]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local8[_local13] == true){ } else { _local5 = m0.points[_local13]; if (_local5.id._key == _local12){ _local8[_local13] = true; _local10.normalImpulse = _local5.normalImpulse; _local10.tangentImpulse = _local5.tangentImpulse; _local11 = true; if (_arg1 != null){ _local9.position = _local6.GetWorldPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y)); _local9.normal.SetV(m_manifold.normal); _local9.separation = _local10.separation; _local9.id.key = _local12; _arg1.Persist(_local9, this); }; 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, this); }; _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, this); }; _local2++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolyAndCircleContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 68
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact) package Box2D.Dynamics.Contacts { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; public class b2PolygonContact extends b2Contact { private var m_manifolds:Array; private var m0:b2Manifold; public var m_manifold:b2Manifold; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{ m0 = new b2Manifold(); m_manifolds = [new b2Manifold()]; super(_arg1, _arg2); m_manifold = m_manifolds[0]; m_manifold.pointCount = 0; } override public function GetManifolds():Array{ return (m_manifolds); } override public function Evaluate(_arg1:b2ContactListener):void{ var _local2:b2Vec2; var _local3:b2Vec2; var _local4:b2ManifoldPoint; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactPoint; var _local8:int; var _local9:Array; var _local10:b2ManifoldPoint; var _local11:Boolean; var _local12:uint; var _local13:int; _local5 = m_shape1.m_body; _local6 = m_shape2.m_body; m0.Set(m_manifold); b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf); _local9 = [false, false]; _local7 = s_evalCP; _local7.shape1 = m_shape1; _local7.shape2 = m_shape2; _local7.friction = m_friction; _local7.restitution = m_restitution; if (m_manifold.pointCount > 0){ _local8 = 0; while (_local8 < m_manifold.pointCount) { _local10 = m_manifold.points[_local8]; _local10.normalImpulse = 0; _local10.tangentImpulse = 0; _local11 = false; _local12 = _local10.id._key; _local13 = 0; while (_local13 < m0.pointCount) { if (_local9[_local13] == true){ } else { _local4 = m0.points[_local13]; if (_local4.id._key == _local12){ _local9[_local13] = true; _local10.normalImpulse = _local4.normalImpulse; _local10.tangentImpulse = _local4.tangentImpulse; _local11 = true; if (_arg1 != null){ _local7.position = _local5.GetWorldPoint(_local10.localPoint1); _local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1); _local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2); _local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y)); _local7.normal.SetV(m_manifold.normal); _local7.separation = _local10.separation; _local7.id.key = _local12; _arg1.Persist(_local7, this); }; 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, this); }; _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, this); }; _local8++; }; } public static function Destroy(_arg1:b2Contact, _arg2):void{ } public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{ return (new b2PolygonContact(_arg1, _arg2)); } } }//package Box2D.Dynamics.Contacts
Section 69
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2DistanceJoint extends b2Joint { public var m_mass:Number; public var m_u:b2Vec2; public var m_impulse:Number; public var m_dampingRatio:Number; public var m_frequencyHz:Number; public var m_localAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_bias:Number; public var m_gamma:Number; public var m_length:Number; public function b2DistanceJoint(_arg1:b2DistanceJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u = new b2Vec2(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_length = _arg1.length; m_frequencyHz = _arg1.frequencyHz; m_dampingRatio = _arg1.dampingRatio; m_impulse = 0; m_gamma = 0; m_bias = 0; m_inv_dt = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2(); _local1.SetV(m_u); _local1.Multiply((m_inv_dt * m_impulse)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Mat22; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; if (m_frequencyHz > 0){ return (true); }; _local2 = m_body1; _local3 = m_body2; _local1 = _local2.m_xf.R; _local4 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5)); _local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5)); _local4 = _local6; _local1 = _local3.m_xf.R; _local7 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8)); _local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8)); _local7 = _local6; _local9 = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4); _local10 = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5); _local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10))); _local9 = (_local9 / _local11); _local10 = (_local10 / _local11); _local12 = (_local11 - m_length); _local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local13 = (-(m_mass) * _local12); m_u.Set(_local9, _local10); _local14 = (_local13 * m_u.x); _local15 = (_local13 * m_u.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14)))); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15)); _local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14)))); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:Number; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; m_inv_dt = _arg1.inv_dt; _local4 = m_body1; _local5 = m_body2; _local2 = _local4.m_xf.R; _local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7)); _local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7)); _local6 = _local3; _local2 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local3; m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6); m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7); _local10 = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y))); if (_local10 > b2Settings.b2_linearSlop){ m_u.Multiply((1 / _local10)); } else { m_u.SetZero(); }; _local11 = ((_local6 * m_u.y) - (_local7 * m_u.x)); _local12 = ((_local8 * m_u.y) - (_local9 * m_u.x)); _local13 = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12)); m_mass = (1 / _local13); if (m_frequencyHz > 0){ _local14 = (_local10 - m_length); _local15 = ((2 * Math.PI) * m_frequencyHz); _local16 = (((2 * m_mass) * m_dampingRatio) * _local15); _local17 = ((m_mass * _local15) * _local15); m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17)))); m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma); m_mass = (1 / (_local13 + m_gamma)); }; if (_arg1.warmStarting){ m_impulse = (m_impulse * _arg1.dtRatio); _local18 = (m_impulse * m_u.x); _local19 = (m_impulse * m_u.y); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19)); _local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18)))); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19)); _local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18)))); } else { m_impulse = 0; }; } override public function GetReactionTorque():Number{ return (0); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Mat22; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; _local3 = m_body1; _local4 = m_body2; _local2 = _local3.m_xf.R; _local5 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6)); _local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6)); _local5 = _local7; _local2 = _local4.m_xf.R; _local8 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9)); _local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9)); _local8 = _local7; _local10 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6)); _local11 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5)); _local12 = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9)); _local13 = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8)); _local14 = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11))); _local15 = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse))); m_impulse = (m_impulse + _local15); _local16 = (_local15 * m_u.x); _local17 = (_local15 * m_u.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16)))); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17)); _local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); } } }//package Box2D.Dynamics.Joints
Section 70
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2DistanceJointDef extends b2JointDef { public var length:Number; public var dampingRatio:Number; public var frequencyHz:Number; public var localAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public function b2DistanceJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_distanceJoint; length = 1; frequencyHz = 0; dampingRatio = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ var _local5:Number; var _local6:Number; body1 = _arg1; body2 = _arg2; localAnchor1.SetV(body1.GetLocalPoint(_arg3)); localAnchor2.SetV(body2.GetLocalPoint(_arg4)); _local5 = (_arg4.x - _arg3.x); _local6 = (_arg4.y - _arg3.y); length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); frequencyHz = 0; dampingRatio = 0; } } }//package Box2D.Dynamics.Joints
Section 71
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2GearJoint extends b2Joint { public var m_force:Number; public var m_mass:Number; public var m_prismatic1:b2PrismaticJoint; public var m_prismatic2:b2PrismaticJoint; public var m_ground1:b2Body; public var m_ground2:b2Body; public var m_constant:Number; public var m_revolute1:b2RevoluteJoint; public var m_revolute2:b2RevoluteJoint; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_ratio:Number; public var m_J:b2Jacobian; public function b2GearJoint(_arg1:b2GearJointDef){ var _local2:int; var _local3:int; var _local4:Number; var _local5:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_J = new b2Jacobian(); super(_arg1); _local2 = _arg1.joint1.m_type; _local3 = _arg1.joint2.m_type; m_revolute1 = null; m_prismatic1 = null; m_revolute2 = null; m_prismatic2 = null; m_ground1 = _arg1.joint1.m_body1; m_body1 = _arg1.joint1.m_body2; if (_local2 == b2Joint.e_revoluteJoint){ m_revolute1 = (_arg1.joint1 as b2RevoluteJoint); m_groundAnchor1.SetV(m_revolute1.m_localAnchor1); m_localAnchor1.SetV(m_revolute1.m_localAnchor2); _local4 = m_revolute1.GetJointAngle(); } else { m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint); m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1); m_localAnchor1.SetV(m_prismatic1.m_localAnchor2); _local4 = m_prismatic1.GetJointTranslation(); }; m_ground2 = _arg1.joint2.m_body1; m_body2 = _arg1.joint2.m_body2; if (_local3 == b2Joint.e_revoluteJoint){ m_revolute2 = (_arg1.joint2 as b2RevoluteJoint); m_groundAnchor2.SetV(m_revolute2.m_localAnchor1); m_localAnchor2.SetV(m_revolute2.m_localAnchor2); _local5 = m_revolute2.GetJointAngle(); } else { m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint); m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1); m_localAnchor2.SetV(m_prismatic2.m_localAnchor2); _local5 = m_prismatic2.GetJointTranslation(); }; m_ratio = _arg1.ratio; m_constant = (_local4 + (m_ratio * _local5)); m_force = 0; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y)); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = 0; _local2 = m_body1; _local3 = m_body2; if (m_revolute1){ _local4 = m_revolute1.GetJointAngle(); } else { _local4 = m_prismatic1.GetJointTranslation(); }; if (m_revolute2){ _local5 = m_revolute2.GetJointAngle(); } else { _local5 = m_prismatic2.GetJointTranslation(); }; _local6 = (m_constant - (_local4 + (m_ratio * _local5))); _local7 = (-(m_mass) * _local6); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y)); _local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1)); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2)); _local2.SynchronizeTransform(); _local3.SynchronizeTransform(); return ((_local1 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:b2Mat22; var _local11:b2Vec2; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; _local2 = m_ground1; _local3 = m_ground2; _local4 = m_body1; _local5 = m_body2; _local14 = 0; m_J.SetZero(); if (m_revolute1){ m_J.angular1 = -1; _local14 = (_local14 + _local4.m_invI); } else { _local10 = _local2.m_xf.R; _local11 = m_prismatic1.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local4.m_xf.R; _local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear1.Set(-(_local6), -(_local7)); m_J.angular1 = -(_local12); _local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12))); }; if (m_revolute2){ m_J.angular2 = -(m_ratio); _local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI)); } else { _local10 = _local3.m_xf.R; _local11 = m_prismatic2.m_localXAxis1; _local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y)); _local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y)); _local10 = _local5.m_xf.R; _local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y); _local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9)); _local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9)); _local8 = _local13; _local12 = ((_local8 * _local7) - (_local9 * _local6)); m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7)); m_J.angular2 = (-(m_ratio) * _local12); _local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12)))); }; m_mass = (1 / _local14); if (_arg1.warmStarting){ _local15 = (_arg1.dt * m_force); _local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x)); _local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y)); _local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1)); _local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x)); _local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y)); _local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2)); } else { m_force = 0; }; } override public function GetReactionTorque():Number{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; _local1 = m_body2.m_xf.R; _local2 = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x); _local3 = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y); _local4 = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3)); _local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3)); _local2 = _local4; _local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x)))); return (_local4); } public function GetRatio():Number{ return (m_ratio); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; _local2 = m_body1; _local3 = m_body2; _local4 = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local5 = ((-(_arg1.inv_dt) * m_mass) * _local4); m_force = (m_force + _local5); _local6 = (_arg1.dt * _local5); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2)); } } }//package Box2D.Dynamics.Joints
Section 72
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef) package Box2D.Dynamics.Joints { public class b2GearJointDef extends b2JointDef { public var joint2:b2Joint; public var joint1:b2Joint; public var ratio:Number; public function b2GearJointDef(){ type = b2Joint.e_gearJoint; joint1 = null; joint2 = null; ratio = 1; } } }//package Box2D.Dynamics.Joints
Section 73
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2Jacobian { public var linear1:b2Vec2; public var linear2:b2Vec2; public var angular2:Number; public var angular1:Number; public function b2Jacobian(){ linear1 = new b2Vec2(); linear2 = new b2Vec2(); super(); } public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{ linear1.SetV(_arg1); angular1 = _arg2; linear2.SetV(_arg3); angular2 = _arg4; } public function SetZero():void{ linear1.SetZero(); angular1 = 0; linear2.SetZero(); angular2 = 0; } public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{ return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4))); } } }//package Box2D.Dynamics.Joints
Section 74
//b2Joint (Box2D.Dynamics.Joints.b2Joint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2Joint { public var m_islandFlag:Boolean; public var m_body1:b2Body; public var m_prev:b2Joint; public var m_next:b2Joint; public var m_type:int; public var m_collideConnected:Boolean; public var m_node1:b2JointEdge; public var m_node2:b2JointEdge; public var m_inv_dt:Number; public var m_userData; public var m_body2:b2Body; public static const e_unknownJoint:int = 0; public static const e_inactiveLimit:int = 0; public static const e_atUpperLimit:int = 2; public static const e_atLowerLimit:int = 1; public static const e_gearJoint:int = 6; public static const e_revoluteJoint:int = 1; public static const e_equalLimits:int = 3; public static const e_distanceJoint:int = 3; public static const e_pulleyJoint:int = 4; public static const e_prismaticJoint:int = 2; public static const e_mouseJoint:int = 5; public function b2Joint(_arg1:b2JointDef){ m_node1 = new b2JointEdge(); m_node2 = new b2JointEdge(); super(); m_type = _arg1.type; m_prev = null; m_next = null; m_body1 = _arg1.body1; m_body2 = _arg1.body2; m_collideConnected = _arg1.collideConnected; m_islandFlag = false; m_userData = _arg1.userData; } public function GetAnchor1():b2Vec2{ return (null); } public function GetAnchor2():b2Vec2{ return (null); } public function InitVelocityConstraints(_arg1:b2TimeStep):void{ } public function GetType():int{ return (m_type); } public function GetBody2():b2Body{ return (m_body2); } public function GetNext():b2Joint{ return (m_next); } public function GetReactionTorque():Number{ return (0); } public function GetUserData(){ return (m_userData); } public function GetReactionForce():b2Vec2{ return (null); } public function SolvePositionConstraints():Boolean{ return (false); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetBody1():b2Body{ return (m_body1); } public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ } public function InitPositionConstraints():void{ } public static function Destroy(_arg1:b2Joint, _arg2):void{ } public static function Create(_arg1:b2JointDef, _arg2):b2Joint{ var _local3:b2Joint; _local3 = null; switch (_arg1.type){ case e_distanceJoint: _local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef)); break; case e_mouseJoint: _local3 = new b2MouseJoint((_arg1 as b2MouseJointDef)); break; case e_prismaticJoint: _local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef)); break; case e_revoluteJoint: _local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef)); break; case e_pulleyJoint: _local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef)); break; case e_gearJoint: _local3 = new b2GearJoint((_arg1 as b2GearJointDef)); break; default: break; }; return (_local3); } } }//package Box2D.Dynamics.Joints
Section 75
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointDef { public var collideConnected:Boolean; public var body1:b2Body; public var body2:b2Body; public var userData; public var type:int; public function b2JointDef(){ type = b2Joint.e_unknownJoint; userData = null; body1 = null; body2 = null; collideConnected = false; } } }//package Box2D.Dynamics.Joints
Section 76
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge) package Box2D.Dynamics.Joints { import Box2D.Dynamics.*; public class b2JointEdge { public var joint:b2Joint; public var other:b2Body; public var next:b2JointEdge; public var prev:b2JointEdge; } }//package Box2D.Dynamics.Joints
Section 77
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2MouseJoint extends b2Joint { public var m_beta:Number; public var m_mass:b2Mat22; public var m_target:b2Vec2; public var m_impulse:b2Vec2; public var m_localAnchor:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K:b2Mat22; public var m_gamma:Number; public var m_C:b2Vec2; public var m_maxForce:Number; public function b2MouseJoint(_arg1:b2MouseJointDef){ var _local2:Number; var _local3:Number; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); m_localAnchor = new b2Vec2(); m_target = new b2Vec2(); m_impulse = new b2Vec2(); m_mass = new b2Mat22(); m_C = new b2Vec2(); super(_arg1); m_target.SetV(_arg1.target); _local2 = (m_target.x - m_body2.m_xf.position.x); _local3 = (m_target.y - m_body2.m_xf.position.y); _local4 = m_body2.m_xf.R; m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y)); m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y)); m_maxForce = _arg1.maxForce; m_impulse.SetZero(); _local5 = m_body2.m_mass; _local6 = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz); _local7 = (((2 * _local5) * _arg1.dampingRatio) * _local6); _local8 = ((_arg1.timeStep * _local5) * (_local6 * _local6)); m_gamma = (1 / (_local7 + _local8)); m_beta = (_local8 / (_local7 + _local8)); } override public function GetAnchor1():b2Vec2{ return (m_target); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor)); } override public function GetReactionForce():b2Vec2{ return (m_impulse); } override public function SolvePositionConstraints():Boolean{ return (true); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local7 = _local2.m_invMass; _local8 = _local2.m_invI; K1.col1.x = _local7; K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = _local7; K2.col1.x = ((_local8 * _local5) * _local5); K2.col2.x = ((-(_local8) * _local4) * _local5); K2.col1.y = ((-(_local8) * _local4) * _local5); K2.col2.y = ((_local8 * _local4) * _local4); K.SetM(K1); K.AddM(K2); K.col1.x = (K.col1.x + m_gamma); K.col2.y = (K.col2.y + m_gamma); K.Invert(m_mass); m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x); m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y); _local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98); _local9 = (_arg1.dt * m_impulse.x); _local10 = (_arg1.dt * m_impulse.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9)))); } override public function GetReactionTorque():Number{ return (0); } public function SetTarget(_arg1:b2Vec2):void{ if (m_body2.IsSleeping()){ m_body2.WakeUp(); }; m_target = _arg1; } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; _local2 = m_body2; _local3 = _local2.m_xf.R; _local6 = (m_localAnchor.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor.y - _local2.m_sweep.localCenter.y); _local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7)); _local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7)); _local6 = _local4; _local8 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7)); _local9 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6)); _local3 = m_mass; _local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x)); _local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y)); _local10 = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5))); _local11 = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5))); _local12 = m_impulse.x; _local13 = m_impulse.y; m_impulse.x = (m_impulse.x + _local10); m_impulse.y = (m_impulse.y + _local11); _local14 = m_impulse.Length(); if (_local14 > m_maxForce){ m_impulse.Multiply((m_maxForce / _local14)); }; _local10 = (m_impulse.x - _local12); _local11 = (m_impulse.y - _local13); _local15 = (_arg1.dt * _local10); _local16 = (_arg1.dt * _local11); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); } } }//package Box2D.Dynamics.Joints
Section 78
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; public class b2MouseJointDef extends b2JointDef { public var frequencyHz:Number; public var dampingRatio:Number; public var maxForce:Number; public var target:b2Vec2; public var timeStep:Number; public function b2MouseJointDef(){ target = new b2Vec2(); super(); type = b2Joint.e_mouseJoint; maxForce = 0; frequencyHz = 5; dampingRatio = 0.7; timeStep = (1 / 60); } } }//package Box2D.Dynamics.Joints
Section 79
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PrismaticJoint extends b2Joint { public var m_limitForce:Number; public var m_refAngle:Number; public var m_lowerTranslation:Number; public var m_localXAxis1:b2Vec2; public var m_torque:Number; public var m_enableLimit:Boolean; public var m_motorForce:Number; public var m_force:Number; public var m_localYAxis1:b2Vec2; public var m_motorMass:Number; public var m_maxMotorForce:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_angularMass:Number; public var m_limitState:int; public var m_linearMass:Number; public var m_upperTranslation:Number; public var m_motorJacobian:b2Jacobian; public var m_limitPositionImpulse:Number; public var m_motorSpeed:Number; public var m_linearJacobian:b2Jacobian; public var m_enableMotor:Boolean; public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_localXAxis1 = new b2Vec2(); m_localYAxis1 = new b2Vec2(); m_linearJacobian = new b2Jacobian(); m_motorJacobian = new b2Jacobian(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_localXAxis1.SetV(_arg1.localAxis1); m_localYAxis1.x = -(m_localXAxis1.y); m_localYAxis1.y = m_localXAxis1.x; m_refAngle = _arg1.referenceAngle; m_linearJacobian.SetZero(); m_linearMass = 0; m_force = 0; m_angularMass = 0; m_torque = 0; m_motorJacobian.SetZero(); m_motorMass = 0; m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerTranslation = _arg1.lowerTranslation; m_upperTranslation = _arg1.upperTranslation; m_maxMotorForce = _arg1.maxMotorForce; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperTranslation); } public function GetLowerLimit():Number{ return (m_lowerTranslation); } public function GetJointTranslation():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:b2Vec2; var _local6:Number; var _local7:Number; var _local8:b2Vec2; var _local9:Number; _local1 = m_body1; _local2 = m_body2; _local4 = _local1.GetWorldPoint(m_localAnchor1); _local5 = _local2.GetWorldPoint(m_localAnchor2); _local6 = (_local5.x - _local4.x); _local7 = (_local5.y - _local4.y); _local8 = _local1.GetWorldVector(m_localXAxis1); _local9 = ((_local8.x * _local6) + (_local8.y * _local7)); return (_local9); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerTranslation = _arg1; m_upperTranslation = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ var _local1:b2Mat22; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.m_xf.R; _local2 = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y))); _local3 = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y))); _local4 = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y))); _local5 = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y))); return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5)))); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:b2Mat22; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; var _local31:Number; var _local32:Number; _local3 = m_body1; _local4 = m_body2; _local5 = _local3.m_invMass; _local6 = _local4.m_invMass; _local7 = _local3.m_invI; _local8 = _local4.m_invI; _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local21 = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y)); _local22 = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y)); _local23 = ((_local21 * _local19) + (_local22 * _local20)); _local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local24 = (-(m_linearMass) * _local23); _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2)); _local25 = b2Math.b2Abs(_local23); _local26 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle); _local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local27 = (-(m_angularMass) * _local26); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local28 = b2Math.b2Abs(_local26); if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local9 = _local3.m_xf.R; _local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12)); _local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12)); _local11 = _local10; _local9 = _local4.m_xf.R; _local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14)); _local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14)); _local13 = _local10; _local15 = (_local3.m_sweep.c.x + _local11); _local16 = (_local3.m_sweep.c.y + _local12); _local17 = (_local4.m_sweep.c.x + _local13); _local18 = (_local4.m_sweep.c.y + _local14); _local19 = (_local17 - _local15); _local20 = (_local18 - _local16); _local9 = _local3.m_xf.R; _local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y)); _local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y)); _local31 = ((_local29 * _local19) + (_local30 * _local20)); _local32 = 0; if (m_limitState == e_equalLimits){ _local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26)); } else { if (m_limitState == e_atLowerLimit){ _local1 = (_local31 - m_lowerTranslation); _local25 = b2Math.b2Max(_local25, -(_local1)); _local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); } else { if (m_limitState == e_atUpperLimit){ _local1 = (_local31 - m_upperTranslation); _local25 = b2Math.b2Max(_local25, _local1); _local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection); _local32 = (-(m_motorMass) * _local1); _local2 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0); _local32 = (m_limitPositionImpulse - _local2); }; }; }; _local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y)); _local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1)); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y)); _local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:b2Vec2; var _local16:b2Vec2; var _local17:b2Vec2; var _local18:Number; var _local19:Number; var _local20:Number; _local1 = m_body1; _local2 = m_body2; _local3 = _local1.m_xf.R; _local4 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local5 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)); _local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)); _local4 = _local6; _local3 = _local2.m_xf.R; _local7 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local8 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8)); _local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8)); _local7 = _local6; _local9 = (_local1.m_sweep.c.x + _local4); _local10 = (_local1.m_sweep.c.y + _local5); _local11 = (_local2.m_sweep.c.x + _local7); _local12 = (_local2.m_sweep.c.y + _local8); _local13 = (_local11 - _local9); _local14 = (_local12 - _local10); _local15 = _local1.GetWorldVector(m_localXAxis1); _local16 = _local1.m_linearVelocity; _local17 = _local2.m_linearVelocity; _local18 = _local1.m_angularVelocity; _local19 = _local2.m_angularVelocity; _local20 = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4))))); return (_local20); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; _local4 = _local2.m_xf.R; _local14 = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y)); _local15 = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y)); _local16 = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x); _local17 = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y); m_linearJacobian.linear1.x = -(_local14); m_linearJacobian.linear1.y = -(_local15); m_linearJacobian.linear2.x = _local14; m_linearJacobian.linear2.y = _local15; m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14))); m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14)); m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2)); m_linearMass = (1 / m_linearMass); m_angularMass = (_local12 + _local13); if (m_angularMass > Number.MIN_VALUE){ m_angularMass = (1 / m_angularMass); }; if (((m_enableLimit) || (m_enableMotor))){ _local4 = _local2.m_xf.R; _local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y)); _local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y)); m_motorJacobian.linear1.x = -(_local18); m_motorJacobian.linear1.y = -(_local19); m_motorJacobian.linear2.x = _local18; m_motorJacobian.linear2.y = _local19; m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18))); m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18)); m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2)); m_motorMass = (1 / m_motorMass); if (m_enableLimit){ _local20 = (_local16 - _local6); _local21 = (_local17 - _local7); _local22 = ((_local18 * _local20) + (_local19 * _local21)); if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){ m_limitState = e_equalLimits; } else { if (_local22 <= m_lowerTranslation){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local22 >= m_upperTranslation){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; }; }; if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit == false){ m_limitForce = 0; }; if (_arg1.warmStarting){ _local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x))); _local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y))); _local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x))); _local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y))); _local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1))); _local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2))); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28)); } else { m_force = 0; m_torque = 0; m_limitForce = 0; m_motorForce = 0; }; m_limitPositionImpulse = 0; } public function GetMotorForce():Number{ return (m_motorForce); } public function SetMaxMotorForce(_arg1:Number):void{ m_maxMotorForce = _arg1; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } override public function GetReactionTorque():Number{ return (m_torque); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_invMass; _local5 = _local3.m_invMass; _local6 = _local2.m_invI; _local7 = _local3.m_invI; _local9 = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local10 = ((-(_arg1.inv_dt) * m_linearMass) * _local9); m_force = (m_force + _local10); _local11 = (_arg1.dt * _local10); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2)); _local12 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local13 = ((-(_arg1.inv_dt) * m_angularMass) * _local12); m_torque = (m_torque + _local13); _local14 = (_arg1.dt * _local13); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14)); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed); _local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15); _local17 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce); _local16 = (m_motorForce - _local17); _local11 = (_arg1.dt * _local16); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity); _local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local19); } else { if (m_limitState == e_atLowerLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); } else { if (m_limitState == e_atUpperLimit){ _local8 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0); _local19 = (m_limitForce - _local8); }; }; }; _local11 = (_arg1.dt * _local19); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1)); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2)); }; } } }//package Box2D.Dynamics.Joints
Section 80
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PrismaticJointDef extends b2JointDef { public var localAxis1:b2Vec2; public var referenceAngle:Number; public var maxMotorForce:Number; public var motorSpeed:Number; public var upperTranslation:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public var lowerTranslation:Number; public function b2PrismaticJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); localAxis1 = new b2Vec2(); super(); type = b2Joint.e_prismaticJoint; localAxis1.Set(1, 0); referenceAngle = 0; enableLimit = false; lowerTranslation = 0; upperTranslation = 0; enableMotor = false; maxMotorForce = 0; motorSpeed = 0; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); localAxis1 = body1.GetLocalVector(_arg4); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 81
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2PulleyJoint extends b2Joint { public var m_ground:b2Body; public var m_maxLength2:Number; public var m_limitForce1:Number; public var m_maxLength1:Number; public var m_limitState1:int; public var m_limitState2:int; public var m_limitPositionImpulse2:Number; public var m_force:Number; public var m_limitPositionImpulse1:Number; public var m_constant:Number; public var m_state:int; public var m_ratio:Number; public var m_groundAnchor1:b2Vec2; public var m_groundAnchor2:b2Vec2; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; public var m_positionImpulse:Number; public var m_limitMass2:Number; public var m_limitMass1:Number; public var m_pulleyMass:Number; public var m_u1:b2Vec2; public var m_u2:b2Vec2; public var m_limitForce2:Number; public static const b2_minPulleyLength:Number = 2; public function b2PulleyJoint(_arg1:b2PulleyJointDef){ var _local2:b2Mat22; var _local3:Number; var _local4:Number; m_groundAnchor1 = new b2Vec2(); m_groundAnchor2 = new b2Vec2(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_u1 = new b2Vec2(); m_u2 = new b2Vec2(); super(_arg1); m_ground = m_body1.m_world.m_groundBody; m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x); m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y); m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x); m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_ratio = _arg1.ratio; m_constant = (_arg1.length1 + (m_ratio * _arg1.length2)); m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength))); m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio)); m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; } public function GetGroundAnchor2():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor2); return (_local1); } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } override public function GetReactionForce():b2Vec2{ var _local1:b2Vec2; _local1 = m_u2.Copy(); _local1.Multiply(m_force); return (_local1); } override public function SolvePositionConstraints():Boolean{ var _local1:b2Body; var _local2:b2Body; var _local3:b2Mat22; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; _local1 = m_body1; _local2 = m_body2; _local4 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local5 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local6 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local7 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local23 = 0; if (m_state == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u1.Set((_local12 - _local4), (_local13 - _local5)); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local16 = m_u1.Length(); _local17 = m_u2.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local16)); } else { m_u1.SetZero(); }; if (_local17 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local17)); } else { m_u2.SetZero(); }; _local18 = ((m_constant - _local16) - (m_ratio * _local17)); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_pulleyMass) * _local18); _local20 = m_positionImpulse; m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19)); _local19 = (m_positionImpulse - _local20); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local14 = ((-(m_ratio) * _local19) * m_u2.x); _local15 = ((-(m_ratio) * _local19) * m_u2.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local1.SynchronizeTransform(); _local2.SynchronizeTransform(); }; if (m_limitState1 == e_atUpperLimit){ _local3 = _local1.m_xf.R; _local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x); _local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9)); _local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9)); _local8 = _local22; _local12 = (_local1.m_sweep.c.x + _local8); _local13 = (_local1.m_sweep.c.y + _local9); m_u1.Set((_local12 - _local4), (_local13 - _local5)); _local16 = m_u1.Length(); if (_local16 > b2Settings.b2_linearSlop){ m_u1.x = (m_u1.x * (1 / _local16)); m_u1.y = (m_u1.y * (1 / _local16)); } else { m_u1.SetZero(); }; _local18 = (m_maxLength1 - _local16); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass1) * _local18); _local21 = m_limitPositionImpulse1; m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19)); _local19 = (m_limitPositionImpulse1 - _local21); _local12 = (-(_local19) * m_u1.x); _local13 = (-(_local19) * m_u1.y); _local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12)); _local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13)); _local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12)))); _local1.SynchronizeTransform(); }; if (m_limitState2 == e_atUpperLimit){ _local3 = _local2.m_xf.R; _local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y); _local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11)); _local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11)); _local10 = _local22; _local14 = (_local2.m_sweep.c.x + _local10); _local15 = (_local2.m_sweep.c.y + _local11); m_u2.Set((_local14 - _local6), (_local15 - _local7)); _local17 = m_u2.Length(); if (_local17 > b2Settings.b2_linearSlop){ m_u2.x = (m_u2.x * (1 / _local17)); m_u2.y = (m_u2.y * (1 / _local17)); } else { m_u2.SetZero(); }; _local18 = (m_maxLength2 - _local17); _local23 = b2Math.b2Max(_local23, -(_local18)); _local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0); _local19 = (-(m_limitMass2) * _local18); _local21 = m_limitPositionImpulse2; m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19)); _local19 = (m_limitPositionImpulse2 - _local21); _local14 = (-(_local19) * m_u2.x); _local15 = (-(_local19) * m_u2.y); _local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14)); _local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15)); _local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14)))); _local2.SynchronizeTransform(); }; return ((_local23 < b2Settings.b2_linearSlop)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; _local10 = (_local2.m_sweep.c.x + _local5); _local11 = (_local2.m_sweep.c.y + _local6); _local12 = (_local3.m_sweep.c.x + _local8); _local13 = (_local3.m_sweep.c.y + _local9); _local14 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local15 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local16 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local17 = (m_ground.m_xf.position.y + m_groundAnchor2.y); m_u1.Set((_local10 - _local14), (_local11 - _local15)); m_u2.Set((_local12 - _local16), (_local13 - _local17)); _local18 = m_u1.Length(); _local19 = m_u2.Length(); if (_local18 > b2Settings.b2_linearSlop){ m_u1.Multiply((1 / _local18)); } else { m_u1.SetZero(); }; if (_local19 > b2Settings.b2_linearSlop){ m_u2.Multiply((1 / _local19)); } else { m_u2.SetZero(); }; _local20 = ((m_constant - _local18) - (m_ratio * _local19)); if (_local20 > 0){ m_state = e_inactiveLimit; m_force = 0; } else { m_state = e_atUpperLimit; m_positionImpulse = 0; }; if (_local18 < m_maxLength1){ m_limitState1 = e_inactiveLimit; m_limitForce1 = 0; } else { m_limitState1 = e_atUpperLimit; m_limitPositionImpulse1 = 0; }; if (_local19 < m_maxLength2){ m_limitState2 = e_inactiveLimit; m_limitForce2 = 0; } else { m_limitState2 = e_atUpperLimit; m_limitPositionImpulse2 = 0; }; _local21 = ((_local5 * m_u1.y) - (_local6 * m_u1.x)); _local22 = ((_local8 * m_u2.y) - (_local9 * m_u2.x)); m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21)); m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22)); m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2)); m_limitMass1 = (1 / m_limitMass1); m_limitMass2 = (1 / m_limitMass2); m_pulleyMass = (1 / m_pulleyMass); if (_arg1.warmStarting){ _local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x); _local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y); _local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x); _local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25)))); } else { m_force = 0; m_limitForce1 = 0; m_limitForce2 = 0; }; } override public function GetReactionTorque():Number{ return (0); } public function GetRatio():Number{ return (m_ratio); } public function GetLength2():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body2.GetWorldPoint(m_localAnchor2); _local2 = (m_ground.m_xf.position.x + m_groundAnchor2.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor2.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local5 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local6 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6)); _local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6)); _local5 = _local7; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local7; if (m_state == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13)))); _local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18); _local20 = m_force; m_force = b2Math.b2Max(0, (m_force + _local19)); _local19 = (m_force - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x); _local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; if (m_limitState1 == e_atUpperLimit){ _local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6)); _local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5)); _local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11))); _local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18); _local20 = m_limitForce1; m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19)); _local19 = (m_limitForce1 - _local20); _local14 = ((-(_arg1.dt) * _local19) * m_u1.x); _local15 = ((-(_arg1.dt) * _local19) * m_u1.y); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15)); _local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14)))); }; if (m_limitState2 == e_atUpperLimit){ _local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)); _local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)); _local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13))); _local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18); _local20 = m_limitForce2; m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19)); _local19 = (m_limitForce2 - _local20); _local16 = ((-(_arg1.dt) * _local19) * m_u2.x); _local17 = ((-(_arg1.dt) * _local19) * m_u2.y); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16)))); }; } public function GetLength1():Number{ var _local1:b2Vec2; var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; _local1 = m_body1.GetWorldPoint(m_localAnchor1); _local2 = (m_ground.m_xf.position.x + m_groundAnchor1.x); _local3 = (m_ground.m_xf.position.y + m_groundAnchor1.y); _local4 = (_local1.x - _local2); _local5 = (_local1.y - _local3); return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5)))); } public function GetGroundAnchor1():b2Vec2{ var _local1:b2Vec2; _local1 = m_ground.m_xf.position.Copy(); _local1.Add(m_groundAnchor1); return (_local1); } } }//package Box2D.Dynamics.Joints
Section 82
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2PulleyJointDef extends b2JointDef { public var maxLength2:Number; public var length1:Number; public var length2:Number; public var maxLength1:Number; public var ratio:Number; public var groundAnchor1:b2Vec2; public var groundAnchor2:b2Vec2; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public function b2PulleyJointDef(){ groundAnchor1 = new b2Vec2(); groundAnchor2 = new b2Vec2(); localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_pulleyJoint; groundAnchor1.Set(-1, 1); groundAnchor2.Set(1, 1); localAnchor1.Set(-1, 0); localAnchor2.Set(1, 0); length1 = 0; maxLength1 = 0; length2 = 0; maxLength2 = 0; ratio = 1; collideConnected = true; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{ var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; body1 = _arg1; body2 = _arg2; groundAnchor1.SetV(_arg3); groundAnchor2.SetV(_arg4); localAnchor1 = body1.GetLocalPoint(_arg5); localAnchor2 = body2.GetLocalPoint(_arg6); _local8 = (_arg5.x - _arg3.x); _local9 = (_arg5.y - _arg3.y); length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9))); _local10 = (_arg6.x - _arg4.x); _local11 = (_arg6.y - _arg4.y); length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); ratio = _arg7; _local12 = (length1 + (ratio * length2)); maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength)); maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio); } } }//package Box2D.Dynamics.Joints
Section 83
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Common.*; public class b2RevoluteJoint extends b2Joint { public var m_limitForce:Number; public var m_motorForce:Number; public var m_pivotMass:b2Mat22; public var m_enableLimit:Boolean; public var m_limitState:int; public var m_motorMass:Number; public var m_localAnchor1:b2Vec2; public var m_localAnchor2:b2Vec2; private var K1:b2Mat22; private var K2:b2Mat22; private var K3:b2Mat22; private var K:b2Mat22; public var m_pivotForce:b2Vec2; public var m_motorSpeed:Number; public var m_enableMotor:Boolean; public var m_limitPositionImpulse:Number; public var m_maxMotorTorque:Number; public var m_referenceAngle:Number; public var m_lowerAngle:Number; public var m_upperAngle:Number; public static var tImpulse:b2Vec2 = new b2Vec2(); public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){ K = new b2Mat22(); K1 = new b2Mat22(); K2 = new b2Mat22(); K3 = new b2Mat22(); m_localAnchor1 = new b2Vec2(); m_localAnchor2 = new b2Vec2(); m_pivotForce = new b2Vec2(); m_pivotMass = new b2Mat22(); super(_arg1); m_localAnchor1.SetV(_arg1.localAnchor1); m_localAnchor2.SetV(_arg1.localAnchor2); m_referenceAngle = _arg1.referenceAngle; m_pivotForce.Set(0, 0); m_motorForce = 0; m_limitForce = 0; m_limitPositionImpulse = 0; m_lowerAngle = _arg1.lowerAngle; m_upperAngle = _arg1.upperAngle; m_maxMotorTorque = _arg1.maxMotorTorque; m_motorSpeed = _arg1.motorSpeed; m_enableLimit = _arg1.enableLimit; m_enableMotor = _arg1.enableMotor; } override public function GetAnchor1():b2Vec2{ return (m_body1.GetWorldPoint(m_localAnchor1)); } override public function GetAnchor2():b2Vec2{ return (m_body2.GetWorldPoint(m_localAnchor2)); } public function EnableMotor(_arg1:Boolean):void{ m_enableMotor = _arg1; } public function GetUpperLimit():Number{ return (m_upperAngle); } public function GetLowerLimit():Number{ return (m_lowerAngle); } public function SetLimits(_arg1:Number, _arg2:Number):void{ m_lowerAngle = _arg1; m_upperAngle = _arg2; } public function GetMotorSpeed():Number{ return (m_motorSpeed); } override public function GetReactionForce():b2Vec2{ return (m_pivotForce); } override public function SolvePositionConstraints():Boolean{ var _local1:Number; var _local2:Number; var _local3:b2Body; var _local4:b2Body; var _local5:Number; var _local6:b2Mat22; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:Number; var _local25:Number; var _local26:Number; _local3 = m_body1; _local4 = m_body2; _local5 = 0; _local6 = _local3.m_xf.R; _local7 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x); _local8 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8)); _local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8)); _local7 = _local9; _local6 = _local4.m_xf.R; _local10 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x); _local11 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y); _local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11)); _local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11)); _local10 = _local9; _local12 = (_local3.m_sweep.c.x + _local7); _local13 = (_local3.m_sweep.c.y + _local8); _local14 = (_local4.m_sweep.c.x + _local10); _local15 = (_local4.m_sweep.c.y + _local11); _local16 = (_local14 - _local12); _local17 = (_local15 - _local13); _local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17))); _local18 = _local3.m_invMass; _local19 = _local4.m_invMass; _local20 = _local3.m_invI; _local21 = _local4.m_invI; K1.col1.x = (_local18 + _local19); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local18 + _local19); K2.col1.x = ((_local20 * _local8) * _local8); K2.col2.x = ((-(_local20) * _local7) * _local8); K2.col1.y = ((-(_local20) * _local7) * _local8); K2.col2.y = ((_local20 * _local7) * _local7); K3.col1.x = ((_local21 * _local11) * _local11); K3.col2.x = ((-(_local21) * _local10) * _local11); K3.col1.y = ((-(_local21) * _local10) * _local11); K3.col2.y = ((_local21 * _local10) * _local10); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Solve(tImpulse, -(_local16), -(_local17)); _local22 = tImpulse.x; _local23 = tImpulse.y; _local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22)); _local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23)); _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22)))); _local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22)); _local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22)))); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); _local24 = 0; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle); _local26 = 0; if (m_limitState == e_equalLimits){ _local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local24 = b2Math.b2Abs(_local2); } else { if (m_limitState == e_atLowerLimit){ _local2 = (_local25 - m_lowerAngle); _local24 = b2Math.b2Max(0, -(_local2)); _local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); } else { if (m_limitState == e_atUpperLimit){ _local2 = (_local25 - m_upperAngle); _local24 = b2Math.b2Max(0, _local2); _local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection); _local26 = (-(m_motorMass) * _local2); _local1 = m_limitPositionImpulse; m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0); _local26 = (m_limitPositionImpulse - _local1); }; }; }; _local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26)); _local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26)); _local3.SynchronizeTransform(); _local4.SynchronizeTransform(); }; return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop)))); } public function GetJointSpeed():Number{ return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity)); } public function SetMotorSpeed(_arg1:Number):void{ m_motorSpeed = _arg1; } public function SetMaxMotorTorque(_arg1:Number):void{ m_maxMotorTorque = _arg1; } public function GetJointAngle():Number{ return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle)); } override public function InitVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local10 = _local2.m_invMass; _local11 = _local3.m_invMass; _local12 = _local2.m_invI; _local13 = _local3.m_invI; K1.col1.x = (_local10 + _local11); K1.col2.x = 0; K1.col1.y = 0; K1.col2.y = (_local10 + _local11); K2.col1.x = ((_local12 * _local7) * _local7); K2.col2.x = ((-(_local12) * _local6) * _local7); K2.col1.y = ((-(_local12) * _local6) * _local7); K2.col2.y = ((_local12 * _local6) * _local6); K3.col1.x = ((_local13 * _local9) * _local9); K3.col2.x = ((-(_local13) * _local8) * _local9); K3.col1.y = ((-(_local13) * _local8) * _local9); K3.col2.y = ((_local13 * _local8) * _local8); K.SetM(K1); K.AddM(K2); K.AddM(K3); K.Invert(m_pivotMass); m_motorMass = (1 / (_local12 + _local13)); if (m_enableMotor == false){ m_motorForce = 0; }; if (m_enableLimit){ _local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle); if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){ m_limitState = e_equalLimits; } else { if (_local14 <= m_lowerAngle){ if (m_limitState != e_atLowerLimit){ m_limitForce = 0; }; m_limitState = e_atLowerLimit; } else { if (_local14 >= m_upperAngle){ if (m_limitState != e_atUpperLimit){ m_limitForce = 0; }; m_limitState = e_atUpperLimit; } else { m_limitState = e_inactiveLimit; m_limitForce = 0; }; }; }; } else { m_limitForce = 0; }; if (_arg1.warmStarting){ _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y)); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce))); } else { m_pivotForce.SetZero(); m_motorForce = 0; m_limitForce = 0; }; m_limitPositionImpulse = 0; } public function EnableLimit(_arg1:Boolean):void{ m_enableLimit = _arg1; } public function GetMotorTorque():Number{ return (m_motorForce); } override public function GetReactionTorque():Number{ return (m_limitForce); } public function IsLimitEnabled():Boolean{ return (m_enableLimit); } public function IsMotorEnabled():Boolean{ return (m_enableMotor); } override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2Mat22; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; _local2 = m_body1; _local3 = m_body2; _local4 = _local2.m_xf.R; _local6 = (m_localAnchor1.x - _local2.m_sweep.localCenter.x); _local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7)); _local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7)); _local6 = _local5; _local4 = _local3.m_xf.R; _local8 = (m_localAnchor2.x - _local3.m_sweep.localCenter.x); _local9 = (m_localAnchor2.y - _local3.m_sweep.localCenter.y); _local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9)); _local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9)); _local8 = _local5; _local11 = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7)); _local12 = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6)); _local13 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12))); _local14 = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12))); m_pivotForce.x = (m_pivotForce.x + _local13); m_pivotForce.y = (m_pivotForce.y + _local14); _local15 = (_arg1.dt * _local13); _local16 = (_arg1.dt * _local14); _local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15)); _local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16)); _local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15)))); _local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15)); _local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16)); _local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15)))); if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){ _local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed); _local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17); _local19 = m_motorForce; m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque); _local18 = (m_motorForce - _local19); _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18)); }; if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){ _local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity); _local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20); if (m_limitState == e_equalLimits){ m_limitForce = (m_limitForce + _local21); } else { if (m_limitState == e_atLowerLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); } else { if (m_limitState == e_atUpperLimit){ _local10 = m_limitForce; m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0); _local21 = (m_limitForce - _local10); }; }; }; _local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21)); _local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21)); }; } } }//package Box2D.Dynamics.Joints
Section 84
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef) package Box2D.Dynamics.Joints { import Box2D.Common.Math.*; import Box2D.Dynamics.*; public class b2RevoluteJointDef extends b2JointDef { public var referenceAngle:Number; public var upperAngle:Number; public var lowerAngle:Number; public var motorSpeed:Number; public var maxMotorTorque:Number; public var localAnchor1:b2Vec2; public var localAnchor2:b2Vec2; public var enableLimit:Boolean; public var enableMotor:Boolean; public function b2RevoluteJointDef(){ localAnchor1 = new b2Vec2(); localAnchor2 = new b2Vec2(); super(); type = b2Joint.e_revoluteJoint; localAnchor1.Set(0, 0); localAnchor2.Set(0, 0); referenceAngle = 0; lowerAngle = 0; upperAngle = 0; maxMotorTorque = 0; motorSpeed = 0; enableLimit = false; enableMotor = false; } public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{ body1 = _arg1; body2 = _arg2; localAnchor1 = body1.GetLocalPoint(_arg3); localAnchor2 = body2.GetLocalPoint(_arg3); referenceAngle = (body2.GetAngle() - body1.GetAngle()); } } }//package Box2D.Dynamics.Joints
Section 85
//b2Body (Box2D.Dynamics.b2Body) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class b2Body { public var m_xf:b2XForm; public var m_contactList:b2ContactEdge; public var m_angularVelocity:Number; public var m_invI:Number; public var bodyState:String;// = "Unidentified" public var id:String;// = "Unidentified" public var m_shapeCount:int; public var legShot:Boolean;// = false public var m_torque:Number; public var touchedSolid:Boolean;// = false public var m_flags:uint; public var m_linearVelocity:b2Vec2; public var m_world:b2World; public var type:int;// = 0 public var bulletType:String;// = "Unidentified" public var touchedBarricade:Boolean;// = false public var damage:Number; public var pointCollision:b2Vec2; public var m_next:b2Body; public var shouldJump:Boolean;// = false public var m_shapeList:b2Shape; public var touchedClip:MovieClip; public var m_force:b2Vec2; public var m_sweep:b2Sweep; public var touchedChar:Boolean;// = false public var m_mass:Number; public var m_userData; public var m_invMass:Number; public var bodyShot:Boolean;// = false public var faceRight:Boolean;// = false public var m_prev:b2Body; public var impulseApplied:b2Vec2; public var landed:Boolean;// = false public var m_linearDamping:Number; public var m_type:int; public var m_angularDamping:Number; public var touchedTheGround:Boolean;// = false public var normal:b2Vec2; public var hitTheHead:Boolean;// = false public var m_sleepTime:Number; public var m_jointList:b2JointEdge; public var m_I:Number; public var headShot:Boolean;// = false public static var e_fixedRotationFlag:uint = 64; public static var e_frozenFlag:uint = 2; public static var e_maxTypes:uint = 3; public static var e_sleepFlag:uint = 8; private static var s_massData:b2MassData = new b2MassData(); public static var e_bulletFlag:uint = 32; public static var e_staticType:uint = 1; public static var e_islandFlag:uint = 4; public static var e_allowSleepFlag:uint = 16; private static var s_xf1:b2XForm = new b2XForm(); public static var e_dynamicType:uint = 2; public function b2Body(_arg1:b2BodyDef, _arg2:b2World){ var _local3:b2Mat22; var _local4:b2Vec2; id = "Unidentified"; type = 0; normal = new b2Vec2(0, 1); touchedSolid = false; touchedTheGround = false; bodyState = "Unidentified"; landed = false; hitTheHead = false; headShot = false; bodyShot = false; legShot = false; shouldJump = false; touchedBarricade = false; faceRight = false; touchedChar = false; bulletType = "Unidentified"; m_xf = new b2XForm(); m_sweep = new b2Sweep(); m_linearVelocity = new b2Vec2(); m_force = new b2Vec2(); super(); m_flags = 0; if (_arg1.isBullet){ m_flags = (m_flags | e_bulletFlag); }; if (_arg1.fixedRotation){ m_flags = (m_flags | e_fixedRotationFlag); }; if (_arg1.allowSleep){ m_flags = (m_flags | e_allowSleepFlag); }; if (_arg1.isSleeping){ m_flags = (m_flags | e_sleepFlag); }; m_world = _arg2; m_xf.position.SetV(_arg1.position); m_xf.R.Set(_arg1.angle); m_sweep.localCenter.SetV(_arg1.massData.center); m_sweep.t0 = 1; m_sweep.a0 = (m_sweep.a = _arg1.angle); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_jointList = null; m_contactList = null; m_prev = null; m_next = null; m_linearDamping = _arg1.linearDamping; m_angularDamping = _arg1.angularDamping; m_force.Set(0, 0); m_torque = 0; m_linearVelocity.SetZero(); m_angularVelocity = 0; m_sleepTime = 0; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.massData.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.massData.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; m_userData = _arg1.userData; m_shapeList = null; m_shapeCount = 0; } public function SetLinearVelocity(_arg1:b2Vec2):void{ m_linearVelocity.SetV(_arg1); } public function IsSleeping():Boolean{ return (((m_flags & e_sleepFlag) == e_sleepFlag)); } public function SynchronizeTransform():void{ var _local1:b2Mat22; var _local2:b2Vec2; m_xf.R.Set(m_sweep.a); _local1 = m_xf.R; _local2 = m_sweep.localCenter; m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y))); m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y))); } public function SetMassFromShapes():void{ var _local1:b2Shape; var _local2:Number; var _local3:Number; var _local4:b2MassData; var _local5:b2Mat22; var _local6:b2Vec2; var _local7:int; if (m_world.m_lock == true){ return; }; m_mass = 0; m_invMass = 0; m_I = 0; m_invI = 0; _local2 = 0; _local3 = 0; _local4 = s_massData; _local1 = m_shapeList; while (_local1) { _local1.ComputeMass(_local4); m_mass = (m_mass + _local4.mass); _local2 = (_local2 + (_local4.mass * _local4.center.x)); _local3 = (_local3 + (_local4.mass * _local4.center.y)); m_I = (m_I + _local4.I); _local1 = _local1.m_next; }; if (m_mass > 0){ m_invMass = (1 / m_mass); _local2 = (_local2 * m_invMass); _local3 = (_local3 * m_invMass); }; if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){ m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3)))); m_invI = (1 / m_I); } else { m_I = 0; m_invI = 0; }; m_sweep.localCenter.Set(_local2, _local3); _local5 = m_xf.R; _local6 = m_sweep.localCenter; m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y)); m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local1 = m_shapeList; while (_local1) { _local1.UpdateSweepRadius(m_sweep.localCenter); _local1 = _local1.m_next; }; _local7 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local7 != m_type){ _local1 = m_shapeList; while (_local1) { _local1.RefilterProxy(m_world.m_broadPhase, m_xf); _local1 = _local1.m_next; }; }; } public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{ var _local3:b2Shape; var _local4:b2Mat22; var _local5:b2Vec2; var _local6:Boolean; var _local7:Boolean; if (m_world.m_lock == true){ return (true); }; if (IsFrozen()){ return (false); }; m_xf.R.Set(_arg2); m_xf.position.SetV(_arg1); _local4 = m_xf.R; _local5 = m_sweep.localCenter; m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y)); m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); m_sweep.a0 = (m_sweep.a = _arg2); _local6 = false; _local3 = m_shapeList; while (_local3) { _local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf); if (_local7 == false){ _local6 = true; break; }; _local3 = _local3.m_next; }; if (_local6 == true){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local3 = m_shapeList; while (_local3) { _local3.DestroyProxy(m_world.m_broadPhase); _local3 = _local3.m_next; }; return (false); }; m_world.m_broadPhase.Commit(); return (true); } public function 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 GetAngle():Number{ return (m_sweep.a); } public function SynchronizeShapes():Boolean{ var _local1:b2XForm; var _local2:b2Mat22; var _local3:b2Vec2; var _local4:b2Shape; var _local5:Boolean; _local1 = s_xf1; _local1.R.Set(m_sweep.a0); _local2 = _local1.R; _local3 = m_sweep.localCenter; _local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y))); _local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y))); _local5 = true; _local4 = m_shapeList; while (_local4) { _local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf); if (_local5 == false){ break; }; _local4 = _local4.m_next; }; if (_local5 == false){ m_flags = (m_flags | e_frozenFlag); m_linearVelocity.SetZero(); m_angularVelocity = 0; _local4 = m_shapeList; while (_local4) { _local4.DestroyProxy(m_world.m_broadPhase); _local4 = _local4.m_next; }; return (false); }; return (true); } public function SetAngularVelocity(_arg1:Number):void{ m_angularVelocity = _arg1; } public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_local3.x - m_sweep.c.x))))); } public function GetNext():b2Body{ return (m_next); } public function GetMass():Number{ return (m_mass); } public function 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 SetMass(_arg1:b2MassData):void{ var _local2:b2Shape; var _local3:b2Mat22; var _local4:b2Vec2; var _local5:int; if (m_world.m_lock == true){ return; }; m_invMass = 0; m_I = 0; m_invI = 0; m_mass = _arg1.mass; if (m_mass > 0){ m_invMass = (1 / m_mass); }; if ((m_flags & b2Body.e_fixedRotationFlag) == 0){ m_I = _arg1.I; }; if (m_I > 0){ m_invI = (1 / m_I); }; m_sweep.localCenter.SetV(_arg1.center); _local3 = m_xf.R; _local4 = m_sweep.localCenter; m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)); m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)); m_sweep.c.x = (m_sweep.c.x + m_xf.position.x); m_sweep.c.y = (m_sweep.c.y + m_xf.position.y); m_sweep.c0.SetV(m_sweep.c); _local2 = m_shapeList; while (_local2) { _local2.UpdateSweepRadius(m_sweep.localCenter); _local2 = _local2.m_next; }; _local5 = m_type; if ((((m_invMass == 0)) && ((m_invI == 0)))){ m_type = e_staticType; } else { m_type = e_dynamicType; }; if (_local5 != m_type){ _local2 = m_shapeList; while (_local2) { _local2.RefilterProxy(m_world.m_broadPhase, m_xf); _local2 = _local2.m_next; }; }; } public function IsStatic():Boolean{ return ((m_type == e_staticType)); } public function GetWorldVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulMV(m_xf.R, _arg1)); } public function 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 GetWorldCenter():b2Vec2{ return (m_sweep.c); } public function GetUserData(){ return (m_userData); } public function SetUserData(_arg1):void{ m_userData = _arg1; } public function GetLocalVector(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulTMV(m_xf.R, _arg1)); } public function WakeUp():void{ m_flags = (m_flags & ~(e_sleepFlag)); m_sleepTime = 0; } public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{ return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.x - (m_angularVelocity * (_arg1.x - m_sweep.c.x))))); } public function GetPosition():b2Vec2{ return (m_xf.position); } public function GetLocalCenter():b2Vec2{ return (m_sweep.localCenter); } public function IsFrozen():Boolean{ return (((m_flags & e_frozenFlag) == e_frozenFlag)); } public function IsDynamic():Boolean{ return ((m_type == e_dynamicType)); } public function GetInertia():Number{ return (m_I); } public function GetJointList():b2JointEdge{ return (m_jointList); } public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{ return (b2Math.b2MulXT(m_xf, _arg1)); } public function GetXForm():b2XForm{ return (m_xf); } public function ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{ if (IsSleeping()){ WakeUp(); }; m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x)); m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y)); m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)))); } public function GetAngularVelocity():Number{ return (m_angularVelocity); } public function IsConnected(_arg1:b2Body):Boolean{ var _local2:b2JointEdge; _local2 = m_jointList; while (_local2) { if (_local2.other == _arg1){ return ((_local2.joint.m_collideConnected == false)); }; _local2 = _local2.next; }; return (false); } public function SetBullet(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_bulletFlag); } else { m_flags = (m_flags & ~(e_bulletFlag)); }; } public function CreateShape(_arg1:b2ShapeDef):b2Shape{ var _local2:b2Shape; if (m_world.m_lock == true){ return (null); }; _local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator); _local2.id = _arg1.id; _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 IsBullet():Boolean{ return (((m_flags & e_bulletFlag) == e_bulletFlag)); } public function DestroyShape(_arg1:b2Shape):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:Boolean; if (m_world.m_lock == true){ return; }; _arg1.DestroyProxy(m_world.m_broadPhase); _local2 = m_shapeList; _local3 = null; _local4 = false; while (_local2 != null) { if (_local2 == _arg1){ if (_local3){ _local3.m_next = _arg1.m_next; } else { m_shapeList = _arg1.m_next; }; _local4 = true; break; }; _local3 = _local2; _local2 = _local2.m_next; }; _arg1.m_body = null; _arg1.m_next = null; m_shapeCount--; b2Shape.Destroy(_arg1, m_world.m_blockAllocator); } public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{ var _local2:b2Mat22; var _local3:b2Vec2; _local2 = m_xf.R; _local3 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y))); _local3.x = (_local3.x + m_xf.position.x); _local3.y = (_local3.y + m_xf.position.y); return (_local3); } public function GetLinearVelocity():b2Vec2{ return (m_linearVelocity); } public function AllowSleeping(_arg1:Boolean):void{ if (_arg1){ m_flags = (m_flags | e_allowSleepFlag); } else { m_flags = (m_flags & ~(e_allowSleepFlag)); WakeUp(); }; } public function GetWorld():b2World{ return (m_world); } public function ApplyTorque(_arg1:Number):void{ if (IsSleeping()){ WakeUp(); }; m_torque = (m_torque + _arg1); } } }//package Box2D.Dynamics
Section 86
//b2BodyDef (Box2D.Dynamics.b2BodyDef) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; public class b2BodyDef { public var isSleeping:Boolean; public var position:b2Vec2; public var isBullet:Boolean; public var allowSleep:Boolean; public var userData; public var angularDamping:Number; public var fixedRotation:Boolean; public var angle:Number; public var linearDamping:Number; public var massData:b2MassData; public function b2BodyDef(){ massData = new b2MassData(); position = new b2Vec2(); super(); massData.center.SetZero(); massData.mass = 0; massData.I = 0; userData = null; position.Set(0, 0); angle = 0; linearDamping = 0; angularDamping = 0; allowSleep = true; isSleeping = false; fixedRotation = false; isBullet = false; } } }//package Box2D.Dynamics
Section 87
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener) package Box2D.Dynamics { public class b2BoundaryListener { public function Violation(_arg1:b2Body):void{ } } }//package Box2D.Dynamics
Section 88
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; public class b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter); ; public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){ return ((_local3.groupIndex > 0)); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } } }//package Box2D.Dynamics
Section 89
//b2ContactListener (Box2D.Dynamics.b2ContactListener) package Box2D.Dynamics { import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactListener { public function Add(_arg1:b2ContactPoint, _arg2:b2Contact):void{ } public function Remove(_arg1:b2ContactPoint, _arg2:b2Contact):void{ } public function Persist(_arg1:b2ContactPoint, _arg2:b2Contact):void{ } public function Result(_arg1:b2ContactResult, _arg2:b2Contact):void{ } } }//package Box2D.Dynamics
Section 90
//b2ContactManager (Box2D.Dynamics.b2ContactManager) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; public class b2ContactManager extends b2PairCallback { public var m_world:b2World; public var m_destroyImmediate:Boolean; public var m_nullContact:b2NullContact; private static const s_evalCP:b2ContactPoint = new b2ContactPoint(); public function b2ContactManager(){ m_nullContact = new b2NullContact(); super(); m_world = null; m_destroyImmediate = false; } override public function PairAdded(_arg1, _arg2){ var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2Contact; _local3 = (_arg1 as b2Shape); _local4 = (_arg2 as b2Shape); _local5 = _local3.m_body; _local6 = _local4.m_body; if (((_local5.IsStatic()) && (_local6.IsStatic()))){ return (m_nullContact); }; if (_local3.m_body == _local4.m_body){ return (m_nullContact); }; if (_local6.IsConnected(_local5)){ return (m_nullContact); }; if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){ return (m_nullContact); }; _local7 = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator); if (_local7 == null){ return (m_nullContact); }; _local3 = _local7.m_shape1; _local4 = _local7.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local7.m_prev = null; _local7.m_next = m_world.m_contactList; if (m_world.m_contactList != null){ m_world.m_contactList.m_prev = _local7; }; m_world.m_contactList = _local7; _local7.m_node1.contact = _local7; _local7.m_node1.other = _local6; _local7.m_node1.prev = null; _local7.m_node1.next = _local5.m_contactList; if (_local5.m_contactList != null){ _local5.m_contactList.prev = _local7.m_node1; }; _local5.m_contactList = _local7.m_node1; _local7.m_node2.contact = _local7; _local7.m_node2.other = _local5; _local7.m_node2.prev = null; _local7.m_node2.next = _local6.m_contactList; if (_local6.m_contactList != null){ _local6.m_contactList.prev = _local7.m_node2; }; _local6.m_contactList = _local7.m_node2; m_world.m_contactCount++; return (_local7); } override public function PairRemoved(_arg1, _arg2, _arg3):void{ var _local4:b2Contact; if (_arg3 == null){ return; }; _local4 = (_arg3 as b2Contact); if (_local4 == m_nullContact){ return; }; Destroy(_local4); } public function Destroy(_arg1:b2Contact):void{ var _local2:b2Shape; var _local3:b2Shape; var _local4:int; var _local5:b2Body; var _local6:b2Body; var _local7:b2Body; var _local8:b2Body; var _local9:Array; var _local10:b2ContactPoint; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2Vec2; var _local16:b2Vec2; _local2 = _arg1.m_shape1; _local3 = _arg1.m_shape2; _local4 = _arg1.m_manifoldCount; if ((((_local4 > 0)) && (m_world.m_contactListener))){ _local7 = _local2.m_body; _local8 = _local3.m_body; _local9 = _arg1.GetManifolds(); _local10 = s_evalCP; _local10.shape1 = _arg1.m_shape1; _local10.shape2 = _arg1.m_shape2; _local10.friction = _arg1.m_friction; _local10.restitution = _arg1.m_restitution; _local11 = 0; while (_local11 < _local4) { _local12 = _local9[_local11]; _local10.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local10.position = _local7.GetWorldPoint(_local14.localPoint1); _local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1); _local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2); _local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y)); _local10.separation = _local14.separation; _local10.id.key = _local14.id._key; m_world.m_contactListener.Remove(_local10, _arg1); _local13++; }; _local11++; }; }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_world.m_contactList){ m_world.m_contactList = _arg1.m_next; }; _local5 = _local2.m_body; _local6 = _local3.m_body; if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local5.m_contactList){ _local5.m_contactList = _arg1.m_node1.next; }; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local6.m_contactList){ _local6.m_contactList = _arg1.m_node2.next; }; b2Contact.Destroy(_arg1, m_world.m_blockAllocator); m_world.m_contactCount--; } public function Collide():void{ var _local1:b2Contact; var _local2:b2Body; var _local3:b2Body; _local1 = m_world.m_contactList; while (_local1) { _local2 = _local1.m_shape1.m_body; _local3 = _local1.m_shape2.m_body; if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){ } else { _local1.Update(m_world.m_contactListener); }; _local1 = _local1.m_next; }; } } }//package Box2D.Dynamics
Section 91
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; import flash.display.*; public class b2DebugDraw { public var m_xformScale:Number;// = 1 public var m_fillAlpha:Number;// = 1 public var m_alpha:Number;// = 1 public var m_lineThickness:Number;// = 1 public var m_drawFlags:uint; public var m_sprite:Sprite; public var m_drawScale:Number;// = 1 public static var e_coreShapeBit:uint = 4; public static var e_shapeBit:uint = 1; public static var e_centerOfMassBit:uint = 64; public static var e_aabbBit:uint = 8; public static var e_obbBit:uint = 16; public static var e_pairBit:uint = 32; public static var e_jointBit:uint = 2; public function b2DebugDraw(){ m_drawScale = 1; m_lineThickness = 1; m_alpha = 1; m_fillAlpha = 1; m_xformScale = 1; super(); m_drawFlags = 0; } public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); m_sprite.graphics.endFill(); } public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); } public function DrawXForm(_arg1:b2XForm):void{ m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale)); m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha); m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale)); } public function ClearFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags & ~(_arg1)); } public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{ m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha); m_sprite.graphics.moveTo(0, 0); m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha); m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale)); m_sprite.graphics.endFill(); m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale)); m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale)); } public function SetFlags(_arg1:uint):void{ m_drawFlags = _arg1; } public function AppendFlags(_arg1:uint):void{ m_drawFlags = (m_drawFlags | _arg1); } public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{ m_sprite.graphics.lineStyle(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 GetFlags():uint{ return (m_drawFlags); } public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{ var _local4:int; m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha); m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); _local4 = 1; while (_local4 < _arg2) { m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale)); _local4++; }; m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale)); } } }//package Box2D.Dynamics
Section 92
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.Joints.*; public class b2DestructionListener { public function SayGoodbyeJoint(_arg1:b2Joint):void{ } public function SayGoodbyeShape(_arg1:b2Shape):void{ } } }//package Box2D.Dynamics
Section 93
//b2Island (Box2D.Dynamics.b2Island) package Box2D.Dynamics { import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2Island { public var m_joints:Array; public var m_listener:b2ContactListener; public var m_positionIterationCount:int; public var m_bodyCapacity:int; public var m_bodies:Array; public var m_jointCapacity:int; public var m_contactCount:int; public var m_contacts:Array; public var m_contactCapacity:int; public var m_jointCount:int; public var m_allocator; public var m_bodyCount:int; private static var s_reportCR:b2ContactResult = new b2ContactResult(); public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){ var _local6:int; super(); m_bodyCapacity = _arg1; m_contactCapacity = _arg2; m_jointCapacity = _arg3; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_allocator = _arg4; m_listener = _arg5; m_bodies = new Array(_arg1); _local6 = 0; while (_local6 < _arg1) { m_bodies[_local6] = null; _local6++; }; m_contacts = new Array(_arg2); _local6 = 0; while (_local6 < _arg2) { m_contacts[_local6] = null; _local6++; }; m_joints = new Array(_arg3); _local6 = 0; while (_local6 < _arg3) { m_joints[_local6] = null; _local6++; }; m_positionIterationCount = 0; } public function AddBody(_arg1:b2Body):void{ var _local2 = m_bodyCount++; m_bodies[_local2] = _arg1; } public function AddJoint(_arg1:b2Joint):void{ var _local2 = m_jointCount++; m_joints[_local2] = _arg1; } public function Report(_arg1:Array):void{ var _local2:b2Mat22; var _local3:b2Vec2; var _local4:int; var _local5:b2Contact; var _local6:b2ContactConstraint; var _local7:b2ContactResult; var _local8:b2Body; var _local9:int; var _local10:Array; var _local11:int; var _local12:b2Manifold; var _local13:int; var _local14:b2ManifoldPoint; var _local15:b2ContactConstraintPoint; if (m_listener == null){ return; }; _local4 = 0; while (_local4 < m_contactCount) { _local5 = m_contacts[_local4]; _local6 = _arg1[_local4]; _local7 = s_reportCR; _local7.shape1 = _local5.m_shape1; _local7.shape2 = _local5.m_shape2; _local8 = _local7.shape1.m_body; _local9 = _local5.m_manifoldCount; _local10 = _local5.GetManifolds(); _local11 = 0; while (_local11 < _local9) { _local12 = _local10[_local11]; _local7.normal.SetV(_local12.normal); _local13 = 0; while (_local13 < _local12.pointCount) { _local14 = _local12.points[_local13]; _local15 = _local6.points[_local13]; _local7.position = _local8.GetWorldPoint(_local14.localPoint1); _local7.normalImpulse = _local15.normalImpulse; _local7.tangentImpulse = _local15.tangentImpulse; _local7.id.key = _local14.id.key; m_listener.Result(_local7, _local5); _local13++; }; _local11++; }; _local4++; }; } public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{ var _local5:int; var _local6:b2Body; var _local7:b2Joint; var _local8:b2ContactSolver; var _local9:int; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:Number; var _local14:Number; var _local15:Number; _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x)))); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y)))); _local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque)); _local6.m_force.SetZero(); _local6.m_torque = 0; _local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1)); _local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1)); if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){ _local6.m_linearVelocity.Normalize(); _local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity); _local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity); }; if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){ if (_local6.m_angularVelocity < 0){ _local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity); } else { _local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity; }; }; }; _local5++; }; _local8 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local8.InitVelocityConstraints(_arg1); _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitVelocityConstraints(_arg1); _local5++; }; _local5 = 0; while (_local5 < _arg1.maxIterations) { _local8.SolveVelocityConstraints(); _local9 = 0; while (_local9 < m_jointCount) { _local7 = m_joints[_local9]; _local7.SolveVelocityConstraints(_arg1); _local9++; }; _local5++; }; _local8.FinalizeVelocityConstraints(); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.IsStatic()){ } else { _local6.m_sweep.c0.SetV(_local6.m_sweep.c); _local6.m_sweep.a0 = _local6.m_sweep.a; _local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x)); _local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y)); _local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity)); _local6.SynchronizeTransform(); }; _local5++; }; if (_arg3){ _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local7.InitPositionConstraints(); _local5++; }; m_positionIterationCount = 0; while (m_positionIterationCount < _arg1.maxIterations) { _local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte); _local11 = true; _local5 = 0; while (_local5 < m_jointCount) { _local7 = m_joints[_local5]; _local12 = _local7.SolvePositionConstraints(); _local11 = ((_local11) && (_local12)); _local5++; }; if (((_local10) && (_local11))){ break; }; m_positionIterationCount++; }; }; Report(_local8.m_constraints); if (_arg4){ _local13 = Number.MAX_VALUE; _local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance); _local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance); _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; if (_local6.m_invMass == 0){ } else { if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){ _local6.m_sleepTime = 0; _local13 = 0; }; if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){ _local6.m_sleepTime = 0; _local13 = 0; } else { _local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt); _local13 = b2Math.b2Min(_local13, _local6.m_sleepTime); }; }; _local5++; }; if (_local13 >= b2Settings.b2_timeToSleep){ _local5 = 0; while (_local5 < m_bodyCount) { _local6 = m_bodies[_local5]; m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag); _local6.m_linearVelocity.SetZero(); _local6.m_angularVelocity = 0; _local5++; }; }; }; } public function AddContact(_arg1:b2Contact):void{ var _local2 = m_contactCount++; m_contacts[_local2] = _arg1; } public function Clear():void{ m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:int; var _local3:b2ContactSolver; var _local4:Number; var _local5:b2Body; var _local6:Boolean; _local3 = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator); _local2 = 0; while (_local2 < _arg1.maxIterations) { _local3.SolveVelocityConstraints(); _local2++; }; _local2 = 0; while (_local2 < m_bodyCount) { _local5 = m_bodies[_local2]; if (_local5.IsStatic()){ } else { _local5.m_sweep.c0.SetV(_local5.m_sweep.c); _local5.m_sweep.a0 = _local5.m_sweep.a; _local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x)); _local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y)); _local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity)); _local5.SynchronizeTransform(); }; _local2++; }; _local4 = 0.75; _local2 = 0; while (_local2 < _arg1.maxIterations) { _local6 = _local3.SolvePositionConstraints(_local4); if (_local6){ break; }; _local2++; }; Report(_local3.m_constraints); } } }//package Box2D.Dynamics
Section 94
//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 95
//b2World (Box2D.Dynamics.b2World) package Box2D.Dynamics { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.Joints.*; import Box2D.Collision.*; import Box2D.Common.*; import Box2D.Dynamics.Contacts.*; public class b2World { public var m_inv_dt0:Number; public var m_boundaryListener:b2BoundaryListener; public var m_contactList:b2Contact; public var m_blockAllocator; public var m_contactListener:b2ContactListener; public var m_allowSleep:Boolean; public var m_broadPhase:b2BroadPhase; public var m_destructionListener:b2DestructionListener; public var m_jointCount:int; public var m_bodyCount:int; public var m_lock:Boolean; public var m_positionIterationCount:int; public var m_groundBody:b2Body; public var m_contactCount:int; public var m_debugDraw:b2DebugDraw; public var m_contactFilter:b2ContactFilter; public var m_bodyList:b2Body; public var m_stackAllocator; public var m_jointList:b2Joint; public var m_gravity:b2Vec2; public var m_contactManager:b2ContactManager; private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8); public static var m_continuousPhysics:Boolean; public static var m_warmStarting:Boolean; private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6); public static var m_positionCorrection:Boolean; private static var s_xf:b2XForm = new b2XForm(); public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){ var _local4:b2BodyDef; m_contactManager = new b2ContactManager(); super(); m_destructionListener = null; m_boundaryListener = null; m_contactFilter = b2ContactFilter.b2_defaultFilter; m_contactListener = null; m_debugDraw = null; m_bodyList = null; m_contactList = null; m_jointList = null; m_bodyCount = 0; m_contactCount = 0; m_jointCount = 0; m_positionCorrection = true; m_warmStarting = true; m_continuousPhysics = true; m_allowSleep = _arg3; m_gravity = _arg2; m_lock = false; m_inv_dt0 = 0; m_contactManager.m_world = this; m_broadPhase = new b2BroadPhase(_arg1, m_contactManager); _local4 = new b2BodyDef(); m_groundBody = CreateBody(_local4); } public function DrawJoint(_arg1:b2Joint):void{ var _local2:b2Body; var _local3:b2Body; var _local4:b2XForm; var _local5:b2XForm; var _local6:b2Vec2; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2PulleyJoint; var _local12:b2Vec2; var _local13:b2Vec2; _local2 = _arg1.m_body1; _local3 = _arg1.m_body2; _local4 = _local2.m_xf; _local5 = _local3.m_xf; _local6 = _local4.position; _local7 = _local5.position; _local8 = _arg1.GetAnchor1(); _local9 = _arg1.GetAnchor2(); _local10 = s_jointColor; switch (_arg1.m_type){ case b2Joint.e_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 _local1:uint; var _local2:int; var _local3:b2Body; var _local4:b2Shape; var _local5:b2Joint; var _local6:b2BroadPhase; var _local7:b2Vec2; var _local8:b2Vec2; var _local9:b2Vec2; var _local10:b2Color; var _local11:b2XForm; var _local12:b2AABB; var _local13:b2AABB; var _local14:Array; 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(); _local1 = m_debugDraw.GetFlags(); _local7 = new b2Vec2(); _local8 = new b2Vec2(); _local9 = new b2Vec2(); _local10 = new b2Color(0, 0, 0); _local12 = new b2AABB(); _local13 = new b2AABB(); _local14 = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()]; if ((_local1 & b2DebugDraw.e_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 _local2:b2JointEdge; var _local3:b2Shape; var _local4:b2JointEdge; var _local5:b2Shape; if (m_lock == true){ return; }; _local2 = _arg1.m_jointList; while (_local2) { _local4 = _local2; _local2 = _local2.next; if (m_destructionListener){ m_destructionListener.SayGoodbyeJoint(_local4.joint); }; DestroyJoint(_local4.joint); }; _local3 = _arg1.m_shapeList; while (_local3) { _local5 = _local3; _local3 = _local3.m_next; if (m_destructionListener){ m_destructionListener.SayGoodbyeShape(_local5); }; _local5.DestroyProxy(m_broadPhase); b2Shape.Destroy(_local5, m_blockAllocator); }; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_bodyList){ m_bodyList = _arg1.m_next; }; m_bodyCount--; } public function SetContactFilter(_arg1:b2ContactFilter):void{ m_contactFilter = _arg1; } public function GetGroundBody():b2Body{ return (m_groundBody); } public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{ var _local5:b2Color; var _local6:b2CircleShape; var _local7:b2Vec2; var _local8:Number; var _local9:b2Vec2; var _local10:int; var _local11:b2PolygonShape; var _local12:int; var _local13:Array; var _local14:Array; var _local15:Array; _local5 = s_coreColor; switch (_arg1.m_type){ case b2Shape.e_circleShape: _local6 = (_arg1 as b2CircleShape); _local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition); _local8 = _local6.m_radius; _local9 = _arg2.R.col1; m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3); if (_arg4){ m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5); }; break; case b2Shape.e_polygonShape: _local11 = (_arg1 as b2PolygonShape); _local12 = _local11.GetVertexCount(); _local13 = _local11.GetVertices(); _local14 = new Array(b2Settings.b2_maxPolygonVertices); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]); _local10++; }; m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3); if (_arg4){ _local15 = _local11.GetCoreVertices(); _local10 = 0; while (_local10 < _local12) { _local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]); _local10++; }; m_debugDraw.DrawPolygon(_local14, _local12, _local5); }; break; }; } public function GetContactCount():int{ return (m_contactCount); } public function Solve(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Island; var _local4:b2Contact; var _local5:b2Joint; var _local6:int; var _local7:Array; var _local8:b2Body; var _local9:int; var _local10:int; var _local11:b2Body; var _local12:b2ContactEdge; var _local13:b2JointEdge; var _local14:Boolean; m_positionIterationCount = 0; _local3 = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2 = _local2.m_next; }; _local4 = m_contactList; while (_local4) { _local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag)); _local4 = _local4.m_next; }; _local5 = m_jointList; while (_local5) { _local5.m_islandFlag = false; _local5 = _local5.m_next; }; _local6 = m_bodyCount; _local7 = new Array(_local6); _local8 = m_bodyList; while (_local8) { if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){ } else { if (_local8.IsStatic()){ } else { _local3.Clear(); _local9 = 0; var _temp1 = _local9; _local9 = (_local9 + 1); var _local15 = _temp1; _local7[_local15] = _local8; _local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag); while (_local9 > 0) { --_local9; _local2 = _local7[_local9]; _local3.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local12 = _local2.m_contactList; while (_local12) { if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){ } else { if (_local12.contact.m_manifoldCount == 0){ } else { _local3.AddContact(_local12.contact); _local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag); _local11 = _local12.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp2 = _local9; _local9 = (_local9 + 1); var _local16 = _temp2; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; }; _local12 = _local12.next; }; _local13 = _local2.m_jointList; while (_local13) { if (_local13.joint.m_islandFlag == true){ } else { _local3.AddJoint(_local13.joint); _local13.joint.m_islandFlag = true; _local11 = _local13.other; if ((_local11.m_flags & b2Body.e_islandFlag)){ } else { var _temp3 = _local9; _local9 = (_local9 + 1); _local16 = _temp3; _local7[_local16] = _local11; _local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag); }; }; _local13 = _local13.next; }; }; }; _local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep); if (_local3.m_positionIterationCount > m_positionIterationCount){ m_positionIterationCount = _local3.m_positionIterationCount; }; _local10 = 0; while (_local10 < _local3.m_bodyCount) { _local2 = _local3.m_bodies[_local10]; if (_local2.IsStatic()){ _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); }; _local10++; }; }; }; _local8 = _local8.m_next; }; _local2 = m_bodyList; while (_local2) { if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local14 = _local2.SynchronizeShapes(); if ((((_local14 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; }; }; _local2 = _local2.m_next; }; m_broadPhase.Commit(); } public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{ var _local4:Array; var _local5:int; var _local6:int; _local4 = new Array(_arg3); _local5 = m_broadPhase.QueryAABB(_arg1, _local4, _arg3); _local6 = 0; while (_local6 < _local5) { _arg2[_local6] = _local4[_local6]; _local6++; }; return (_local5); } public function SetGravity(_arg1:b2Vec2):void{ m_gravity = _arg1; } public function SolveTOI(_arg1:b2TimeStep):void{ var _local2:b2Body; var _local3:b2Shape; var _local4:b2Shape; var _local5:b2Body; var _local6:b2Body; var _local7:b2ContactEdge; var _local8:b2Island; var _local9:int; var _local10:Array; var _local11:b2Contact; var _local12:b2Contact; var _local13:Number; var _local14:b2Body; var _local15:int; var _local16:b2TimeStep; var _local17:int; var _local18:Number; var _local19:Number; var _local20:b2Body; var _local21:Boolean; _local8 = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener); _local9 = m_bodyCount; _local10 = new Array(_local9); _local2 = m_bodyList; while (_local2) { _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); _local2.m_sweep.t0 = 0; _local2 = _local2.m_next; }; _local11 = m_contactList; while (_local11) { _local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local11 = _local11.m_next; }; while (true) { _local12 = null; _local13 = 1; _local11 = m_contactList; for (;_local11;(_local11 = _local11.m_next)) { if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){ } else { _local18 = 1; if ((_local11.m_flags & b2Contact.e_toiFlag)){ _local18 = _local11.m_toi; } else { _local3 = _local11.m_shape1; _local4 = _local11.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){ continue; }; _local19 = _local5.m_sweep.t0; if (_local5.m_sweep.t0 < _local6.m_sweep.t0){ _local19 = _local6.m_sweep.t0; _local5.m_sweep.Advance(_local19); } else { if (_local6.m_sweep.t0 < _local5.m_sweep.t0){ _local19 = _local5.m_sweep.t0; _local6.m_sweep.Advance(_local19); }; }; _local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep); if ((((_local18 > 0)) && ((_local18 < 1)))){ _local18 = (((1 - _local18) * _local19) + _local18); if (_local18 > 1){ _local18 = 1; }; }; _local11.m_toi = _local18; _local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag); }; if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){ _local12 = _local11; _local13 = _local18; }; }; }; if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){ break; }; _local3 = _local12.m_shape1; _local4 = _local12.m_shape2; _local5 = _local3.m_body; _local6 = _local4.m_body; _local5.Advance(_local13); _local6.Advance(_local13); _local12.Update(m_contactListener); _local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag)); if (_local12.m_manifoldCount == 0){ } else { _local14 = _local5; if (_local14.IsStatic()){ _local14 = _local6; }; _local8.Clear(); _local15 = 0; var _temp1 = _local15; _local15 = (_local15 + 1); var _local22 = _temp1; _local10[_local22] = _local14; _local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag); while (_local15 > 0) { --_local15; _local2 = _local10[_local15]; _local8.AddBody(_local2); _local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag)); if (_local2.IsStatic()){ } else { _local7 = _local2.m_contactList; while (_local7) { if (_local8.m_contactCount == _local8.m_contactCapacity){ } else { if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){ } else { if (_local7.contact.m_manifoldCount == 0){ } else { _local8.AddContact(_local7.contact); _local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag); _local20 = _local7.other; if ((_local20.m_flags & b2Body.e_islandFlag)){ } else { if (_local20.IsStatic() == false){ _local20.Advance(_local13); _local20.WakeUp(); }; var _temp2 = _local15; _local15 = (_local15 + 1); var _local23 = _temp2; _local10[_local23] = _local20; _local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag); }; }; }; }; _local7 = _local7.next; }; }; }; _local16 = new b2TimeStep(); _local16.dt = ((1 - _local13) * _arg1.dt); _local16.inv_dt = (1 / _local16.dt); _local16.maxIterations = _arg1.maxIterations; _local8.SolveTOI(_local16); _local17 = 0; while (_local17 < _local8.m_bodyCount) { _local2 = _local8.m_bodies[_local17]; _local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag)); if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){ } else { if (_local2.IsStatic()){ } else { _local21 = _local2.SynchronizeShapes(); if ((((_local21 == false)) && (!((m_boundaryListener == null))))){ m_boundaryListener.Violation(_local2); }; _local7 = _local2.m_contactList; while (_local7) { _local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag)); _local7 = _local7.next; }; }; }; _local17++; }; _local17 = 0; while (_local17 < _local8.m_contactCount) { _local11 = _local8.m_contacts[_local17]; _local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag))); _local17++; }; m_broadPhase.Commit(); }; }; } public function GetJointList():b2Joint{ return (m_jointList); } public function Validate():void{ m_broadPhase.Validate(); } public function GetPairCount():int{ return (m_broadPhase.m_pairManager.m_pairCount); } public function GetBodyList():b2Body{ return (m_bodyList); } public function SetWarmStarting(_arg1:Boolean):void{ m_warmStarting = _arg1; } public function SetPositionCorrection(_arg1:Boolean):void{ m_positionCorrection = _arg1; } public function CreateJoint(_arg1:b2JointDef):b2Joint{ var _local2:b2Joint; var _local3:b2Body; var _local4:b2Shape; _local2 = b2Joint.Create(_arg1, m_blockAllocator); _local2.m_prev = null; _local2.m_next = m_jointList; if (m_jointList){ m_jointList.m_prev = _local2; }; m_jointList = _local2; m_jointCount++; _local2.m_node1.joint = _local2; _local2.m_node1.other = _local2.m_body2; _local2.m_node1.prev = null; _local2.m_node1.next = _local2.m_body1.m_jointList; if (_local2.m_body1.m_jointList){ _local2.m_body1.m_jointList.prev = _local2.m_node1; }; _local2.m_body1.m_jointList = _local2.m_node1; _local2.m_node2.joint = _local2; _local2.m_node2.other = _local2.m_body1; _local2.m_node2.prev = null; _local2.m_node2.next = _local2.m_body2.m_jointList; if (_local2.m_body2.m_jointList){ _local2.m_body2.m_jointList.prev = _local2.m_node2; }; _local2.m_body2.m_jointList = _local2.m_node2; if (_arg1.collideConnected == false){ _local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2; _local4 = _local3.m_shapeList; while (_local4) { _local4.RefilterProxy(m_broadPhase, _local3.m_xf); _local4 = _local4.m_next; }; }; return (_local2); } public function DestroyJoint(_arg1:b2Joint):void{ var _local2:Boolean; var _local3:b2Body; var _local4:b2Body; var _local5:b2Body; var _local6:b2Shape; _local2 = _arg1.m_collideConnected; if (_arg1.m_prev){ _arg1.m_prev.m_next = _arg1.m_next; }; if (_arg1.m_next){ _arg1.m_next.m_prev = _arg1.m_prev; }; if (_arg1 == m_jointList){ m_jointList = _arg1.m_next; }; _local3 = _arg1.m_body1; _local4 = _arg1.m_body2; _local3.WakeUp(); _local4.WakeUp(); if (_arg1.m_node1.prev){ _arg1.m_node1.prev.next = _arg1.m_node1.next; }; if (_arg1.m_node1.next){ _arg1.m_node1.next.prev = _arg1.m_node1.prev; }; if (_arg1.m_node1 == _local3.m_jointList){ _local3.m_jointList = _arg1.m_node1.next; }; _arg1.m_node1.prev = null; _arg1.m_node1.next = null; if (_arg1.m_node2.prev){ _arg1.m_node2.prev.next = _arg1.m_node2.next; }; if (_arg1.m_node2.next){ _arg1.m_node2.next.prev = _arg1.m_node2.prev; }; if (_arg1.m_node2 == _local4.m_jointList){ _local4.m_jointList = _arg1.m_node2.next; }; _arg1.m_node2.prev = null; _arg1.m_node2.next = null; b2Joint.Destroy(_arg1, m_blockAllocator); m_jointCount--; if (_local2 == false){ _local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4; _local6 = _local5.m_shapeList; while (_local6) { _local6.RefilterProxy(m_broadPhase, _local5.m_xf); _local6 = _local6.m_next; }; }; } public function SetContactListener(_arg1:b2ContactListener):void{ m_contactListener = _arg1; } public function CreateBody(_arg1:b2BodyDef):b2Body{ var _local2:b2Body; if (m_lock == true){ return (null); }; _local2 = new b2Body(_arg1, this); _local2.m_prev = null; _local2.m_next = m_bodyList; if (m_bodyList){ m_bodyList.m_prev = _local2; }; m_bodyList = _local2; m_bodyCount++; return (_local2); } public function SetBoundaryListener(_arg1:b2BoundaryListener):void{ m_boundaryListener = _arg1; } public function SetDestructionListener(_arg1:b2DestructionListener):void{ m_destructionListener = _arg1; } public function Step(_arg1:Number, _arg2:int):void{ var _local3:b2TimeStep; m_lock = true; _local3 = new b2TimeStep(); _local3.dt = _arg1; _local3.maxIterations = _arg2; if (_arg1 > 0){ _local3.inv_dt = (1 / _arg1); } else { _local3.inv_dt = 0; }; _local3.dtRatio = (m_inv_dt0 * _arg1); _local3.positionCorrection = m_positionCorrection; _local3.warmStarting = m_warmStarting; m_contactManager.Collide(); if (_local3.dt > 0){ Solve(_local3); }; if (((m_continuousPhysics) && ((_local3.dt > 0)))){ SolveTOI(_local3); }; DrawDebugData(); m_inv_dt0 = _local3.inv_dt; m_lock = false; } public function GetBodyCount():int{ return (m_bodyCount); } public function GetJointCount():int{ return (m_jointCount); } } }//package Box2D.Dynamics
Section 96
//AdLoader (CPMStar.AdLoader) package CPMStar { import flash.display.*; import flash.events.*; import flash.net.*; import flash.system.*; public class AdLoader extends Sprite { private var contentspotid:String; private var cpmstarLoader:Loader; public function AdLoader(_arg1:String){ this.contentspotid = _arg1; addEventListener(Event.ADDED, addedHandler); } private function addedHandler(_arg1:Event):void{ var _local2:String; var _local3:DisplayObjectContainer; removeEventListener(Event.ADDED, addedHandler); Security.allowDomain("server.cpmstar.com"); _local2 = "http://server.cpmstar.com/adviewas3.swf"; _local3 = parent; cpmstarLoader = new Loader(); cpmstarLoader.contentLoaderInfo.addEventListener(Event.INIT, dispatchHandler); cpmstarLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dispatchHandler); cpmstarLoader.load(new URLRequest(((_local2 + "?contentspotid=") + contentspotid))); addChild(cpmstarLoader); } private function dispatchHandler(_arg1:Event):void{ dispatchEvent(_arg1); } } }//package CPMStar
Section 97
//KeyPoll (input.KeyPoll) package input { import flash.display.*; import flash.events.*; import flash.utils.*; public class KeyPoll { private var states:ByteArray; private var dispObj:DisplayObject; public function KeyPoll(_arg1:DisplayObject){ states = new ByteArray(); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); states.writeUnsignedInt(0); dispObj = _arg1; dispObj.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener, false, 0, true); dispObj.addEventListener(KeyboardEvent.KEY_UP, keyUpListener, false, 1, true); dispObj.addEventListener(Event.ACTIVATE, activateListener, false, 0, true); dispObj.addEventListener(Event.DEACTIVATE, deactivateListener, false, 0, true); } public function isUp(_arg1:uint):Boolean{ return (((states[(_arg1 >>> 3)] & (1 << (_arg1 & 7))) == 0)); } private function activateListener(_arg1:Event):void{ var _local2:int; _local2 = 0; while (_local2 < 32) { states[_local2] = 0; _local2++; }; } private function deactivateListener(_arg1:Event=null):void{ var _local2:int; _local2 = 0; while (_local2 < 32) { states[_local2] = 0; _local2++; }; } public function isDown(_arg1:uint):Boolean{ return (!(((states[(_arg1 >>> 3)] & (1 << (_arg1 & 7))) == 0))); } public function destroy():void{ if (dispObj){ dispObj.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); dispObj.removeEventListener(KeyboardEvent.KEY_UP, keyUpListener); dispObj.removeEventListener(Event.ACTIVATE, activateListener); dispObj.removeEventListener(Event.DEACTIVATE, deactivateListener); }; } private function keyDownListener(_arg1:KeyboardEvent):void{ states[(_arg1.keyCode >>> 3)] = (states[(_arg1.keyCode >>> 3)] | (1 << (_arg1.keyCode & 7))); } private function keyUpListener(_arg1:KeyboardEvent):void{ states[(_arg1.keyCode >>> 3)] = (states[(_arg1.keyCode >>> 3)] & ~((1 << (_arg1.keyCode & 7)))); } } }//package input
Section 98
//MochiDigits (mochi.as3.MochiDigits) package mochi.as3 { public final class MochiDigits { private var Sibling:MochiDigits; private var Fragment:Number; private var Encoder:Number; public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{ Encoder = 0; setValue(_arg1, _arg2); } public function set value(_arg1:Number):void{ setValue(_arg1); } public function reencode():void{ var _local1:uint; _local1 = int((2147483647 * Math.random())); Fragment = (Fragment ^ (_local1 ^ Encoder)); Encoder = _local1; } public function toString():String{ var _local1:String; _local1 = String.fromCharCode((Fragment ^ Encoder)); if (Sibling != null){ _local1 = (_local1 + Sibling.toString()); }; return (_local1); } public function get value():Number{ return (Number(this.toString())); } public function setValue(_arg1:Number=0, _arg2:uint=0):void{ var _local3:String; _local3 = _arg1.toString(); var _temp1 = _arg2; _arg2 = (_arg2 + 1); Fragment = (_local3.charCodeAt(_temp1) ^ Encoder); if (_arg2 < _local3.length){ Sibling = new MochiDigits(_arg1, _arg2); } else { Sibling = null; }; reencode(); } public function addValue(_arg1:Number):void{ value = (value + _arg1); } } }//package mochi.as3
Section 99
//MochiScores (mochi.as3.MochiScores) package mochi.as3 { import flash.display.*; import flash.text.*; public class MochiScores { private static var boardID:String; public static var onErrorHandler:Object; public static var onCloseHandler:Object; public static function showLeaderboard(_arg1:Object=null):void{ var n:Number; var options = _arg1; if (options != null){ if (options.clip != null){ if ((options.clip is Sprite)){ MochiServices.setContainer(options.clip); }; delete options.clip; } else { MochiServices.setContainer(); }; MochiServices.stayOnTop(); if (options.name != null){ if ((options.name is TextField)){ if (options.name.text.length > 0){ options.name = options.name.text; }; }; }; if (options.score != null){ if ((options.score is TextField)){ if (options.score.text.length > 0){ options.score = options.score.text; }; } else { if ((options.score is MochiDigits)){ options.score = options.score.value; }; }; n = Number(options.score); if (isNaN(n)){ } else { if ((((n == Number.NEGATIVE_INFINITY)) || ((n == Number.POSITIVE_INFINITY)))){ } else { if (Math.floor(n) != n){ }; options.score = n; }; }; }; if (options.onDisplay != null){ options.onDisplay(); } else { if (MochiServices.clip != null){ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); //unresolved jump }; }; }; } else { options = {}; if ((MochiServices.clip is MovieClip)){ MochiServices.clip.stop(); //unresolved jump }; }; if (options.onClose != null){ onCloseHandler = options.onClose; } else { onCloseHandler = function ():void{ if ((MochiServices.clip is MovieClip)){ MochiServices.clip.play(); //unresolved jump }; }; }; if (options.onError != null){ onErrorHandler = options.onError; } else { onErrorHandler = null; }; if (options.boardID == null){ if (MochiScores.boardID != null){ options.boardID = MochiScores.boardID; }; }; MochiServices.send("scores_showLeaderboard", {options:options}, null, onClose); } public static function closeLeaderboard():void{ MochiServices.send("scores_closeLeaderboard"); } public static function getPlayerInfo(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_getPlayerInfo", null, _arg1, _arg2); } public static function requestList(_arg1:Object, _arg2:Object=null):void{ MochiServices.send("scores_requestList", null, _arg1, _arg2); } public static function scoresArrayToObjects(_arg1:Object):Object{ var _local2:Object; var _local3:Number; var _local4:Number; var _local5:Object; var _local6:Object; var _local7:String; var _local8:String; _local2 = {}; for (_local7 in _arg1) { if (typeof(_arg1[_local7]) == "object"){ if (((!((_arg1[_local7].cols == null))) && (!((_arg1[_local7].rows == null))))){ _local2[_local7] = []; _local5 = _arg1[_local7]; _local4 = 0; while (_local4 < _local5.rows.length) { _local6 = {}; _local3 = 0; while (_local3 < _local5.cols.length) { _local6[_local5.cols[_local3]] = _local5.rows[_local4][_local3]; _local3++; }; _local2[_local7].push(_local6); _local4++; }; } else { _local2[_local7] = {}; for (_local8 in _arg1[_local7]) { _local2[_local7][_local8] = _arg1[_local7][_local8]; }; }; } else { _local2[_local7] = _arg1[_local7]; }; }; return (_local2); } public static function submit(_arg1:Number, _arg2:String, _arg3:Object=null, _arg4:Object=null):void{ _arg1 = Number(_arg1); if (isNaN(_arg1)){ } else { if ((((_arg1 == Number.NEGATIVE_INFINITY)) || ((_arg1 == Number.POSITIVE_INFINITY)))){ } else { if (Math.floor(_arg1) != _arg1){ }; _arg1 = Number(_arg1); }; }; MochiServices.send("scores_submit", {score:_arg1, name:_arg2}, _arg3, _arg4); } public static function onClose(_arg1:Object=null):void{ if (_arg1 != null){ if (_arg1.error != null){ if (_arg1.error == true){ if (onErrorHandler != null){ if (_arg1.errorCode == null){ _arg1.errorCode = "IOError"; }; onErrorHandler(_arg1.errorCode); MochiServices.doClose(); return; }; }; }; }; onCloseHandler(); MochiServices.doClose(); } public static function setBoardID(_arg1:String):void{ MochiScores.boardID = _arg1; MochiServices.send("scores_setBoardID", {boardID:_arg1}); } } }//package mochi.as3
Section 100
//MochiServices (mochi.as3.MochiServices) package mochi.as3 { import flash.geom.*; import flash.display.*; import flash.events.*; import flash.utils.*; import flash.net.*; import flash.system.*; public class MochiServices { private static var _container:Object; private static var _connected:Boolean = false; private static var _swfVersion:String; public static var netupAttempted:Boolean = false; private static var _sendChannel:LocalConnection; private static var _clip:MovieClip; private static var _loader:Loader; private static var _id:String; private static var _listenChannel:LocalConnection; public static var widget:Boolean = false; private static var _timer:Timer; private static var _sendChannelName:String; private static var _connecting:Boolean = false; public static var onError:Object; private static var _listenChannelName:String = "__ms_"; private static var _servicesURL:String = "http://www.mochiads.com/static/lib/services/services.swf"; public static var netup:Boolean = true; public static function isNetworkAvailable():Boolean{ return (!((Security.sandboxType == "localWithFile"))); } public static function get connected():Boolean{ return (_connected); } private static function flush(_arg1:Boolean):void{ var _local2:Object; var _local3:Object; if (_clip != null){ if (_clip._queue != null){ while (_clip._queue.length > 0) { _local2 = _clip._queue.shift(); _local3 = null; if (_local2 != null){ if (_local2.callbackID != null){ _local3 = _clip._callbacks[_local2.callbackID]; }; delete _clip._callbacks[_local2.callbackID]; if (((_arg1) && (!((_local3 == null))))){ handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod); }; }; }; }; }; } public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{ if (_connected){ _sendChannel.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); } else { if ((((_clip == null)) || (!(_connecting)))){ onError("NotConnected"); handleError(_arg2, _arg3, _arg4); flush(true); return; }; _clip._queue.push({methodName:_arg1, args:_arg2, callbackID:_clip._nextcallbackID}); }; if (_clip != null){ if (((!((_clip._callbacks == null))) && (!((_clip._nextcallbackID == null))))){ _clip._callbacks[_clip._nextcallbackID] = {callbackObject:_arg3, callbackMethod:_arg4}; _clip._nextcallbackID++; }; }; } private static function init(_arg1:String, _arg2:Object):void{ _id = _arg1; if (_arg2 != null){ _container = _arg2; loadCommunicator(_arg1, _container); }; } public static function get childClip():Object{ return (_clip); } private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{ var _local3:Array; var _local4:int; var _local5:Array; var _local6:Array; var _local7:MovieClip; var _local8:LocalConnection; var _local9:String; var _local10:ByteArray; var _local11:ByteArray; var _local12:uint; var _local13:uint; var _local14:Loader; _local3 = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23]; _local5 = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3]; _local6 = [0, 64, 0, 0, 0]; _local7 = new MovieClip(); _local8 = new LocalConnection(); _local9 = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().getTime())); _local8 = new LocalConnection(); _local7.lc = _local8; _local7.click = _arg2; _local8.client = _local7; _local8.connect(_local9); _local10 = new ByteArray(); _local11 = new ByteArray(); _local11.endian = Endian.LITTLE_ENDIAN; _local11.writeShort(1); _local11.writeUTFBytes(((_arg1 + " ") + _local9)); _local11.writeByte(0); _local12 = ((_local3.length + _local11.length) + 4); _local13 = (_local12 + 35); _local10.endian = Endian.LITTLE_ENDIAN; _local10.writeUTFBytes("FWS"); _local10.writeByte(8); _local10.writeUnsignedInt(_local13); for each (_local4 in _local5) { _local10.writeByte(_local4); }; _local10.writeUnsignedInt(_local12); _local10.writeByte(136); _local10.writeShort(_local11.length); _local10.writeBytes(_local11); for each (_local4 in _local3) { _local10.writeByte(_local4); }; for each (_local4 in _local6) { _local10.writeByte(_local4); }; _local14 = new Loader(); _local14.loadBytes(_local10); _local7.addChild(_local14); return (_local7); } public static function stayOnTop():void{ _container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true); if (_clip != null){ _clip.visible = true; }; } public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{ var vars:Object; var avm1Click:DisplayObject; var s:String; var i:Number; var x:String; var req:URLRequest; var loader:Loader; var setURL:Function; var err:Function; var complete:Function; var url = _arg1; var burl = _arg2; var btn = _arg3; var onClick = _arg4; vars = new Object(); vars["mav"] = getVersion(); vars["swfv"] = "9"; vars["swfurl"] = btn.loaderInfo.loaderURL; vars["fv"] = Capabilities.version; vars["os"] = Capabilities.os; vars["lang"] = Capabilities.language; vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY); s = "?"; i = 0; for (x in vars) { if (i != 0){ s = (s + "&"); }; i = (i + 1); s = (((s + x) + "=") + escape(vars[x])); }; req = new URLRequest("http://x.mochiads.com/linkping.swf"); loader = new Loader(); setURL = function (_arg1:String):void{ var _local2:Rectangle; if (avm1Click){ btn.removeChild(avm1Click); }; avm1Click = clickMovie(_arg1, onClick); _local2 = btn.getBounds(btn); btn.addChild(avm1Click); avm1Click.x = _local2.x; avm1Click.y = _local2.y; avm1Click.scaleX = (0.01 * _local2.width); avm1Click.scaleY = (0.01 * _local2.height); }; err = function (_arg1:Object):void{ netup = false; _arg1.target.removeEventListener(_arg1.type, arguments.callee); setURL(burl); }; complete = function (_arg1:Object):void{ _arg1.target.removeEventListener(_arg1.type, arguments.callee); }; if (netup){ setURL((url + s)); } else { setURL(burl); }; if (!((netupAttempted) || (_connected))){ netupAttempted = true; loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete); loader.load(req); }; } public static function disconnect():void{ if (((_connected) || (_connecting))){ if (_clip != null){ if (_clip.parent != null){ if ((_clip.parent is Sprite)){ Sprite(_clip.parent).removeChild(_clip); _clip = null; }; }; }; _connecting = (_connected = false); flush(true); try { _listenChannel.close(); } catch(error:Error) { }; }; if (_timer != null){ try { _timer.stop(); } catch(error:Error) { }; }; } public static function allowDomains(_arg1:String):String{ var _local2:String; if (Security.sandboxType != "application"){ Security.allowDomain("*"); Security.allowInsecureDomain("*"); }; if (_arg1.indexOf("http://") != -1){ _local2 = _arg1.split("/")[2].split(":")[0]; if (Security.sandboxType != "application"){ Security.allowDomain(_local2); Security.allowInsecureDomain(_local2); }; }; return (_local2); } public static function getVersion():String{ return ("3.0"); } public static function doClose():void{ _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); if (_clip.parent != null){ Sprite(_clip.parent).removeChild(_clip); }; } private static function onStatus(_arg1:StatusEvent):void{ switch (_arg1.level){ case "error": _connected = false; _listenChannel.connect(_listenChannelName); break; }; } public static function get id():String{ return (_id); } private static function urlOptions(_arg1:Object):Object{ var _local2:Object; var _local3:String; var _local4:Array; var _local5:Number; var _local6:Array; _local2 = {}; _local3 = _arg1.loaderInfo.parameters.mochiad_options; if (_local3){ _local4 = _local3.split("&"); _local5 = 0; while (_local5 < _local4.length) { _local6 = _local4[_local5].split("="); _local2[unescape(_local6[0])] = unescape(_local6[1]); _local5++; }; }; return (_local2); } public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{ if (_arg1 != null){ if ((_arg1 is Sprite)){ _container = _arg1; }; }; if (_arg2){ if ((_container is Sprite)){ Sprite(_container).addChild(_clip); }; }; } private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{ var args = _arg1; var callbackObject = _arg2; var callbackMethod = _arg3; if (args != null){ if (args.onError != null){ args.onError.apply(null, ["NotConnected"]); }; if (((!((args.options == null))) && (!((args.options.onError == null))))){ args.options.onError.apply(null, ["NotConnected"]); }; }; if (callbackMethod != null){ args = {}; args.error = true; args.errorCode = "NotConnected"; if (((!((callbackObject == null))) && ((callbackMethod is String)))){ try { var _local5 = callbackObject; _local5[callbackMethod](args); } catch(error:Error) { }; } else { if (callbackMethod != null){ try { callbackMethod.apply(args); } catch(error:Error) { }; }; }; }; } private static function initComChannels():void{ if (!_connected){ _sendChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"}); _sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion(), parentURL:_container.loaderInfo.loaderURL}); _listenChannel.addEventListener(StatusEvent.STATUS, MochiServices.onStatus); _clip.onReceive = function (_arg1:Object):void{ var cb:String; var cblst:Object; var method:*; var methodName:String; var obj:Object; var pkg = _arg1; cb = pkg.callbackID; cblst = this.client._callbacks[cb]; if (!cblst){ return; }; method = cblst.callbackMethod; methodName = ""; obj = cblst.callbackObject; if (((obj) && ((typeof(method) == "string")))){ methodName = method; if (obj[method] != null){ method = obj[method]; //unresolved jump }; }; if (method != undefined){ try { method.apply(obj, pkg.args); } catch(error:Error) { }; } else { if (obj != null){ try { obj(pkg.args); } catch(error:Error) { }; }; }; delete this.client._callbacks[cb]; }; _clip.onError = function ():void{ MochiServices.onError("IOError"); }; _connecting = false; _connected = true; while (_clip._queue.length > 0) { _sendChannel.send(_sendChannelName, "onReceive", _clip._queue.shift()); }; }; } private static function listen():void{ _listenChannel = new LocalConnection(); _listenChannel.client = _clip; _clip.handshake = function (_arg1:Object):void{ MochiServices.comChannelName = _arg1.newChannel; }; _listenChannel.allowDomain("*", "localhost"); _listenChannel.allowInsecureDomain("*", "localhost"); _listenChannel.connect(_listenChannelName); } public static function set comChannelName(_arg1:String):void{ if (_arg1 != null){ if (_arg1.length > 3){ _sendChannelName = (_arg1 + "_fromgame"); initComChannels(); }; }; } private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{ var clipname:String; var f:Function; var req:URLRequest; var vars:URLVariables; var id = _arg1; var clip = _arg2; clipname = ("_mochiservices_com_" + id); if (_clip != null){ return (_clip); }; if (!MochiServices.isNetworkAvailable()){ return (null); }; if (urlOptions(clip).servicesURL != undefined){ _servicesURL = urlOptions(clip).servicesURL; }; MochiServices.allowDomains(_servicesURL); _clip = createEmptyMovieClip(clip, clipname, 10336, false); _loader = new Loader(); f = function (_arg1:Object):void{ _clip._mochiad_ctr_failed = true; MochiServices.disconnect(); MochiServices.onError("IOError"); }; _listenChannelName = (_listenChannelName + ((Math.floor(new Date().getTime()) + "_") + Math.floor((Math.random() * 99999)))); _loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, f); req = new URLRequest(_servicesURL); vars = new URLVariables(); vars.listenLC = _listenChannelName; vars.mochiad_options = clip.loaderInfo.parameters.mochiad_options; if (widget){ vars.widget = true; }; req.data = vars; listen(); _loader.load(req); _clip.addChild(_loader); _clip._mochiservices_com = _loader; _sendChannel = new LocalConnection(); _clip._queue = []; _clip._nextcallbackID = 0; _clip._callbacks = {}; _timer = new Timer(10000, 1); _timer.addEventListener(TimerEvent.TIMER, connectWait); _timer.start(); return (_clip); } public static function get clip():Object{ return (_container); } public static function bringToTop(_arg1:Event):void{ var e = _arg1; if (MochiServices.clip != null){ if (MochiServices.childClip != null){ try { if (MochiServices.clip.numChildren > 1){ MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1)); }; } catch(errorObject:Error) { _container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop); }; }; }; } public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{ var id = _arg1; var clip = _arg2; var onError = _arg3; if ((clip is DisplayObject)){ if (((!(_connected)) && ((_clip == null)))){ _connecting = true; init(id, clip); }; //unresolved jump }; if (onError != null){ MochiServices.onError = onError; } else { if (MochiServices.onError == null){ MochiServices.onError = function (_arg1:String):void{ }; }; }; } public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number, _arg4:Boolean=true):MovieClip{ var mc:MovieClip; var parent = _arg1; var name = _arg2; var depth = _arg3; var doAdd = _arg4; mc = new MovieClip(); if (doAdd){ if (((false) && (depth))){ parent.addChildAt(mc, depth); } else { parent.addChild(mc); }; }; try { parent[name] = mc; } catch(e:Error) { throw (new Error("MochiServices requires a clip that is an instance of a dynamic class. If your class extends Sprite or MovieClip, you must make it dynamic.")); }; mc["_name"] = name; return (mc); } public static function connectWait(_arg1:TimerEvent):void{ if (!_connected){ _clip._mochiad_ctr_failed = true; MochiServices.disconnect(); MochiServices.onError("IOError"); }; } } }//package mochi.as3
Section 101
//ConcurrentModificationException (org.idmedia.as3commons.lang.ConcurrentModificationException) package org.idmedia.as3commons.lang { public class ConcurrentModificationException extends Exception { public function ConcurrentModificationException(_arg1:String=""){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 102
//Exception (org.idmedia.as3commons.lang.Exception) package org.idmedia.as3commons.lang { public class Exception extends Throwable { public function Exception(_arg1:String){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 103
//IllegalStateException (org.idmedia.as3commons.lang.IllegalStateException) package org.idmedia.as3commons.lang { public class IllegalStateException extends Exception { public function IllegalStateException(_arg1:String=""){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 104
//IndexOutOfBoundsException (org.idmedia.as3commons.lang.IndexOutOfBoundsException) package org.idmedia.as3commons.lang { public class IndexOutOfBoundsException extends Exception { public function IndexOutOfBoundsException(_arg1:String=""){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 105
//NoSuchElementException (org.idmedia.as3commons.lang.NoSuchElementException) package org.idmedia.as3commons.lang { public class NoSuchElementException extends Exception { public function NoSuchElementException(_arg1:String=""){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 106
//NullPointerException (org.idmedia.as3commons.lang.NullPointerException) package org.idmedia.as3commons.lang { public class NullPointerException extends Exception { public function NullPointerException(_arg1:String=""){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 107
//Throwable (org.idmedia.as3commons.lang.Throwable) package org.idmedia.as3commons.lang { import flash.utils.*; public class Throwable extends Error { public function Throwable(_arg1:String){ super(_arg1); } public function getName():String{ return (getQualifiedClassName(this)); } public function getMessage():String{ return (message); } } }//package org.idmedia.as3commons.lang
Section 108
//UnsupportedOperationException (org.idmedia.as3commons.lang.UnsupportedOperationException) package org.idmedia.as3commons.lang { public class UnsupportedOperationException extends Exception { public function UnsupportedOperationException(_arg1:String=""){ super(_arg1); } } }//package org.idmedia.as3commons.lang
Section 109
//AbstractCollection (org.idmedia.as3commons.util.AbstractCollection) package org.idmedia.as3commons.util { import org.idmedia.as3commons.lang.*; public class AbstractCollection implements Collection { public function addAll(_arg1:Collection):Boolean{ var _local2:Boolean; var _local3:Iterator; _local2 = false; _local3 = _arg1.iterator(); while (_local3.hasNext()) { if (add(_local3.next())){ _local2 = true; }; }; return (_local2); } public function containsAll(_arg1:Collection):Boolean{ var _local2:Iterator; _local2 = _arg1.iterator(); while (_local2.hasNext()) { if (!contains(_local2.next())){ return (false); }; }; return (true); } public function isEmpty():Boolean{ return ((size() == 0)); } public function remove(_arg1=null):Boolean{ var _local2:Iterator; _local2 = iterator(); while (_local2.hasNext()) { if (_local2.next() == _arg1){ _local2.remove(); return (true); }; }; return (false); } public function size():int{ return (0); } public function clear():void{ var _local1:Iterator; _local1 = iterator(); while (_local1.hasNext()) { _local1.next(); _local1.remove(); }; } public function add(_arg1):Boolean{ throw (new UnsupportedOperationException()); } public function toArray():Array{ var _local1:Array; var _local2:Iterator; _local1 = new Array(); _local2 = iterator(); while (_local2.hasNext()) { _local1.push(_local2.next()); }; return (_local1); } public function contains(_arg1):Boolean{ return ((toArray().indexOf(_arg1) > -1)); } public function iterator():Iterator{ return (null); } public function equals(_arg1):Boolean{ return ((_arg1 === this)); } } }//package org.idmedia.as3commons.util
Section 110
//AbstractList (org.idmedia.as3commons.util.AbstractList) package org.idmedia.as3commons.util { import org.idmedia.as3commons.lang.*; public class AbstractList extends AbstractCollection implements List { private var modCount:int;// = 0 public function AbstractList(){ modCount = 0; super(); } override public function addAll(_arg1:Collection):Boolean{ throw (new UnsupportedOperationException()); } override public function clear():void{ removeRange(0, size()); } public function get(_arg1:int){ return (null); } public function indexOf(_arg1=null):int{ return (toArray().indexOf(_arg1)); } private function removeRange(_arg1:int, _arg2:int):void{ var _local3:ListIterator; var _local4:int; var _local5:int; _local3 = indexedListIterator(_arg1); _local4 = 0; _local5 = (_arg2 - _arg1); while (_local4 < _local5) { _local3.next(); _local3.remove(); _local4++; }; } override public function add(_arg1):Boolean{ return (addAt(size(), _arg1)); } public function removeAtTo(_arg1:int, _arg2:int):Boolean{ throw (new UnsupportedOperationException()); } public function listIterator():ListIterator{ return (new ListIteratorImpl(this)); } override public function iterator():Iterator{ return (new ListIteratorImpl(this)); } public function removeAt(_arg1:int):Boolean{ throw (new UnsupportedOperationException()); } public function removeAtAndReturn(_arg1:int){ throw (new UnsupportedOperationException()); } public function addAt(_arg1:int, _arg2):Boolean{ throw (new UnsupportedOperationException()); } public function setAt(_arg1:int, _arg2):Boolean{ throw (new UnsupportedOperationException()); } public function indexedListIterator(_arg1:uint):ListIterator{ var _local2:ListIterator; if ((((_arg1 < 0)) || ((_arg1 > size())))){ throw (new IndexOutOfBoundsException(("Index: " + _arg1))); }; _local2 = listIterator(); _local2.setIndex(_arg1); return (_local2); } } }//package org.idmedia.as3commons.util import org.idmedia.as3commons.lang.*; class ListIteratorImpl extends IteratorImpl implements ListIterator { private function ListIteratorImpl(_arg1:List){ super(_arg1); } public function setIndex(_arg1:int):void{ if ((((_arg1 < 0)) || ((_arg1 >= list.size())))){ throw (new IndexOutOfBoundsException(("Index: " + _arg1))); }; cursor = _arg1; } public function add(_arg1):void{ var object = _arg1; try { list.addAt(cursor++, object); lastRet = -1; } catch(e:IndexOutOfBoundsException) { throw (new ConcurrentModificationException()); }; } public function previousIndex():int{ return ((cursor - 1)); } public function nextIndex():int{ return (cursor); } public function setValue(_arg1):void{ var object = _arg1; if (lastRet == -1){ throw (new IllegalStateException()); }; try { list.setAt(lastRet, object); } catch(e:IndexOutOfBoundsException) { throw (new ConcurrentModificationException()); }; } public function hasPrevious():Boolean{ return (!((cursor == 0))); } public function previous(){ var i:int; var previousValue:*; try { i = (cursor - 1); previousValue = list.get(i); lastRet = (cursor = i); return (previousValue); } catch(e:IndexOutOfBoundsException) { throw (new NoSuchElementException()); }; } } class IteratorImpl implements Iterator { protected var lastRet:int;// = -1 protected var cursor:int;// = 0 protected var list:List; private function IteratorImpl(_arg1:List){ cursor = 0; lastRet = -1; super(); this.list = _arg1; } public function next(){ var nextValue:*; try { nextValue = list.get(cursor); lastRet = cursor; cursor++; return (nextValue); } catch(e:IndexOutOfBoundsException) { throw (new NoSuchElementException()); }; } public function remove():void{ if (lastRet == -1){ throw (new IllegalStateException()); }; try { list.removeAt(lastRet); if (lastRet < cursor){ cursor--; }; lastRet = -1; } catch(e:IndexOutOfBoundsException) { throw (new ConcurrentModificationException(e.getMessage())); }; } public function hasNext():Boolean{ return ((cursor < list.size())); } }
Section 111
//ArrayList (org.idmedia.as3commons.util.ArrayList) package org.idmedia.as3commons.util { import org.idmedia.as3commons.lang.*; public class ArrayList extends AbstractList implements List { private var elementData:Array; private var elementSize:int; public function ArrayList(_arg1:Collection=null){ elementData = new Array(); elementSize = 0; if (_arg1 != null){ elementData = elementData.concat(_arg1.toArray()); elementSize = elementData.length; }; } override public function addAll(_arg1:Collection):Boolean{ var _local2:Array; var _local3:int; if (_arg1 == null){ throw (new NullPointerException()); }; _local2 = _arg1.toArray(); _local3 = (elementSize + _local2.length); elementData = elementData.concat(_local2); elementSize = elementData.length; return ((elementSize === _local3)); } override public function isEmpty():Boolean{ return ((elementSize == 0)); } override public function size():int{ return (((elementSize) || (0))); } override public function clear():void{ elementData = new Array(); elementSize = 0; } private function rangeCheck(_arg1:int):void{ if ((((_arg1 >= elementSize)) || ((_arg1 < 0)))){ throw (new IndexOutOfBoundsException((((("Index: " + _arg1) + ", ") + "Size: ") + elementSize))); }; } public function removeAtToAndReturn(_arg1:int, _arg2:int){ var _local3:*; rangeCheck(_arg1); _local3 = get(_arg1); removeAtTo(_arg1, _arg2); return (_local3); } override public function get(_arg1:int){ rangeCheck(_arg1); return (elementData[_arg1]); } override public function toArray():Array{ return ([].concat(elementData)); } override public function add(_arg1):Boolean{ var _local2 = elementSize++; elementData[_local2] = _arg1; return (true); } override public function removeAtAndReturn(_arg1:int){ return (removeAtToAndReturn(_arg1, 1)); } override public function removeAt(_arg1:int):Boolean{ return (removeAtTo(_arg1, 1)); } override public function removeAtTo(_arg1:int, _arg2:int):Boolean{ rangeCheck(_arg1); elementData.splice(_arg1, _arg2); elementSize = elementData.length; return (true); } override public function addAt(_arg1:int, _arg2):Boolean{ var _local3:Array; var _local4:Array; rangeCheck(_arg1); _local3 = elementData.slice(0, _arg1); _local4 = elementData.slice(_arg1); elementData = _local3.concat(_arg2).concat(_local4); elementSize = elementData.length; return (true); } override public function setAt(_arg1:int, _arg2):Boolean{ rangeCheck(_arg1); elementData[_arg1] = _arg2; return (true); } } }//package org.idmedia.as3commons.util
Section 112
//Collection (org.idmedia.as3commons.util.Collection) package org.idmedia.as3commons.util { public interface Collection { function addAll(_arg1:Collection):Boolean; function add(_arg1):Boolean; function containsAll(_arg1:Collection):Boolean; function isEmpty():Boolean; function remove(_arg1=null):Boolean; function clear():void; function iterator():Iterator; function size():int; function toArray():Array; function contains(_arg1):Boolean; } }//package org.idmedia.as3commons.util
Section 113
//Iterator (org.idmedia.as3commons.util.Iterator) package org.idmedia.as3commons.util { public interface Iterator { function next(); function remove():void; function hasNext():Boolean; } }//package org.idmedia.as3commons.util
Section 114
//List (org.idmedia.as3commons.util.List) package org.idmedia.as3commons.util { public interface List extends Collection { function indexOf(_arg1=null):int; function listIterator():ListIterator; function removeAtAndReturn(_arg1:int); function addAt(_arg1:int, _arg2):Boolean; function setAt(_arg1:int, _arg2):Boolean; function get(_arg1:int); function removeAt(_arg1:int):Boolean; function removeAtTo(_arg1:int, _arg2:int):Boolean; function indexedListIterator(_arg1:uint):ListIterator; } }//package org.idmedia.as3commons.util
Section 115
//ListIterator (org.idmedia.as3commons.util.ListIterator) package org.idmedia.as3commons.util { public interface ListIterator extends Iterator { function add(_arg1):void; function setValue(_arg1):void; function setIndex(_arg1:int):void; function hasPrevious():Boolean; function previous(); function previousIndex():int; function nextIndex():int; } }//package org.idmedia.as3commons.util
Section 116
//Billboard (p_billboard.Billboard) package p_billboard { import Box2D.Common.Math.*; import flash.display.*; import flash.events.*; import p_singleton.*; import flash.utils.*; import flash.text.*; public class Billboard { public var initialWidth:Number; public var timer:Timer; public var lifeTime:Number; public var initialHeight:Number; public var speed:int; public var contents:TextField; public var image:MovieClip; public var counter:Number; public var direction:b2Vec2; public function Billboard(_arg1:String, _arg2:int, _arg3:int, _arg4:int=20){ image = new billboard_text(); MovieClip(image).content.text = _arg1; this.lifeTime = _arg4; image.x = _arg2; image.y = _arg3; timer = new Timer(100); timer.addEventListener(TimerEvent.TIMER, reduceAlpha); counter = _arg4; World.getInstance().menuRoot.addChild(image); timer.start(); speed = 5; direction = new b2Vec2(); direction.x = 0; direction.y = -1; initialWidth = image.width; initialHeight = image.height; } public function reduceAlpha(_arg1:TimerEvent):void{ counter--; image.alpha = (counter / lifeTime); image.x = (image.x + (speed * direction.x)); image.y = (image.y + (speed * direction.y)); image.width = ((initialWidth * counter) / lifeTime); image.height = ((initialHeight * counter) / lifeTime); if (image.alpha <= 0){ if (World.getInstance().menuRoot.contains(image)){ World.getInstance().menuRoot.removeChild(image); }; timer.stop(); timer.removeEventListener(TimerEvent.TIMER, reduceAlpha); }; } } }//package p_billboard
Section 117
//MousePointer (p_crosshair.MousePointer) package p_crosshair { import flash.display.*; import flash.events.*; import p_singleton.*; public class MousePointer { public var type:String; public var image:MovieClip; public function addListener():void{ if (!image.hasEventListener(Event.ENTER_FRAME)){ image.addEventListener(Event.ENTER_FRAME, movePointer); }; } public function removeListener():void{ if (image.hasEventListener(Event.ENTER_FRAME)){ image.removeEventListener(Event.ENTER_FRAME, movePointer); }; } public function destroy():void{ if (World.getInstance().menuRoot.contains(image)){ World.getInstance().menuRoot.removeChild(image); }; removeListener(); } public function movePointer(_arg1:Event):void{ if (image.stage){ image.x = image.stage.mouseX; image.y = image.stage.mouseY; }; } } }//package p_crosshair
Section 118
//MousePointerType (p_crosshair.MousePointerType) package p_crosshair { public class MousePointerType { public static var CROSS:String = "cross"; public static var BULDOZER:String = "buldozer"; public static var WIND:String = "wind"; public static var TALK:String = "talk"; public static var HAND:String = "hand"; } }//package p_crosshair
Section 119
//WindCrossHair (p_crosshair.WindCrossHair) package p_crosshair { import p_singleton.*; public class WindCrossHair extends MousePointer { public function WindCrossHair(){ image = new crosshairWind(); type = MousePointerType.WIND; World.getInstance().menuRoot.addChild(image); addListener(); } } }//package p_crosshair
Section 120
//Ball (p_entity.Ball) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import p_singleton.*; public class Ball extends MovieClip { public var friction:Number; public var bodyType:int; public var bodyDef:b2BodyDef; public var circleDef:b2CircleDef; public var position:b2Vec2; public var image:MovieClip; public var imageInitialXPosition:Number;// = 0 public var direction:b2Vec2; public var restitution:Number; public var body:b2Body; public var screenPosition:b2Vec2; public var angle:Number; public var density:Number; public function Ball(){ imageInitialXPosition = 0; super(); angle = 0; density = 1; friction = 0; restitution = 1; bodyType = BodyType.BALL; position = new b2Vec2(); screenPosition = new b2Vec2(); } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function initRigidBody():void{ var _local1:b2World; _local1 = World.getInstance().physicWorld; if (_local1){ circleDef = new b2CircleDef(); circleDef.density = density; circleDef.friction = friction; circleDef.restitution = restitution; circleDef.radius = (image.head.width / (2 * 30)); circleDef.localPosition = new b2Vec2((image.head.x / (1 * 30)), (image.head.y / (1 * 30))); bodyDef = new b2BodyDef(); bodyDef.userData = this.image; bodyDef.position.Set((image.x / World.physScale), (image.y / World.physScale)); body = _local1.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); body.m_mass = 1000; body.type = bodyType; }; } public function update():void{ this.image.x = position.x; this.image.y = position.y; this.image.rotation = angle; } } }//package p_entity
Section 121
//Balloon (p_entity.Balloon) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import flash.events.*; import p_singleton.*; import flash.utils.*; public class Balloon extends MovieClip { public var friction:Number; public var bodyType:int; public var bodyDef:b2BodyDef; public var circleDef:b2CircleDef; public var position:b2Vec2; public var image:MovieClip; public var imageInitialXPosition:Number;// = 0 public var direction:b2Vec2; public var restitution:Number; public var body:b2Body; public var dieTimer:Timer; public var bonusScore:Number; public var screenPosition:b2Vec2; public var angle:Number; public var velocity:b2Vec2; public var density:Number; public var speedX:Number; public var speedY:Number; public function Balloon(){ imageInitialXPosition = 0; super(); angle = 0; density = 0; friction = 1; restitution = 0; bodyType = BodyType.BALLOON; position = new b2Vec2(); screenPosition = new b2Vec2(); speedX = -1; speedY = -2; velocity = new b2Vec2(speedX, speedY); bonusScore = 500; dieTimer = new Timer(500); dieTimer.addEventListener(TimerEvent.TIMER, removeFromList); } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function removeFromList(_arg1:TimerEvent):void{ dieTimer.stop(); dieTimer.removeEventListener(TimerEvent.TIMER, removeFromList); World.getInstance().sceneRoot.removeChild(image); } public function initRigidBody():void{ var _local1:b2World; _local1 = World.getInstance().physicWorld; if (_local1){ circleDef = new b2CircleDef(); circleDef.density = density; circleDef.friction = friction; circleDef.restitution = restitution; circleDef.radius = (image.head.width / (2 * 30)); circleDef.localPosition = new b2Vec2((image.head.x / (1 * 30)), (image.head.y / (1 * 30))); bodyDef = new b2BodyDef(); bodyDef.userData = this.image; bodyDef.position.Set((image.x / World.physScale), (image.y / World.physScale)); body = _local1.CreateBody(bodyDef); body.CreateShape(circleDef); body.SetMassFromShapes(); body.type = bodyType; }; } public function update():void{ position.y = (position.y + velocity.y); position.x = (position.x + velocity.x); if (position.y < 30){ speedY = 2; velocity.y = speedY; } else { if (position.y > 200){ speedY = -2; velocity.y = speedY; }; }; this.image.x = position.x; this.image.y = position.y; this.image.rotation = angle; } } }//package p_entity
Section 122
//Bird (p_entity.Bird) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import p_singleton.*; public class Bird extends MovieClip { public var friction:Number; public var bodyType:int; public var limitY:Number;// = 10 public var bodyDef:b2BodyDef; public var position:b2Vec2; public var diffY:Number; public var image:MovieClip; public var imageInitialXPosition:Number;// = 0 public var polygonDef:b2PolygonDef; public var initialPositionY:Number; public var direction:b2Vec2; public var restitution:Number; public var body:b2Body; public var screenPosition:b2Vec2; public var angle:Number; public var velocity:b2Vec2; public var density:Number; public var speedY:Number;// = 5 public function Bird(){ imageInitialXPosition = 0; limitY = 10; speedY = 5; super(); angle = 0; density = 1; friction = 0; restitution = 1; bodyType = BodyType.BIRD; position = new b2Vec2(); screenPosition = new b2Vec2(); velocity = new b2Vec2(-30, speedY); } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function initRigidBody():void{ var _local1:b2World; _local1 = World.getInstance().physicWorld; if (_local1){ polygonDef = new b2PolygonDef(); polygonDef.density = density; polygonDef.friction = friction; polygonDef.restitution = restitution; polygonDef.SetAsOrientedBox((image.body.width / (2 * 30)), (image.body.height / (2 * 30)), new b2Vec2((image.body.x / (1 * 30)), (image.body.y / (1 * 30)))); polygonDef.filter.groupIndex = bodyType; bodyDef = new b2BodyDef(); bodyDef.userData = this.image; bodyDef.position.Set((image.x / World.physScale), (image.y / World.physScale)); bodyDef.fixedRotation = true; body = _local1.CreateBody(bodyDef); body.CreateShape(polygonDef); body.m_linearDamping = 20; body.SetMassFromShapes(); body.type = bodyType; body.SetLinearVelocity(velocity); }; } public function update():void{ this.image.x = position.x; this.image.y = position.y; this.image.rotation = angle; diffY = (position.y - initialPositionY); if (diffY > limitY){ velocity.y = (speedY * -1); } else { if (diffY < (limitY * -1)){ velocity.y = speedY; }; }; if (body){ body.SetLinearVelocity(velocity); }; } } }//package p_entity
Section 123
//BodyType (p_entity.BodyType) package p_entity { public class BodyType { public static var HOUSE:int = 3; public static var PLANE:int = 2; public static var WALL:int = 1; public static var BALLOON:int = 6; public static var BIRD:int = 8; public static var CEILING:int = 4; public static var TREE:int = 5; public static var BALL:int = 7; } }//package p_entity
Section 124
//Ceiling (p_entity.Ceiling) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import p_singleton.*; public class Ceiling extends MovieClip { public var friction:Number; public var bodyDef:b2BodyDef; public var restitution:Number; public var polygonDef:b2PolygonDef; public var body:b2Body; public var density:Number; public function Ceiling(){ density = 0; friction = 0; restitution = 0; } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function initRigidBody():void{ var _local1:b2World; var _local2:Number; _local1 = World.getInstance().physicWorld; if (_local1){ _local2 = rotation; rotation = 0; polygonDef = new b2PolygonDef(); polygonDef.SetAsBox((width / (2 * 30)), (height / (2 * 30))); polygonDef.density = density; polygonDef.friction = friction; polygonDef.restitution = restitution; polygonDef.filter.groupIndex = BodyType.CEILING; rotation = _local2; bodyDef = new b2BodyDef(); bodyDef.userData = this; bodyDef.position.Set((x / World.physScale), (y / World.physScale)); bodyDef.angle = b2Math.degreesToRadians(rotation); body = _local1.CreateBody(bodyDef); body.CreateShape(polygonDef); body.SetMassFromShapes(); body.type = BodyType.CEILING; }; } } }//package p_entity
Section 125
//Entity (p_entity.Entity) package p_entity { import Box2D.Common.Math.*; import flash.display.*; public class Entity { public var position:b2Vec2; public var angle:Number; public var screenPosition:b2Vec2; public var image:MovieClip; public var direction:b2Vec2; public function Entity(){ position = new b2Vec2(); screenPosition = new b2Vec2(); direction = new b2Vec2(); } public function update():void{ if (image){ image.x = position.x; image.y = position.y; image.rotation = angle; }; } } }//package p_entity
Section 126
//House (p_entity.House) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import p_singleton.*; public class House extends MovieClip { public var friction:Number; public var bodyType:int; public var bodyDef:b2BodyDef; public var position:b2Vec2; public var image:MovieClip; public var imageInitialXPosition:Number;// = 0 public var health:Number; public var polygonDef:b2PolygonDef; public var direction:b2Vec2; public var restitution:Number; public var body:b2Body; public var bonusScore:Number;// = 100 public var screenPosition:b2Vec2; public var angle:Number; public var maxHealth:Number; public var density:Number; public function House(){ imageInitialXPosition = 0; bonusScore = 100; super(); angle = 0; density = 0; friction = 1; restitution = 0; bodyType = BodyType.HOUSE; position = new b2Vec2(); screenPosition = new b2Vec2(); } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function initRigidBody():void{ var _local1:b2World; var _local2:Number; _local1 = World.getInstance().physicWorld; if (_local1){ _local2 = rotation; rotation = 0; polygonDef = new b2PolygonDef(); polygonDef.SetAsOrientedBox((image.body.width / (2 * 30)), (image.body.height / (2 * 30)), new b2Vec2((image.body.x / (1 * 30)), (image.body.y / (1 * 30)))); rotation = _local2; polygonDef.density = density; polygonDef.friction = friction; polygonDef.restitution = restitution; bodyDef = new b2BodyDef(); bodyDef.userData = this.image; bodyDef.position.Set((image.x / World.physScale), (image.y / World.physScale)); bodyDef.angle = b2Math.degreesToRadians(rotation); body = _local1.CreateBody(bodyDef); body.CreateShape(polygonDef); body.SetMassFromShapes(); body.type = bodyType; }; } public function update():void{ this.x = position.x; this.y = position.y; this.rotation = angle; } } }//package p_entity
Section 127
//MedalInfo (p_entity.MedalInfo) package p_entity { import flash.display.*; import flash.events.*; import flash.utils.*; public class MedalInfo { public var timer:Timer; public var image:MovieClip; public function MedalInfo(){ image = new medalInfoClip(); timer = new Timer(3000); timer.addEventListener(TimerEvent.TIMER, goOutOfScreen); } public function goInOfScreen(_arg1:MovieClip, _arg2:String):void{ if (image){ if (image.menu.clipHolder.numChildren > 0){ image.menu.clipHolder.removeChildAt(0); }; image.menu.clipHolder.addChild(_arg1); _arg1.gotoAndStop(2); image.menu.medalName.text = _arg2; image.gotoAndPlay("in"); timer.start(); }; } public function goOutOfScreen(_arg1:TimerEvent):void{ if (image){ image.gotoAndPlay("out"); timer.stop(); }; } } }//package p_entity
Section 128
//Tree (p_entity.Tree) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import p_singleton.*; public class Tree extends MovieClip { public var friction:Number; public var bodyType:int; public var bodyDef:b2BodyDef; public var circleDef:b2CircleDef; public var position:b2Vec2; public var image:MovieClip; public var imageInitialXPosition:Number;// = 0 public var health:Number; public var polygonDef:b2PolygonDef; public var direction:b2Vec2; public var restitution:Number; public var body:b2Body; public var bonusScore:Number;// = 100 public var screenPosition:b2Vec2; public var angle:Number; public var maxHealth:Number; public var density:Number; public function Tree(){ imageInitialXPosition = 0; bonusScore = 100; super(); angle = 0; density = 0; friction = 1; restitution = 0; bodyType = BodyType.TREE; position = new b2Vec2(); screenPosition = new b2Vec2(); } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function initRigidBody():void{ var _local1:b2World; _local1 = World.getInstance().physicWorld; if (_local1){ circleDef = new b2CircleDef(); circleDef.density = density; circleDef.friction = friction; circleDef.restitution = restitution; circleDef.radius = (image.head.width / (2 * 30)); circleDef.localPosition = new b2Vec2((image.head.x / (1 * 30)), (image.head.y / (1 * 30))); polygonDef = new b2PolygonDef(); polygonDef.SetAsOrientedBox((image.body.width / (2 * 30)), (image.body.height / (2 * 30)), new b2Vec2((image.body.x / (1 * 30)), (image.body.y / (1 * 30)))); polygonDef.density = density; polygonDef.friction = friction; polygonDef.restitution = restitution; bodyDef = new b2BodyDef(); bodyDef.userData = this.image; bodyDef.position.Set((image.x / World.physScale), (image.y / World.physScale)); body = _local1.CreateBody(bodyDef); body.CreateShape(circleDef); body.CreateShape(polygonDef); body.SetMassFromShapes(); body.type = bodyType; }; } public function update():void{ this.x = position.x; this.y = position.y; this.rotation = angle; } } }//package p_entity
Section 129
//Wall (p_entity.Wall) package p_entity { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import p_singleton.*; public class Wall extends MovieClip { public var friction:Number; public var bodyDef:b2BodyDef; public var restitution:Number; public var polygonDef:b2PolygonDef; public var body:b2Body; public var density:Number; public function Wall(){ density = 0; friction = 1; restitution = 0; } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } public function initRigidBody():void{ var _local1:b2World; var _local2:Number; _local1 = World.getInstance().physicWorld; if (_local1){ _local2 = rotation; rotation = 0; polygonDef = new b2PolygonDef(); polygonDef.SetAsBox((width / (2 * 30)), (height / (2 * 30))); polygonDef.density = density; polygonDef.friction = friction; polygonDef.restitution = restitution; polygonDef.filter.groupIndex = BodyType.WALL; rotation = _local2; bodyDef = new b2BodyDef(); bodyDef.userData = this; bodyDef.position.Set((x / World.physScale), (y / World.physScale)); bodyDef.angle = b2Math.degreesToRadians(rotation); body = _local1.CreateBody(bodyDef); body.CreateShape(polygonDef); body.SetMassFromShapes(); body.type = BodyType.WALL; }; } } }//package p_entity
Section 130
//GameState (p_gameState.GameState) package p_gameState { import flash.display.*; public class GameState extends MovieClip { public function GameState(){ attach(); } public function attach():void{ } public function detach():void{ } public function update():void{ } } }//package p_gameState
Section 131
//InGameState (p_gameState.InGameState) package p_gameState { import Box2D.Common.Math.*; import p_entity.*; import flash.geom.*; import flash.display.*; import flash.events.*; import p_singleton.*; import p_level.*; import flash.utils.*; import p_billboard.*; import mochi.as3.*; import input.*; import p_crosshair.*; import p_plane.*; import p_particle.*; import flash.media.*; import CPMStar.*; import flash.ui.*; public class InGameState extends GameState { public var screenOption:MovieClip; public var pauseScreen:MovieClip; public var pushPower:Number;// = 80 public var music:Sound; public var tempDistanceScore:int;// = 0 public var ableToRetry:Boolean;// = true public var totalScoreTimer:Timer; public var update2Timer:Timer; public var comboTimer:Timer; public var plane:Plane; public var diedOnce:Boolean;// = false public var dieTimer:Timer; public var tempTotalScore:int;// = 0 public var ceiling:Ceiling; public var sndTrans:SoundTransform; public var keyPoll:KeyPoll; public var escPressed:Boolean;// = false public var powerTimer2:Timer; public var soundChannel:SoundChannel; public var scoreClip:MovieClip; public var windCrossHair:MousePointer; public var house:House; public var powerTimer:Timer; public var menu:MovieClip; public var balloonScoreTimer:Timer; public var ableToBackToMainMenu:Boolean;// = true public var level:Level; public var tempBalloonScore:int;// = 0 public var helpMenuIn:Boolean;// = true public var landedTimer:Timer; public var distanceScoreTimer:Timer; public var optionMenuIn:Boolean;// = true public var mousePressed:Boolean;// = false public var blinds:MovieClip; public var wall:Wall; public var screenHelp:MovieClip; public var ableToSubmit:Boolean;// = false public function InGameState(){ mousePressed = false; pushPower = 80; diedOnce = false; tempDistanceScore = 0; tempBalloonScore = 0; tempTotalScore = 0; escPressed = false; optionMenuIn = true; helpMenuIn = true; ableToSubmit = false; ableToRetry = true; ableToBackToMainMenu = true; super(); initLevel(); initWall(); initCeiling(); initPlayer(); initListener(); initSound(); initMenu(); initCrossHair(); initTimer2(); initPauseScreen(); initOptionScreen(); initHelpScreen(); } public function optionGame(_arg1:MouseEvent):void{ if (((screenOption.animationDone) && (optionMenuIn))){ World.getInstance().menuRoot.addChild(screenOption); screenOption.gotoAndPlay("in"); optionMenuIn = false; turnOnMaskQualityButton(); if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function initPlayer():void{ plane = new Plane(); World.getInstance().sceneRoot.addChild(plane.image); World.getInstance().playedPlane = plane; World.getInstance().planeList.add(plane); if (level){ plane.position.x = level.startPoint.x; plane.position.y = level.startPoint.y; plane.update(); plane.initRigidBody(); plane.immobilize(); }; } public function initHelpScreen():void{ if (!World.getInstance().helpScreenOpenned){ screenHelp = new screenHelpAnimated(); World.getInstance().menuRoot.addChild(screenHelp); screenHelp.menu.closeButton.addEventListener(MouseEvent.CLICK, closeHelp); helpGame(); } else { World.getInstance().startGame(); World.getInstance().gamePaused = false; World.getInstance().spinTheWheel(); }; } public function updateGame(_arg1:Event):void{ CollisionDetector.getInstance().checkCollision(); Updater.getInstance().update(); push(); checkPlaneDead(); checkInput(); } public function initLevel():void{ level = new Level(); World.getInstance().changeLevel(level); } public function setQualityMed(_arg1:MouseEvent):void{ if (World.getInstance().stageRoot){ turnOffMaskQualityButton(); World.getInstance().stageRoot.quality = StageQuality.MEDIUM; World.getInstance().gameQuality = StageQuality.MEDIUM; screenOption.menu.maskMedButton.alpha = 1; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function initOptionScreen():void{ screenOption = new screenOptionAnimated(); World.getInstance().menuRoot.addChild(screenOption); screenOption.menu.closeButton.addEventListener(MouseEvent.CLICK, closeOption); screenOption.menu.lowButton.addEventListener(MouseEvent.CLICK, setQualityLow); screenOption.menu.medButton.addEventListener(MouseEvent.CLICK, setQualityMed); screenOption.menu.highButton.addEventListener(MouseEvent.CLICK, setQualityHigh); screenOption.menu.onButton.addEventListener(MouseEvent.CLICK, unmuteGame); screenOption.menu.offButton.addEventListener(MouseEvent.CLICK, muteGame); } public function addDistanceScore(_arg1:TimerEvent):void{ if (tempDistanceScore < World.getInstance().meterPassed){ tempDistanceScore++; } else { distanceScoreTimer.stop(); if (!balloonScoreTimer.running){ balloonScoreTimer.start(); }; }; scoreClip.statusInfo.distanceText.text = (("" + tempDistanceScore) + " m"); } public function reducePowerALittle(_arg1:TimerEvent):void{ if (!World.getInstance().gamePaused){ if (World.getInstance().power > 0){ World.getInstance().power = (World.getInstance().power - 10); if (World.getInstance().power < 0){ World.getInstance().power = 0; }; if (World.getInstance().menu){ World.getInstance().menu.windBar.bar.width = (World.getInstance().power / 10); }; }; }; } public function initMenu():void{ menu = new menuClip(); World.getInstance().menuRoot.addChild(menu); menu.scoreText.text = "0"; menu.comboText.text = ""; World.getInstance().menu = menu; } public function updateInput(_arg1:TimerEvent):void{ checkInput(); } public function closeOption(_arg1:MouseEvent=null):void{ if (((screenOption.animationDone) && (!(optionMenuIn)))){ screenOption.gotoAndPlay("out"); optionMenuIn = true; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function backToMainMenu(_arg1:MouseEvent=null):void{ if (ableToBackToMainMenu){ removeListener(); removeOptionListener(); World.getInstance().score = 0; World.getInstance().combo = 0; World.getInstance().balloonPopped = 0; World.getInstance().meterPassed = 0; World.getInstance().currentTreeCount = 0; World.getInstance().prevIsIceCream = false; World.getInstance().choseDirection = false; World.getInstance().chosePower = false; Updater.getInstance().destroyBalloons(); Updater.getInstance().destroyBirds(); Updater.getInstance().destroyHouses(); Updater.getInstance().destroyTrees(); World.getInstance().playedPlane.destroy(); World.getInstance().sceneRoot.removeChild(World.getInstance().playedPlane.image); World.getInstance().planeList.clear(); World.getInstance().playedPlane = null; World.getInstance().fly = false; World.getInstance().power = World.getInstance().maxPower; wall.destroy(); ceiling.destroy(); World.getInstance().menu = null; World.getInstance().detachFromSceneRoot(); World.getInstance().detachFromCloudRoot(); World.getInstance().detachFromForegroundRoot(); World.getInstance().detachFromMenuRoot(); World.getInstance().detachFromBackgroundRoot(); World.getInstance().detachFromSunRoot(); World.getInstance().detachFromBirdRoot(); World.getInstance().detachFromBoatRoot(); if (soundChannel){ soundChannel.stop(); }; World.getInstance().pauseGame(); World.getInstance().sceneRoot.x = 0; World.getInstance().foregroundRoot.x = 0; World.getInstance().backgroundRoot.x = 0; World.getInstance().cloudRoot.x = 0; World.getInstance().sunRoot.x = 0; World.getInstance().birdRoot.x = 0; World.getInstance().boatRoot.x = 0; windCrossHair.destroy(); removePauseListener(); update2Timer.removeEventListener(TimerEvent.TIMER, updateInput); if (keyPoll){ keyPoll.destroy(); }; MochiScores.closeLeaderboard(); World.getInstance().meterBeforeABalloonShowUp = 8; World.getInstance().meterBeforeABirdShowUp = 4; World.getInstance().timesHit = 0; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; GameManager.getInstance().setGameState(new MainMenuState()); }; } public function removePauseListener():void{ pauseScreen.menu.resumeButton.removeEventListener(MouseEvent.CLICK, resumeGame); pauseScreen.menu.retryButton.removeEventListener(MouseEvent.CLICK, retryLevel); pauseScreen.menu.menuButton.removeEventListener(MouseEvent.CLICK, backToMainMenu); pauseScreen.menu.optionButton.removeEventListener(MouseEvent.CLICK, optionGame); } public function multiplyScoreByBalloon(_arg1:TimerEvent):void{ var _local2:Point; var _local3:Particle2; var _local4:int; var _local5:int; if (World.getInstance().playedPlane){ if (World.getInstance().playedPlane.body){ scoreClip.statusInfo.bonusClip.visible = true; scoreClip.statusInfo.bonusClip.bonusText.text = ("X" + World.getInstance().combo); if (World.getInstance().combo > 0){ World.getInstance().score = (World.getInstance().score * World.getInstance().combo); }; scoreClip.statusInfo.scoreText.text = ("" + World.getInstance().score); _local2 = scoreClip.statusInfo.localToGlobal(new Point(scoreClip.statusInfo.scoreText.x, scoreClip.statusInfo.scoreText.y)); _local4 = 0; _local5 = 10; while (_local4 < _local5) { _local3 = new StarParticle2(); _local3.position.x = (_local2.x + 100); _local3.position.y = (_local2.y + 10); _local4++; }; World.getInstance().tempScore = World.getInstance().score; scoreClip.statusInfo.submitButton.alpha = 1; ableToSubmit = true; scoreClip.statusInfo.submitButton.enabled = true; scoreClip.statusInfo.menuButton.alpha = 1; scoreClip.statusInfo.menuButton.enabled = true; scoreClip.statusInfo.retryButton.alpha = 1; scoreClip.statusInfo.retryButton.enabled = true; ableToRetry = true; ableToBackToMainMenu = true; if (World.getInstance().score >= 1000000){ if (!World.getInstance().millionaire){ World.getInstance().millionaire = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new millionaireMedal(), World.getInstance().millionaireName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; }; }; }; comboTimer.stop(); } public function checkPlaneDead():void{ var _local1:String; var _local2:DisplayObject; var _local3:Billboard; if (World.getInstance().playedPlane){ if (((World.getInstance().playedPlane.died) && (!(diedOnce)))){ diedOnce = true; dieTimer.start(); _local1 = "652QF9083899"; _local2 = new AdLoader(_local1); scoreClip.statusInfo.adBox.adBox.addChild(_local2); if (World.getInstance().playedPlane.body){ if (World.getInstance().playedPlane.body.landed){ _local3 = new Billboard("Nice Landing \nScore X2", World.getInstance().playedPlane.screenPosition.x, World.getInstance().playedPlane.screenPosition.y, 20); if (!World.getInstance().roofLander){ World.getInstance().roofLander = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new roofLanderMedal(), World.getInstance().roofLanderName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (!World.getInstance().gameMuted){ World.getInstance().taskCompleteSound.play(); }; } else { if (!World.getInstance().gameMuted){ World.getInstance().fallSound.play(); }; }; }; }; }; } public function showPauseScreen():void{ World.getInstance().menuRoot.addChild(pauseScreen); if (pauseScreen){ pauseScreen.gotoAndPlay("in"); }; ableToBackToMainMenu = true; ableToRetry = true; } public function multiplyScore(_arg1:TimerEvent):void{ var _local2:Point; var _local3:Particle2; var _local4:int; var _local5:int; if (World.getInstance().playedPlane){ if (World.getInstance().playedPlane.body){ if (World.getInstance().playedPlane.body.landed){ scoreClip.statusInfo.bonusClip.visible = true; scoreClip.statusInfo.bonusClip.bonusText.text = "X2"; World.getInstance().score = (World.getInstance().score * 2); scoreClip.statusInfo.scoreText.text = ("" + World.getInstance().score); _local2 = scoreClip.statusInfo.localToGlobal(new Point(scoreClip.statusInfo.scoreText.x, scoreClip.statusInfo.scoreText.y)); _local4 = 0; _local5 = 10; while (_local4 < _local5) { _local3 = new StarParticle2(); _local3.position.x = (_local2.x + 100); _local3.position.y = (_local2.y + 10); _local4++; }; }; }; }; landedTimer.stop(); comboTimer.start(); } public function fastForward():void{ if (distanceScoreTimer.running){ scoreClip.statusInfo.distanceText.text = (("" + World.getInstance().meterPassed) + " m"); distanceScoreTimer.stop(); if (!balloonScoreTimer.running){ balloonScoreTimer.start(); }; } else { if (balloonScoreTimer.running){ scoreClip.statusInfo.balloonPoppedText.text = ("" + World.getInstance().balloonPopped); balloonScoreTimer.stop(); if (!totalScoreTimer.running){ totalScoreTimer.start(); }; } else { if (totalScoreTimer.running){ scoreClip.statusInfo.scoreText.text = ("" + World.getInstance().score); totalScoreTimer.stop(); if (World.getInstance().playedPlane){ if (World.getInstance().playedPlane.body){ if (World.getInstance().playedPlane.body.landed){ landedTimer.start(); } else { comboTimer.start(); }; }; }; }; }; }; } public function initPauseScreen():void{ pauseScreen = new screenPauseAnimated(); pauseScreen.menu.resumeButton.addEventListener(MouseEvent.CLICK, resumeGame); pauseScreen.menu.retryButton.addEventListener(MouseEvent.CLICK, retryLevel); pauseScreen.menu.menuButton.addEventListener(MouseEvent.CLICK, backToMainMenu); pauseScreen.menu.optionButton.addEventListener(MouseEvent.CLICK, optionGame); } public function helpGame(_arg1:MouseEvent=null):void{ screenHelp.gotoAndPlay("in"); screenHelp.menu.tutorial.gotoAndPlay(1); helpMenuIn = false; } public function initTimer2():void{ update2Timer = new Timer(30); update2Timer.addEventListener(TimerEvent.TIMER, updateInput); } public function onScoresReceived(_arg1:Object):void{ var o:Object; var boardID:String; var args = _arg1; if (args.scores != null){ o = {n:[0, 5, 9, 0, 4, 10, 11, 5, 8, 0, 8, 1, 14, 2, 3, 5], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID}); MochiScores.onCloseHandler = onClose; MochiScores.onErrorHandler = showSubmitButton; } else { if (args.error){ }; }; } public function connect():void{ MochiServices.connect("1352b52e7c46adc9", World.getInstance().spriteRoot); } public function addBalloonScore(_arg1:TimerEvent):void{ if (tempBalloonScore < World.getInstance().balloonPopped){ tempBalloonScore++; } else { balloonScoreTimer.stop(); if (!totalScoreTimer.running){ totalScoreTimer.start(); }; }; scoreClip.statusInfo.balloonPoppedText.text = ("" + tempBalloonScore); } public function initBlinds():void{ if (!blinds){ blinds = new screenScoreAnimated(); World.getInstance().menuRoot.addChild(blinds); }; blinds.gotoAndPlay("in"); } public function initKeyboardInput():void{ keyPoll = new KeyPoll(this.stage); } public function initWall():void{ wall = new Wall(); wall.width = 5000; wall.height = 42; wall.x = 2500; wall.y = 500; wall.initRigidBody(); } public function showSubmitButton(_arg1:Object=null):void{ scoreClip.statusInfo.submitButton.visible = true; if (blinds){ blinds.gotoAndPlay("out"); }; } public function initCrossHair():void{ windCrossHair = new WindCrossHair(); windCrossHair.image.visible = false; } public function push():void{ var _local1:b2Vec2; var _local2:b2Vec2; var _local3:Number; var _local4:Number; if (((((World.getInstance().playedPlane) && (mousePressed))) && ((World.getInstance().power > 0)))){ if ((((World.getInstance().playedPlane.position.y > 30)) && (!(World.getInstance().playedPlane.died)))){ _local1 = new b2Vec2(); _local1.x = (World.getInstance().playedPlane.screenPosition.x - this.mouseX); _local1.y = (World.getInstance().playedPlane.screenPosition.y - this.mouseY); _local2 = _local1.Copy(); _local3 = Math.sqrt((Math.pow(_local2.x, 2) + Math.pow(_local2.y, 2))); _local1.Normalize(); _local4 = pushPower; _local4 = (_local4 / _local3); _local4 = (_local4 * 2); if (World.getInstance().playedPlane.body){ World.getInstance().playedPlane.body.ApplyImpulse(new b2Vec2(0, (_local1.y * _local4)), World.getInstance().playedPlane.body.GetPosition()); }; if (this.mouseY < World.getInstance().playedPlane.screenPosition.y){ windCrossHair.image.rotation = 180; } else { windCrossHair.image.rotation = 0; }; }; }; if (World.getInstance().power <= 0){ windCrossHair.image.visible = false; }; } public function addTotalScore(_arg1:TimerEvent):void{ if (tempTotalScore < World.getInstance().score){ tempTotalScore++; } else { totalScoreTimer.stop(); if (World.getInstance().playedPlane){ if (World.getInstance().playedPlane.body){ if (World.getInstance().playedPlane.body.landed){ landedTimer.start(); } else { comboTimer.start(); }; }; }; }; scoreClip.statusInfo.scoreText.text = ("" + tempTotalScore); } public function onMousePressed(_arg1:MouseEvent):void{ if (((!(World.getInstance().gamePaused)) && (World.getInstance().helpScreenOpenned))){ mousePressed = true; if (World.getInstance().playedPlane){ if (!World.getInstance().chosePower){ World.getInstance().stopTheWheel(); World.getInstance().chosePower = true; World.getInstance().rotateTheWheel(); if (World.getInstance().firstPower >= 85){ if (!World.getInstance().maximumPower){ World.getInstance().maximumPower = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new maximumPowerMedal(), World.getInstance().maximumPowerName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; }; } else { if (!World.getInstance().choseDirection){ World.getInstance().stopRotateTheWheel(); World.getInstance().choseDirection = true; World.getInstance().playedPlane.fly(); World.getInstance().kid.gotoAndPlay("throw"); powerTimer2.start(); World.getInstance().fly = true; }; }; World.getInstance().playedPlane.doneOnce = false; if (World.getInstance().playedPlane.died){ if (scoreClip.animationDone){ fastForward(); }; }; if (((((World.getInstance().fly) && (!(World.getInstance().playedPlane.died)))) && ((World.getInstance().power > 0)))){ windCrossHair.image.visible = true; }; }; if (!powerTimer.running){ powerTimer.start(); }; }; } public function reducePower(_arg1:TimerEvent):void{ if (!World.getInstance().gamePaused){ if (World.getInstance().power > 0){ World.getInstance().power = (World.getInstance().power - 20); if (World.getInstance().power < 0){ World.getInstance().power = 0; }; if (World.getInstance().menu){ World.getInstance().menu.windBar.bar.width = (World.getInstance().power / 10); }; }; }; } public function onMouseUp(_arg1:MouseEvent):void{ mousePressed = false; powerTimer.stop(); windCrossHair.image.visible = false; } public function unmuteGame(_arg1:MouseEvent):void{ if (World.getInstance().gameMuted){ soundChannel = music.play(0, 99999, sndTrans); }; World.getInstance().gameMuted = false; screenOption.menu.maskOnButton.alpha = 1; screenOption.menu.maskOffButton.alpha = 0; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; } public function removeListener():void{ World.getInstance().removeEventListener(WorldEvent.ON_UPDATE, updateGame); World.getInstance().sceneRoot.removeEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().sceneRoot.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().backgroundRoot.removeEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().backgroundRoot.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().cloudRoot.removeEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().cloudRoot.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().sunRoot.removeEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().sunRoot.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().foregroundRoot.removeEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().foregroundRoot.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().menuRoot.removeEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().menuRoot.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp); powerTimer.removeEventListener(TimerEvent.TIMER, reducePower); dieTimer.removeEventListener(TimerEvent.TIMER, showScore); initScoreClip(); powerTimer2.removeEventListener(TimerEvent.TIMER, reducePowerALittle); distanceScoreTimer.removeEventListener(TimerEvent.TIMER, addDistanceScore); balloonScoreTimer.removeEventListener(TimerEvent.TIMER, addBalloonScore); totalScoreTimer.removeEventListener(TimerEvent.TIMER, addTotalScore); landedTimer.removeEventListener(TimerEvent.TIMER, multiplyScore); comboTimer.removeEventListener(TimerEvent.TIMER, multiplyScoreByBalloon); scoreClip.statusInfo.retryButton.removeEventListener(MouseEvent.CLICK, retryLevel); scoreClip.statusInfo.submitButton.removeEventListener(MouseEvent.CLICK, submitScore); } public function submitScore(_arg1:MouseEvent):void{ var o:Object; var boardID:String; var e = _arg1; if (ableToSubmit){ o = {n:[0, 5, 9, 0, 4, 10, 11, 5, 8, 0, 8, 1, 14, 2, 3, 5], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.setBoardID(boardID); MochiScores.submit(World.getInstance().score, scoreClip.statusInfo.nameText.text, this, "onScoresReceived"); scoreClip.statusInfo.submitButton.visible = false; MochiScores.onCloseHandler = onClose; MochiScores.onErrorHandler = showSubmitButton; initBlinds(); World.getInstance().playerName = scoreClip.statusInfo.nameText.text; }; } public function closeHelp(_arg1:MouseEvent):void{ if (((screenHelp.animationDone) && (!(helpMenuIn)))){ screenHelp.gotoAndPlay("out"); helpMenuIn = true; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; World.getInstance().spinTheWheel(); World.getInstance().startGame(); World.getInstance().gamePaused = false; screenHelp.menu.closeButton.removeEventListener(MouseEvent.CLICK, closeHelp); World.getInstance().helpScreenOpenned = true; }; } public function hidePauseScreen():void{ if (World.getInstance().menuRoot.contains(pauseScreen)){ World.getInstance().menuRoot.removeChild(pauseScreen); if (pauseScreen){ pauseScreen.gotoAndPlay("out"); }; }; } public function onClose(_arg1:Object=null):void{ backToMainMenu(); } public function setQualityHigh(_arg1:MouseEvent):void{ if (World.getInstance().stageRoot){ turnOffMaskQualityButton(); World.getInstance().stageRoot.quality = StageQuality.HIGH; World.getInstance().gameQuality = StageQuality.HIGH; screenOption.menu.maskHighButton.alpha = 1; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function showScore(_arg1:TimerEvent):void{ scoreClip.gotoAndPlay("in"); dieTimer.stop(); distanceScoreTimer.start(); ableToRetry = false; ableToBackToMainMenu = false; if (menu){ menu.visible = false; }; } public function initCeiling():void{ ceiling = new Ceiling(); ceiling.width = 5000; ceiling.height = 24; ceiling.x = 2500; ceiling.y = -160.9; ceiling.initRigidBody(); } public function turnOnMaskQualityButton():void{ if (World.getInstance().gameQuality == StageQuality.LOW){ screenOption.menu.maskLowButton.alpha = 1; } else { if (World.getInstance().gameQuality == StageQuality.MEDIUM){ screenOption.menu.maskMedButton.alpha = 1; } else { if (World.getInstance().gameQuality == StageQuality.HIGH){ screenOption.menu.maskHighButton.alpha = 1; }; }; }; if (World.getInstance().gameMuted){ screenOption.menu.maskOnButton.alpha = 0; screenOption.menu.maskOffButton.alpha = 1; } else { screenOption.menu.maskOnButton.alpha = 1; screenOption.menu.maskOffButton.alpha = 0; }; } public function checkInput():void{ if (World.getInstance().stageRoot){ if (!keyPoll){ keyPoll = new KeyPoll(World.getInstance().stageRoot); World.getInstance().setFocusToStage(); }; }; if (keyPoll){ if (keyPoll.isDown(Keyboard.ESCAPE)){ if (((!(escPressed)) && (World.getInstance().gamePaused))){ escPressed = true; World.getInstance().startGame(); World.getInstance().gamePaused = false; powerTimer.stop(); update2Timer.stop(); hidePauseScreen(); }; if (!escPressed){ escPressed = true; World.getInstance().pauseGame(); World.getInstance().gamePaused = true; update2Timer.start(); powerTimer.start(); showPauseScreen(); }; }; if (keyPoll.isUp(Keyboard.ESCAPE)){ if (escPressed){ escPressed = false; }; }; }; } public function muteGame(_arg1:MouseEvent):void{ World.getInstance().gameMuted = true; screenOption.menu.maskOnButton.alpha = 0; screenOption.menu.maskOffButton.alpha = 1; if (soundChannel){ soundChannel.stop(); }; } public function retryLevel(_arg1:MouseEvent=null):void{ if (ableToRetry){ removeListener(); removeOptionListener(); World.getInstance().score = 0; World.getInstance().combo = 0; World.getInstance().balloonPopped = 0; World.getInstance().meterPassed = 0; World.getInstance().currentTreeCount = 0; World.getInstance().prevIsIceCream = false; World.getInstance().choseDirection = false; World.getInstance().chosePower = false; Updater.getInstance().destroyBalloons(); Updater.getInstance().destroyBirds(); Updater.getInstance().destroyHouses(); Updater.getInstance().destroyTrees(); World.getInstance().playedPlane.destroy(); World.getInstance().sceneRoot.removeChild(World.getInstance().playedPlane.image); World.getInstance().planeList.clear(); World.getInstance().playedPlane = null; World.getInstance().fly = false; World.getInstance().power = World.getInstance().maxPower; wall.destroy(); ceiling.destroy(); World.getInstance().menu = null; World.getInstance().detachFromSceneRoot(); World.getInstance().detachFromCloudRoot(); World.getInstance().detachFromForegroundRoot(); World.getInstance().detachFromMenuRoot(); World.getInstance().detachFromBackgroundRoot(); World.getInstance().detachFromSunRoot(); World.getInstance().detachFromBirdRoot(); World.getInstance().detachFromBoatRoot(); soundChannel.stop(); World.getInstance().pauseGame(); World.getInstance().sceneRoot.x = 0; World.getInstance().foregroundRoot.x = 0; World.getInstance().backgroundRoot.x = 0; World.getInstance().cloudRoot.x = 0; World.getInstance().sunRoot.x = 0; World.getInstance().birdRoot.x = 0; World.getInstance().boatRoot.x = 0; windCrossHair.destroy(); removePauseListener(); update2Timer.removeEventListener(TimerEvent.TIMER, updateInput); if (keyPoll){ keyPoll.destroy(); }; MochiScores.closeLeaderboard(); World.getInstance().meterBeforeABalloonShowUp = 8; World.getInstance().meterBeforeABirdShowUp = 4; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; World.getInstance().timesHit = 0; GameManager.getInstance().setGameState(new InGameState()); }; } public function resumeGame(_arg1:MouseEvent):void{ World.getInstance().startGame(); World.getInstance().gamePaused = false; powerTimer.stop(); update2Timer.stop(); hidePauseScreen(); if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; } public function initScoreClip():void{ scoreClip = new scoreGUI(); World.getInstance().menuRoot.addChild(scoreClip); scoreClip.statusInfo.bonusClip.visible = false; scoreClip.statusInfo.submitButton.alpha = 0.5; scoreClip.statusInfo.submitButton.enabled = false; scoreClip.statusInfo.menuButton.alpha = 0.5; scoreClip.statusInfo.menuButton.enabled = false; scoreClip.statusInfo.retryButton.alpha = 0.5; scoreClip.statusInfo.retryButton.enabled = false; scoreClip.statusInfo.nameText.text = World.getInstance().playerName; World.getInstance().triviaNumber++; if (World.getInstance().triviaNumber > (World.getInstance().triviaList.size() - 1)){ World.getInstance().triviaNumber = 0; }; scoreClip.statusInfo.triviaText.text = World.getInstance().triviaList.get(World.getInstance().triviaNumber); ableToSubmit = false; } public function setQualityLow(_arg1:MouseEvent):void{ if (World.getInstance().stageRoot){ turnOffMaskQualityButton(); World.getInstance().stageRoot.quality = StageQuality.LOW; World.getInstance().gameQuality = StageQuality.LOW; screenOption.menu.maskLowButton.alpha = 1; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function initSound():void{ music = new bgMusic(); sndTrans = new SoundTransform(0.5); if (!World.getInstance().gameMuted){ soundChannel = music.play(0, 99999, sndTrans); }; } public function initListener():void{ World.getInstance().addEventListener(WorldEvent.ON_UPDATE, updateGame); World.getInstance().sceneRoot.addEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().sceneRoot.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().backgroundRoot.addEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().backgroundRoot.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().cloudRoot.addEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().cloudRoot.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().sunRoot.addEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().sunRoot.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().foregroundRoot.addEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().foregroundRoot.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); World.getInstance().menuRoot.addEventListener(MouseEvent.MOUSE_DOWN, onMousePressed); World.getInstance().menuRoot.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); powerTimer = new Timer(100); powerTimer.addEventListener(TimerEvent.TIMER, reducePower); dieTimer = new Timer(3000); dieTimer.addEventListener(TimerEvent.TIMER, showScore); initScoreClip(); powerTimer2 = new Timer(100); powerTimer2.addEventListener(TimerEvent.TIMER, reducePowerALittle); distanceScoreTimer = new Timer(30); distanceScoreTimer.addEventListener(TimerEvent.TIMER, addDistanceScore); balloonScoreTimer = new Timer(30); balloonScoreTimer.addEventListener(TimerEvent.TIMER, addBalloonScore); totalScoreTimer = new Timer(1); totalScoreTimer.addEventListener(TimerEvent.TIMER, addTotalScore); landedTimer = new Timer(300); landedTimer.addEventListener(TimerEvent.TIMER, multiplyScore); comboTimer = new Timer(700); comboTimer.addEventListener(TimerEvent.TIMER, multiplyScoreByBalloon); scoreClip.statusInfo.retryButton.addEventListener(MouseEvent.CLICK, retryLevel); scoreClip.statusInfo.submitButton.addEventListener(MouseEvent.CLICK, submitScore); scoreClip.statusInfo.menuButton.addEventListener(MouseEvent.CLICK, backToMainMenu); } public function turnOffMaskQualityButton():void{ if (World.getInstance().gameQuality == StageQuality.LOW){ screenOption.menu.maskLowButton.alpha = 0; } else { if (World.getInstance().gameQuality == StageQuality.MEDIUM){ screenOption.menu.maskMedButton.alpha = 0; } else { if (World.getInstance().gameQuality == StageQuality.HIGH){ screenOption.menu.maskHighButton.alpha = 0; }; }; }; } public function removeOptionListener():void{ screenOption.menu.closeButton.removeEventListener(MouseEvent.CLICK, closeOption); screenOption.menu.lowButton.removeEventListener(MouseEvent.CLICK, setQualityLow); screenOption.menu.medButton.removeEventListener(MouseEvent.CLICK, setQualityMed); screenOption.menu.highButton.removeEventListener(MouseEvent.CLICK, setQualityHigh); screenOption.menu.onButton.removeEventListener(MouseEvent.CLICK, unmuteGame); screenOption.menu.offButton.removeEventListener(MouseEvent.CLICK, muteGame); } } }//package p_gameState
Section 132
//InitializeGameState (p_gameState.InitializeGameState) package p_gameState { import Box2D.Common.Math.*; import p_singleton.*; import p_util.*; public class InitializeGameState extends GameState { public function InitializeGameState(){ initPhysicWorld(); GameManager.getInstance().setGameState(new MainMenuState()); } public function initPhysicWorld():void{ if (!World.getInstance().physicWorld){ World.getInstance().initPhysicWorld(new b2Vec2(-100000, -100000), new b2Vec2(100000, 100000), new b2Vec2(0, 50), true, new ContactListener(), new ContactFilterer()); }; } } }//package p_gameState
Section 133
//LoadingGameState (p_gameState.LoadingGameState) package p_gameState { import flash.display.*; import flash.events.*; import p_singleton.*; import CPMStar.*; public class LoadingGameState extends GameState { public var ad:DisplayObject; public var image:MovieClip; public var playPressed:Boolean; public var barWidth:Number; public var loadingDone:Boolean; public function LoadingGameState(){ image = World.getInstance().loaderScreen; barWidth = image.loadingBar.bar.width; image.loadingBar.bar.width = 1; World.getInstance().menuRoot.addChild(image); init(); } public function init():void{ var _local1:String; World.getInstance().spriteRoot.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loadingProgress); World.getInstance().spriteRoot.loaderInfo.addEventListener(Event.COMPLETE, loadingComplete); loadingDone = false; playPressed = false; _local1 = "651QE180AC65"; ad = new AdLoader(_local1); image.adArea.addChild(ad); } public function loadingProgress(_arg1:ProgressEvent):void{ var _local2:int; _local2 = (100 * (World.getInstance().spriteRoot.loaderInfo.bytesLoaded / World.getInstance().spriteRoot.loaderInfo.bytesTotal)); image.loadingInfo.text = (("" + _local2) + "%"); image.loadingBar.bar.width = ((_local2 * barWidth) / 100); } public function playGame(_arg1:MouseEvent):void{ if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; image.playBtn.removeEventListener(MouseEvent.CLICK, playGame); World.getInstance().spriteRoot.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loadingProgress); World.getInstance().spriteRoot.loaderInfo.removeEventListener(Event.COMPLETE, loadingComplete); image.adArea.removeChild(ad); World.getInstance().loaderScreen.parent.removeChild(World.getInstance().loaderScreen); GameManager.getInstance().setGameState(new SponsorIntroState()); } public function loadingComplete(_arg1:Event):void{ World.getInstance().spriteRoot.gotoAndStop(3); image.playBtn.visible = true; image.playBtn.addEventListener(MouseEvent.CLICK, playGame); World.getInstance().initSoundFX(); } } }//package p_gameState
Section 134
//MainMenuState (p_gameState.MainMenuState) package p_gameState { import flash.display.*; import flash.events.*; import p_singleton.*; import mochi.as3.*; import flash.media.*; public class MainMenuState extends GameState { public var sound:Sound; public var soundChannel:SoundChannel; public var scoreMenuIn:Boolean;// = true public var creditMenuIn:Boolean;// = true public var image:MovieClip; public var helpMenuIn:Boolean;// = true public var optionMenuIn:Boolean;// = true public var medalMenuIn:Boolean;// = true public var sndTrans:SoundTransform; public function MainMenuState(){ helpMenuIn = true; creditMenuIn = true; scoreMenuIn = true; medalMenuIn = true; optionMenuIn = true; super(); initMainMenu(); initListener(); connect(); initSound(); } public function initListener():void{ image.playBtn.addEventListener(MouseEvent.CLICK, playGame); image.helpBtn.addEventListener(MouseEvent.CLICK, helpGame); image.creditsBtn.addEventListener(MouseEvent.CLICK, creditGame); image.scoreBtn.addEventListener(MouseEvent.CLICK, scoreGame); image.medalsBtn.addEventListener(MouseEvent.CLICK, medalGame); image.optionBtn.addEventListener(MouseEvent.CLICK, optionGame); image.screenHelp.menu.closeButton.addEventListener(MouseEvent.CLICK, closeHelp); image.screenCredit.menu.closeButton.addEventListener(MouseEvent.CLICK, closeCredit); image.screenMedal.menu.closeButton.addEventListener(MouseEvent.CLICK, closeMedal); image.screenOption.menu.closeButton.addEventListener(MouseEvent.CLICK, closeOption); image.screenOption.menu.lowButton.addEventListener(MouseEvent.CLICK, setQualityLow); image.screenOption.menu.medButton.addEventListener(MouseEvent.CLICK, setQualityMed); image.screenOption.menu.highButton.addEventListener(MouseEvent.CLICK, setQualityHigh); image.screenOption.menu.onButton.addEventListener(MouseEvent.CLICK, unmuteGame); image.screenOption.menu.offButton.addEventListener(MouseEvent.CLICK, muteGame); } public function turnOffMaskQualityButton():void{ if (World.getInstance().gameQuality == StageQuality.LOW){ image.screenOption.menu.maskLowButton.alpha = 0; } else { if (World.getInstance().gameQuality == StageQuality.MEDIUM){ image.screenOption.menu.maskMedButton.alpha = 0; } else { if (World.getInstance().gameQuality == StageQuality.HIGH){ image.screenOption.menu.maskHighButton.alpha = 0; }; }; }; } public function optionGame(_arg1:MouseEvent):void{ if (((image.screenOption.animationDone) && (optionMenuIn))){ image.screenOption.gotoAndPlay("in"); optionMenuIn = false; turnOnMaskQualityButton(); if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function closeCredit(_arg1:MouseEvent):void{ if (((image.screenCredit.animationDone) && (!(creditMenuIn)))){ image.screenCredit.gotoAndPlay("out"); creditMenuIn = true; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function initMedalListeners():void{ image.screenMedal.menu.balloonPopper.id = 0; image.screenMedal.menu.balloonPopper.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.roofLander.id = 1; image.screenMedal.menu.roofLander.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.traveller.id = 2; image.screenMedal.menu.traveller.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.maximumPower.id = 3; image.screenMedal.menu.maximumPower.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.acquainted.id = 4; image.screenMedal.menu.acquainted.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.birdHunter.id = 5; image.screenMedal.menu.birdHunter.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.crashLanding.id = 6; image.screenMedal.menu.crashLanding.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.helpingHand.id = 7; image.screenMedal.menu.helpingHand.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.millionaire.id = 8; image.screenMedal.menu.millionaire.addEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.champion.id = 9; image.screenMedal.menu.champion.addEventListener(MouseEvent.CLICK, showMedalInfo); } public function checkUnlockedMedals():void{ if (World.getInstance().balloonPopper){ image.screenMedal.menu.balloonPopper.gotoAndStop(2); }; if (World.getInstance().roofLander){ image.screenMedal.menu.roofLander.gotoAndStop(2); }; if (World.getInstance().traveller){ image.screenMedal.menu.traveller.gotoAndStop(2); }; if (World.getInstance().maximumPower){ image.screenMedal.menu.maximumPower.gotoAndStop(2); }; if (World.getInstance().acquainted){ image.screenMedal.menu.acquainted.gotoAndStop(2); }; if (World.getInstance().birdHunter){ image.screenMedal.menu.birdHunter.gotoAndStop(2); }; if (World.getInstance().crashLanding){ image.screenMedal.menu.crashLanding.gotoAndStop(2); }; if (World.getInstance().helpingHand){ image.screenMedal.menu.helpingHand.gotoAndStop(2); }; if (World.getInstance().millionaire){ image.screenMedal.menu.millionaire.gotoAndStop(2); }; if (World.getInstance().champion){ image.screenMedal.menu.champion.gotoAndStop(2); }; } public function unmuteGame(_arg1:MouseEvent):void{ if (World.getInstance().gameMuted){ soundChannel = sound.play(0, 9999, sndTrans); }; World.getInstance().gameMuted = false; image.screenOption.menu.maskOnButton.alpha = 1; image.screenOption.menu.maskOffButton.alpha = 0; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; } public function onClose(_arg1:Object=null):void{ closeScore(); } public function closeHelp(_arg1:MouseEvent):void{ if (((image.screenHelp.animationDone) && (!(helpMenuIn)))){ image.screenHelp.gotoAndPlay("out"); helpMenuIn = true; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function setQualityMed(_arg1:MouseEvent):void{ if (World.getInstance().stageRoot){ turnOffMaskQualityButton(); World.getInstance().stageRoot.quality = StageQuality.MEDIUM; World.getInstance().gameQuality = StageQuality.MEDIUM; image.screenOption.menu.maskMedButton.alpha = 1; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function playGame(_arg1:MouseEvent):void{ image.playBtn.removeEventListener(MouseEvent.CLICK, playGame); image.helpBtn.removeEventListener(MouseEvent.CLICK, helpGame); image.creditsBtn.removeEventListener(MouseEvent.CLICK, creditGame); image.scoreBtn.removeEventListener(MouseEvent.CLICK, scoreGame); image.medalsBtn.removeEventListener(MouseEvent.CLICK, medalGame); image.optionBtn.removeEventListener(MouseEvent.CLICK, optionGame); image.screenHelp.menu.closeButton.removeEventListener(MouseEvent.CLICK, closeHelp); image.screenCredit.menu.closeButton.removeEventListener(MouseEvent.CLICK, closeCredit); image.screenMedal.menu.closeButton.removeEventListener(MouseEvent.CLICK, closeMedal); image.screenOption.menu.closeButton.removeEventListener(MouseEvent.CLICK, closeOption); image.screenOption.menu.lowButton.removeEventListener(MouseEvent.CLICK, setQualityLow); image.screenOption.menu.medButton.removeEventListener(MouseEvent.CLICK, setQualityMed); image.screenOption.menu.highButton.removeEventListener(MouseEvent.CLICK, setQualityHigh); image.screenOption.menu.onButton.removeEventListener(MouseEvent.CLICK, unmuteGame); image.screenOption.menu.offButton.removeEventListener(MouseEvent.CLICK, muteGame); World.getInstance().menuRoot.removeChild(image); if (soundChannel){ soundChannel.stop(); }; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; GameManager.getInstance().setGameState(new InGameState()); } public function medalGame(_arg1:MouseEvent):void{ if (((image.screenMedal.animationDone) && (medalMenuIn))){ image.screenMedal.gotoAndPlay("in"); medalMenuIn = false; checkUnlockedMedals(); initMedalListeners(); if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function setQualityHigh(_arg1:MouseEvent):void{ if (World.getInstance().stageRoot){ turnOffMaskQualityButton(); World.getInstance().stageRoot.quality = StageQuality.HIGH; World.getInstance().gameQuality = StageQuality.HIGH; image.screenOption.menu.maskHighButton.alpha = 1; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function turnOnMaskQualityButton():void{ if (World.getInstance().gameQuality == StageQuality.LOW){ image.screenOption.menu.maskLowButton.alpha = 1; } else { if (World.getInstance().gameQuality == StageQuality.MEDIUM){ image.screenOption.menu.maskMedButton.alpha = 1; } else { if (World.getInstance().gameQuality == StageQuality.HIGH){ image.screenOption.menu.maskHighButton.alpha = 1; }; }; }; if (World.getInstance().gameMuted){ image.screenOption.menu.maskOnButton.alpha = 0; image.screenOption.menu.maskOffButton.alpha = 1; } else { image.screenOption.menu.maskOnButton.alpha = 1; image.screenOption.menu.maskOffButton.alpha = 0; }; } public function creditGame(_arg1:MouseEvent):void{ if (((image.screenCredit.animationDone) && (creditMenuIn))){ image.screenCredit.gotoAndPlay("in"); creditMenuIn = false; if (!World.getInstance().acquainted){ World.getInstance().acquainted = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new acquaintedMedal(), World.getInstance().acquaintedName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function closeOption(_arg1:MouseEvent=null):void{ if (((image.screenOption.animationDone) && (!(optionMenuIn)))){ image.screenOption.gotoAndPlay("out"); optionMenuIn = true; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function scoreGame(_arg1:MouseEvent):void{ if (((image.screenScore.animationDone) && (scoreMenuIn))){ image.screenScore.gotoAndPlay("in"); scoreMenuIn = false; showHighScore(); if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function showHighScore():void{ var o:Object; var boardID:String; o = {n:[0, 5, 9, 0, 4, 10, 11, 5, 8, 0, 8, 1, 14, 2, 3, 5], f:function (_arg1:Number, _arg2:String):String{ if (_arg2.length == 16){ return (_arg2); }; return (this.f((_arg1 + 1), (_arg2 + this.n[_arg1].toString(16)))); }}; boardID = o.f(0, ""); MochiScores.showLeaderboard({boardID:boardID}); MochiScores.onCloseHandler = onClose; MochiScores.onErrorHandler = onClose; } public function muteGame(_arg1:MouseEvent):void{ World.getInstance().gameMuted = true; image.screenOption.menu.maskOnButton.alpha = 0; image.screenOption.menu.maskOffButton.alpha = 1; if (soundChannel){ soundChannel.stop(); }; } public function showMedalInfo(_arg1:MouseEvent):void{ if (_arg1.target.id == 0){ image.screenMedal.menu.medalName.text = World.getInstance().balloonPopperName; image.screenMedal.menu.medalDescription.text = "Pop 50 balloons"; if (World.getInstance().balloonPopper){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 1){ image.screenMedal.menu.medalName.text = World.getInstance().roofLanderName; image.screenMedal.menu.medalDescription.text = "Land on a roof"; if (World.getInstance().roofLander){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 2){ image.screenMedal.menu.medalName.text = World.getInstance().travellerName; image.screenMedal.menu.medalDescription.text = "Travel 500 meters"; if (World.getInstance().traveller){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 3){ image.screenMedal.menu.medalName.text = World.getInstance().maximumPowerName; image.screenMedal.menu.medalDescription.text = "Throw your plane with the maximum power"; if (World.getInstance().maximumPower){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 4){ image.screenMedal.menu.medalName.text = World.getInstance().acquaintedName; image.screenMedal.menu.medalDescription.text = "Open the Credits Menu\nTo know us better"; if (World.getInstance().acquainted){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 5){ image.screenMedal.menu.medalName.text = World.getInstance().birdHunterName; image.screenMedal.menu.medalDescription.text = "Crash your plane onto a bird"; if (World.getInstance().birdHunter){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 6){ image.screenMedal.menu.medalName.text = World.getInstance().crashLandingName; image.screenMedal.menu.medalDescription.text = "Crash your plane!"; if (World.getInstance().crashLanding){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 7){ image.screenMedal.menu.medalName.text = World.getInstance().helpingHandName; image.screenMedal.menu.medalDescription.text = "Open the Help Menu\nSo you know what to do"; if (World.getInstance().helpingHand){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 8){ image.screenMedal.menu.medalName.text = World.getInstance().millionaireName; image.screenMedal.menu.medalDescription.text = "Score more than 999,999"; if (World.getInstance().millionaire){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; } else { if (_arg1.target.id == 9){ image.screenMedal.menu.medalName.text = World.getInstance().championName; image.screenMedal.menu.medalDescription.text = "Unlock all the medals"; if (World.getInstance().champion){ image.screenMedal.menu.medalAchieved.text = "Achieved"; } else { image.screenMedal.menu.medalAchieved.text = "Not Achieved"; }; }; }; }; }; }; }; }; }; }; }; } public function helpGame(_arg1:MouseEvent):void{ if (((image.screenHelp.animationDone) && (helpMenuIn))){ image.screenHelp.gotoAndPlay("in"); image.screenHelp.menu.tutorial.gotoAndPlay(1); helpMenuIn = false; if (!World.getInstance().helpingHand){ World.getInstance().helpingHand = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new helpingHandMedal(), World.getInstance().helpingHandName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function removeMedalListener():void{ image.screenMedal.menu.balloonPopper.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.roofLander.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.traveller.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.maximumPower.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.acquainted.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.birdHunter.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.crashLanding.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.helpingHand.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.millionaire.removeEventListener(MouseEvent.CLICK, showMedalInfo); image.screenMedal.menu.champion.removeEventListener(MouseEvent.CLICK, showMedalInfo); } public function setQualityLow(_arg1:MouseEvent):void{ if (World.getInstance().stageRoot){ turnOffMaskQualityButton(); World.getInstance().stageRoot.quality = StageQuality.LOW; World.getInstance().gameQuality = StageQuality.LOW; image.screenOption.menu.maskLowButton.alpha = 1; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function closeScore(_arg1:MouseEvent=null):void{ if (((image.screenScore.animationDone) && (!(scoreMenuIn)))){ image.screenScore.gotoAndPlay("out"); scoreMenuIn = true; if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function initSound():void{ sound = new mainMenuSound(); sndTrans = new SoundTransform(0.7); if (!World.getInstance().gameMuted){ soundChannel = sound.play(0, 9999, sndTrans); }; } public function closeMedal(_arg1:MouseEvent=null):void{ if (((image.screenMedal.animationDone) && (!(medalMenuIn)))){ image.screenMedal.gotoAndPlay("out"); medalMenuIn = true; removeMedalListener(); if (!World.getInstance().gameMuted){ World.getInstance().buttonHitSound.play(); }; }; } public function initMainMenu():void{ image = new screenMainMenu(); World.getInstance().menuRoot.addChild(image); image.kid.powerBar.visible = false; image.kid.lineBar.visible = false; image.gotoAndPlay("main"); } public function connect():void{ MochiServices.connect("1352b52e7c46adc9", World.getInstance().spriteRoot); } } }//package p_gameState
Section 135
//SponsorIntroState (p_gameState.SponsorIntroState) package p_gameState { import flash.display.*; import flash.events.*; import p_singleton.*; import flash.media.*; public class SponsorIntroState extends GameState { public var sound:Sound; public var image:MovieClip; public function SponsorIntroState(){ image = new introSponsor(); addChild(image); image.buttonMode = true; if (World.getInstance().spriteRoot.stage){ World.getInstance().spriteRoot.stage.frameRate = 30; }; image.addEventListener(Event.ENTER_FRAME, checkAnimationDone); } public function checkAnimationDone(_arg1:Event):void{ if (image){ if (image.animationDone){ if (World.getInstance().spriteRoot.stage){ World.getInstance().spriteRoot.stage.frameRate = 60; }; image.removeEventListener(Event.ENTER_FRAME, checkAnimationDone); this.removeChild(image); image = null; GameManager.getInstance().setGameState(new TogeIntroState()); }; }; } } }//package p_gameState
Section 136
//TogeIntroState (p_gameState.TogeIntroState) package p_gameState { import flash.display.*; import flash.events.*; import p_singleton.*; import flash.media.*; public class TogeIntroState extends GameState { public var sound:Sound; public var image:MovieClip; public function TogeIntroState(){ image = new TogeLogoAnimated(); addChild(image); image.buttonMode = true; if (World.getInstance().spriteRoot.stage){ World.getInstance().spriteRoot.stage.frameRate = 30; }; image.addEventListener(Event.ENTER_FRAME, checkAnimationDone); } public function checkAnimationDone(_arg1:Event):void{ if (image){ if (image.animationDone){ if (World.getInstance().spriteRoot.stage){ World.getInstance().spriteRoot.stage.frameRate = 60; }; image.removeEventListener(Event.ENTER_FRAME, checkAnimationDone); this.removeChild(image); image = null; GameManager.getInstance().setGameState(new InitializeGameState()); }; }; } } }//package p_gameState
Section 137
//Level (p_level.Level) package p_level { import Box2D.Common.Math.*; import p_entity.*; import flash.geom.*; import flash.display.*; import p_singleton.*; import org.idmedia.as3commons.util.*; public class Level { public var houseWidth:Number;// = 180 public var randomTree:int; public var sceneRoot:Sprite; public var cloudSpeed:Number;// = 4 public var createdFirstTime:Boolean;// = true public var randomHouse:int; public var tree:Tree; public var distancePerHouse:Number;// = 300 public var fence2:MovieClip; public var fence3:MovieClip; public var house:House; public var balloon:Balloon; public var objectGroup1:ArrayList; public var objectGroup2:ArrayList; public var objectGroup3:ArrayList; public var screenPosition:b2Vec2; public var image2:MovieClip; public var fence1:MovieClip; public var bird:Bird; public var refreshed:Boolean;// = false public var image3:MovieClip; public var sun:MovieClip; public var startPoint:Point; private var newPoint:Point; public var backgroundWidth:Number;// = 1200 public var image:MovieClip; public var clouds:ArrayList; public var randomObject:int; public var sunSpeed:Number;// = 0.2 public var ball:Ball; public function Level(){ refreshed = false; cloudSpeed = 4; sunSpeed = 0.2; createdFirstTime = true; backgroundWidth = 1200; houseWidth = 180; distancePerHouse = 300; super(); screenPosition = new b2Vec2(); sceneRoot = World.getInstance().sceneRoot; clouds = new ArrayList(); startPoint = new Point(0, 0); image = new views0(); image.cacheAsBitmap = true; World.getInstance().backgroundRoot.addChild(image); initClouds(); initSun(); objectGroup1 = new ArrayList(); objectGroup2 = new ArrayList(); objectGroup3 = new ArrayList(); initObjects1(); initObjects2(); initFence(); initBirds(); initBoats(); } public function initBoats():void{ var _local1:MovieClip; _local1 = new boatsClip(); _local1.x = 160.7; _local1.y = 357.9; World.getInstance().boatRoot.addChild(_local1); _local1 = new boatsClip(); _local1.width = 1481.8; _local1.height = 142.1; _local1.x = 898.5; _local1.y = 325.7; World.getInstance().boatRoot.addChild(_local1); _local1 = new boatsClip(); _local1.x = (160.7 + backgroundWidth); _local1.y = 357.9; World.getInstance().boatRoot.addChild(_local1); _local1 = new boatsClip(); _local1.width = 1481.8; _local1.height = 142.1; _local1.x = (898.5 + backgroundWidth); _local1.y = 325.7; World.getInstance().boatRoot.addChild(_local1); _local1 = new boatsClip(); _local1.x = (160.7 + (backgroundWidth * 2)); _local1.y = 357.9; World.getInstance().boatRoot.addChild(_local1); _local1 = new boatsClip(); _local1.width = 1481.8; _local1.height = 142.1; _local1.x = (898.5 + (backgroundWidth * 2)); _local1.y = 325.7; World.getInstance().boatRoot.addChild(_local1); } public function initFence():void{ fence1 = new foreViews0(); World.getInstance().foregroundRoot.addChild(fence1); fence2 = new foreViews0(); fence2.x = fence1.width; World.getInstance().foregroundRoot.addChild(fence2); fence3 = new foreViews0(); fence3.x = (fence1.width + fence2.width); World.getInstance().foregroundRoot.addChild(fence3); } public function updateClouds():void{ var _local1:int; var _local2:int; _local1 = 0; _local2 = clouds.size(); while (_local1 < _local2) { if ((clouds.get(_local1).x + (clouds.get(_local1).width / 2)) < 0){ clouds.get(_local1).x = (((backgroundWidth * 2) + backgroundWidth) + (clouds.get(_local1).width / 2)); }; clouds.get(_local1).x = (clouds.get(_local1).x - cloudSpeed); _local1++; }; } public function createABird(_arg1:b2Vec2):void{ var _local2:Number; var _local3:Number; _local2 = (_arg1.x + 600); _local3 = ((Math.random() * 1000) % 230); bird = new Bird(); bird.image = new bird01(); bird.imageInitialXPosition = 0; bird.image.x = (_local2 + bird.imageInitialXPosition); bird.image.y = _local3; bird.initialPositionY = bird.image.y; sceneRoot.addChild(bird.image); bird.initRigidBody(); World.getInstance().birdList.add(bird); } public function initClouds():void{ var _local1:MovieClip; _local1 = new cloud0(); _local1.x = (backgroundWidth / 2); _local1.y = 154.2; World.getInstance().cloudRoot.addChild(_local1); clouds.add(_local1); _local1 = new cloud2(); _local1.x = 100; _local1.y = 154.2; World.getInstance().cloudRoot.addChild(_local1); clouds.add(_local1); _local1 = new cloud1(); _local1.x = ((backgroundWidth / 2) + backgroundWidth); _local1.y = 154.2; World.getInstance().cloudRoot.addChild(_local1); clouds.add(_local1); _local1 = new cloud2(); _local1.x = ((backgroundWidth / 2) + (backgroundWidth * 2)); _local1.y = 154.2; World.getInstance().cloudRoot.addChild(_local1); clouds.add(_local1); _local1 = new cloud0(); _local1.x = ((backgroundWidth / 2) + ((backgroundWidth * 2) * 2)); _local1.y = 154.2; World.getInstance().cloudRoot.addChild(_local1); clouds.add(_local1); _local1 = new cloud1(); _local1.x = ((backgroundWidth / 2) + ((backgroundWidth * 2) * 2)); _local1.y = 154.2; World.getInstance().cloudRoot.addChild(_local1); clouds.add(_local1); } public function initSun():void{ sun = new sunClip(); sun.x = 700.3; sun.y = 70.5; World.getInstance().sunRoot.addChild(sun); } public function refresh2():void{ destroyObjects2(); initObjects2(); refreshed = false; } public function refresh1():void{ if (!refreshed){ destroyObjects1(); destroyObjects3(); initObjects1(); refreshed = true; }; } public function destroyObjects1():void{ var _local1:int; var _local2:int; var _local3:Object; _local1 = objectGroup1.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { _local3 = objectGroup1.get(_local2); if (sceneRoot.contains(_local3.image)){ sceneRoot.removeChild(_local3.image); }; if (World.getInstance().houseList.contains(_local3)){ World.getInstance().houseList.remove(_local3); }; if (World.getInstance().ballList.contains(_local3)){ World.getInstance().ballList.remove(_local3); }; if (World.getInstance().balloonList.contains(_local3)){ World.getInstance().balloonList.remove(_local3); }; if (World.getInstance().birdList.contains(_local3)){ World.getInstance().birdList.remove(_local3); }; if (World.getInstance().treeList.contains(_local3)){ World.getInstance().treeList.remove(_local3); }; objectGroup1.remove(_local3); _local3.destroy(); _local3.image = null; _local2--; }; } public function destroyObjects3():void{ var _local1:int; var _local2:int; var _local3:Object; _local1 = objectGroup3.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { _local3 = objectGroup3.get(_local2); if (sceneRoot.contains(_local3.image)){ sceneRoot.removeChild(_local3.image); }; if (World.getInstance().houseList.contains(_local3)){ World.getInstance().houseList.remove(_local3); }; if (World.getInstance().ballList.contains(_local3)){ World.getInstance().ballList.remove(_local3); }; if (World.getInstance().balloonList.contains(_local3)){ World.getInstance().balloonList.remove(_local3); }; if (World.getInstance().birdList.contains(_local3)){ World.getInstance().birdList.remove(_local3); }; if (World.getInstance().treeList.contains(_local3)){ World.getInstance().treeList.remove(_local3); }; objectGroup3.remove(_local3); _local3.destroy(); _local3.image = null; _local2--; }; } public function update():void{ updateClouds(); updateSun(); updateFence(); } public function updateSun():void{ if ((sun.x + (sun.width / 2)) < 0){ sun.x = (((backgroundWidth * 2) + backgroundWidth) + (sun.width / 2)); }; sun.x = (sun.x - sunSpeed); } public function initObjects1():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:Point; _local1 = 0; _local2 = 4; if (image){ _local1 = 0; while (_local1 < _local2) { randomObject = ((Math.random() * 10) % 4); if (createdFirstTime){ randomObject = 0; }; if (randomObject == 1){ if (World.getInstance().currentTreeCount >= World.getInstance().maxTreeSubsequentlyAppear){ randomObject = 0; World.getInstance().currentTreeCount = 0; }; }; if ((((((randomObject == 0)) || ((randomObject == 2)))) || ((randomObject == 3)))){ house = new House(); _local3 = ((Math.random() * 10) % 4); _local3++; if (_local3 == 4){ if (World.getInstance().prevIsIceCream){ _local3 = ((Math.random() * 10) % 3); _local3++; World.getInstance().prevIsIceCream = false; }; }; if (_local3 == 1){ house.image = new house01(); } else { if (_local3 == 2){ house.image = new house02(); } else { if (_local3 == 3){ house.image = new house03(); } else { if (_local3 == 4){ house.image = new house04(); World.getInstance().prevIsIceCream = true; }; }; }; }; house.imageInitialXPosition = image.x; house.image.x = (((distancePerHouse * _local1) + house.imageInitialXPosition) + 100); sceneRoot.addChild(house.image); house.initRigidBody(); objectGroup1.add(house); World.getInstance().houseList.add(house); if (createdFirstTime){ house.image.kid.alpha = 1; World.getInstance().kid = house.image.kid; World.getInstance().kid.gotoAndStop("throw"); createdFirstTime = false; _local4 = new Point(house.image.paperPoint.x, house.image.paperPoint.y); startPoint = house.image.localToGlobal(_local4); startPoint = World.getInstance().sceneRoot.globalToLocal(startPoint); }; house = new House(); if (_local3 == 1){ house.image = new house01(); } else { if (_local3 == 2){ house.image = new house02(); } else { if (_local3 == 3){ house.image = new house03(); } else { if (_local3 == 4){ house.image = new house04(); }; }; }; }; house.imageInitialXPosition = ((backgroundWidth * 2) + image.x); house.image.x = (((distancePerHouse * _local1) + house.imageInitialXPosition) + 100); sceneRoot.addChild(house.image); house.initRigidBody(); objectGroup3.add(house); World.getInstance().houseList.add(house); World.getInstance().currentTreeCount = 0; } else { randomObject = ((Math.random() * 10) % 2); tree = new Tree(); if (randomObject == 0){ tree.image = new treeClip(); } else { tree.image = new treeClip2(); }; tree.imageInitialXPosition = image.x; tree.image.x = (((distancePerHouse * _local1) + tree.imageInitialXPosition) + 100); sceneRoot.addChild(tree.image); tree.initRigidBody(); objectGroup1.add(tree); World.getInstance().treeList.add(tree); tree = new Tree(); if (randomObject == 0){ tree.image = new treeClip(); } else { tree.image = new treeClip2(); }; tree.imageInitialXPosition = ((backgroundWidth * 2) + image.x); tree.image.x = (((distancePerHouse * _local1) + tree.imageInitialXPosition) + 100); sceneRoot.addChild(tree.image); tree.initRigidBody(); objectGroup3.add(tree); World.getInstance().treeList.add(tree); World.getInstance().currentTreeCount++; }; _local1++; }; }; } public function createABalloon(_arg1:b2Vec2):void{ var _local2:int; var _local3:Number; var _local4:Number; _local2 = ((Math.random() * 10) % 4); _local3 = (_arg1.x + 800); _local4 = ((Math.random() * 1000) % 230); _local2++; balloon = new Balloon(); balloon.image = new balloonClip(); balloon.image.balloonHead.gotoAndStop(_local2); balloon.imageInitialXPosition = 0; balloon.image.x = (_local3 + balloon.imageInitialXPosition); balloon.image.y = _local4; balloon.position.x = balloon.image.x; balloon.position.y = balloon.image.y; sceneRoot.addChild(balloon.image); World.getInstance().balloonList.add(balloon); } public function destroyBalloon(_arg1:Balloon){ var _local2:int; if (sceneRoot.contains(_arg1.image)){ sceneRoot.removeChild(_arg1.image); }; if (objectGroup1.contains(_arg1)){ _local2 = objectGroup1.indexOf(_arg1); sceneRoot.removeChild(objectGroup3.get(_local2).image); objectGroup1.removeAt(_local2); objectGroup3.removeAt(_local2); } else { if (objectGroup3.contains(_arg1)){ _local2 = objectGroup3.indexOf(_arg1); sceneRoot.removeChild(objectGroup1.get(_local2).image); objectGroup1.removeAt(_local2); objectGroup3.removeAt(_local2); } else { if (objectGroup2.contains(_arg1)){ objectGroup2.remove(_arg1); }; }; }; World.getInstance().balloonList.remove(_arg1); } public function initObjects2():void{ var _local1:int; var _local2:int; var _local3:int; _local1 = 0; _local2 = 4; _local1 = 0; while (_local1 < _local2) { randomObject = ((Math.random() * 10) % 4); if ((((((randomObject == 0)) || ((randomObject == 2)))) || ((randomObject == 3)))){ house = new House(); _local3 = ((Math.random() * 10) % 4); _local3++; if (_local3 == 1){ house.image = new house01(); } else { if (_local3 == 2){ house.image = new house02(); } else { if (_local3 == 3){ house.image = new house03(); } else { if (_local3 == 4){ house.image = new house04(); }; }; }; }; house.imageInitialXPosition = (backgroundWidth + image.x); house.image.x = (((distancePerHouse * _local1) + house.imageInitialXPosition) + 100); sceneRoot.addChild(house.image); house.initRigidBody(); objectGroup2.add(house); World.getInstance().houseList.add(house); World.getInstance().currentTreeCount = 0; } else { randomObject = ((Math.random() * 10) % 2); tree = new Tree(); if (randomObject == 0){ tree.image = new treeClip(); } else { tree.image = new treeClip2(); }; tree.imageInitialXPosition = (backgroundWidth + image.x); tree.image.x = (((distancePerHouse * _local1) + tree.imageInitialXPosition) + 100); sceneRoot.addChild(tree.image); tree.initRigidBody(); objectGroup2.add(tree); World.getInstance().treeList.add(tree); World.getInstance().currentTreeCount++; }; _local1++; }; } public function initBirds():void{ var _local1:MovieClip; _local1 = new birdsClip(); _local1.x = 209.2; _local1.y = 105.8; World.getInstance().birdRoot.addChild(_local1); _local1 = new birdsClip(); _local1.x = 873; _local1.y = 242.8; World.getInstance().birdRoot.addChild(_local1); _local1 = new birdsClip(); _local1.x = (209.2 + backgroundWidth); _local1.y = 105.8; World.getInstance().birdRoot.addChild(_local1); _local1 = new birdsClip(); _local1.x = (873 + backgroundWidth); _local1.y = 242.8; World.getInstance().birdRoot.addChild(_local1); _local1 = new birdsClip(); _local1.x = (209.2 + (backgroundWidth * 2)); _local1.y = 105.8; World.getInstance().birdRoot.addChild(_local1); _local1 = new birdsClip(); _local1.x = (873 + (backgroundWidth * 2)); _local1.y = 242.8; World.getInstance().birdRoot.addChild(_local1); } public function updateFence():void{ var _local1:Point; _local1 = World.getInstance().foregroundRoot.localToGlobal(new Point(fence2.x, fence2.y)); if ((_local1.x + fence2.width) < 0){ World.getInstance().foregroundRoot.x = (World.getInstance().foregroundRoot.x + (fence1.width + fence2.width)); }; } public function destroyObjects2():void{ var _local1:int; var _local2:int; var _local3:Object; _local1 = objectGroup2.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { _local3 = objectGroup2.get(_local2); if (sceneRoot.contains(_local3.image)){ sceneRoot.removeChild(_local3.image); }; if (World.getInstance().houseList.contains(_local3)){ World.getInstance().houseList.remove(_local3); }; if (World.getInstance().ballList.contains(_local3)){ World.getInstance().ballList.remove(_local3); }; if (World.getInstance().balloonList.contains(_local3)){ World.getInstance().balloonList.remove(_local3); }; if (World.getInstance().birdList.contains(_local3)){ World.getInstance().birdList.remove(_local3); }; if (World.getInstance().treeList.contains(_local3)){ World.getInstance().treeList.remove(_local3); }; objectGroup2.remove(_local3); _local3.destroy(); _local3.image = null; _local2--; }; } public function getPlanePos(_arg1:MovieClip):Point{ var _local2:Point; _arg1.kid.alpha = 1; _local2 = new Point(_arg1.paperPoint.x, _arg1.paperPoint.y); startPoint = _arg1.localToGlobal(_local2); startPoint = World.getInstance().sceneRoot.globalToLocal(startPoint); return (startPoint); } } }//package p_level
Section 138
//Particle2 (p_particle.Particle2) package p_particle { import Box2D.Common.Math.*; import p_entity.*; import flash.events.*; import p_singleton.*; import flash.utils.*; public class Particle2 extends Entity { public var maxWidth:Number; public var timer:Timer; public var initialLifeTime:int; public var speed:Number; public var gravity:Number; public var isWidthEqualHeight:Boolean; public var maxHeight:Number; public var lifeTime:int; public function init():void{ World.getInstance().menuRoot.addChild(image); timer = new Timer(25); timer.addEventListener(TimerEvent.TIMER, playParticle); image.width = (((Math.floor((Math.random() * 10)) + 1) % maxWidth) + 1); if (isWidthEqualHeight){ image.height = image.width; } else { image.height = (((Math.floor((Math.random() * 10)) + 1) % maxHeight) + 1); }; direction = new b2Vec2(0, 0); direction.x = (Math.random() - Math.random()); direction.y = (Math.random() - Math.random()); timer.start(); } public function playParticle(_arg1:TimerEvent):void{ if (image){ lifeTime--; image.alpha = (lifeTime / initialLifeTime); position.x = (position.x + (direction.x * speed)); position.y = (position.y + (direction.y * speed)); position.y = (position.y + gravity); super.update(); if (image.alpha <= 0){ if (World.getInstance().menuRoot.contains(image)){ World.getInstance().menuRoot.removeChild(image); }; timer.stop(); timer.removeEventListener(TimerEvent.TIMER, playParticle); }; }; } } }//package p_particle
Section 139
//StarParticle2 (p_particle.StarParticle2) package p_particle { public class StarParticle2 extends Particle2 { public function StarParticle2(){ lifeTime = 20; initialLifeTime = lifeTime; speed = 5; gravity = 2; maxWidth = 50; maxHeight = 50; image = new Star(); isWidthEqualHeight = true; init(); } } }//package p_particle
Section 140
//Plane (p_plane.Plane) package p_plane { import Box2D.Collision.Shapes.*; import Box2D.Common.Math.*; import Box2D.Dynamics.*; import p_entity.*; import p_singleton.*; public class Plane extends Entity { public var bodyDef:b2BodyDef; public var headDef:b2PolygonDef; public var speed:Number; public var died:Boolean;// = false public var friction:Number; public var triangleDef:b2PolygonDef; public var body:b2Body; public var doneOnce:Boolean;// = false public var velocity:b2Vec2; public var density:Number; public var polygonDef:b2PolygonDef; public var linearDamping:int;// = 15 public var restitution:Number; public var bodyType:int; public function Plane(){ linearDamping = 15; doneOnce = false; died = false; super(); density = 1; friction = 1; restitution = 0.5; bodyType = BodyType.PLANE; image = new paperPlane(); image.scaleX = (image.scaleX * -1); direction.Set(1, 0); angle = 0; speed = 50; velocity = new b2Vec2(); } public function destroy():void{ if (body){ World.getInstance().physicWorld.DestroyBody(body); body = null; }; } override public function update():void{ var _local1:Number; var _local2:Number; var _local3:Number; var _local4:b2Vec2; var _local5:Number; var _local6:int; if (body){ if (((!(body.touchedSolid)) && (!(body.landed)))){ velocity.Set((direction.x * speed), body.GetLinearVelocity().y); body.SetLinearVelocity(velocity); }; if (((body.touchedSolid) && (!(died)))){ died = true; if (!body.landed){ image.gotoAndStop("dead"); } else { velocity.Set(0, body.GetLinearVelocity().y); body.SetLinearVelocity(velocity); }; }; if ((((position.y < 20)) && ((body.GetLinearVelocity().y < 0)))){ body.ApplyImpulse(new b2Vec2(0, (body.GetLinearVelocity().y * -0.15)), body.GetPosition()); }; if (World.getInstance().level){ _local1 = (World.getInstance().level.backgroundWidth + (World.getInstance().level.backgroundWidth * 0.5)); _local2 = ((World.getInstance().level.backgroundWidth + World.getInstance().level.backgroundWidth) + (World.getInstance().level.backgroundWidth * 0.5)); _local3 = (World.getInstance().level.backgroundWidth + World.getInstance().level.backgroundWidth); if (position.x > _local1){ World.getInstance().level.refresh1(); }; if (position.x > _local2){ _local4 = body.GetPosition(); body.SetXForm(new b2Vec2((((_local4.x * 30) - _local3) / 30), _local4.y), body.GetAngle()); World.getInstance().level.refresh2(); position.x = (body.GetPosition().x * 30); position.y = (body.GetPosition().y * 30); _local5 = this.image.x; this.image.x = position.x; _local5 = (_local5 - image.x); _local6 = (World.getInstance().balloonList.size() - 1); while (_local6 >= 0) { World.getInstance().balloonList.get(_local6).position.x = (World.getInstance().balloonList.get(_local6).position.x - _local5); World.getInstance().balloonList.get(_local6).image.x = World.getInstance().balloonList.get(_local6).position.x; _local6--; }; _local6 = (World.getInstance().birdList.size() - 1); while (_local6 >= 0) { World.getInstance().birdList.get(_local6).position.x = (World.getInstance().birdList.get(_local6).position.x - _local5); _local4 = World.getInstance().birdList.get(_local6).body.GetPosition(); World.getInstance().birdList.get(_local6).body.SetXForm(new b2Vec2((World.getInstance().birdList.get(_local6).position.x / 30), _local4.y), body.GetAngle()); _local6--; }; World.getInstance().sceneRoot.x = (World.getInstance().sceneRoot.x + _local5); screenPosition.x = (position.x + World.getInstance().sceneRoot.x); screenPosition.y = (position.y + World.getInstance().sceneRoot.y); }; }; }; super.update(); } public function fly():void{ if (body){ body.m_linearDamping = linearDamping; body.ApplyImpulse(new b2Vec2((World.getInstance().firstDirection.x * World.getInstance().firstPower), (World.getInstance().firstDirection.y * World.getInstance().firstPower)), body.GetPosition()); speed = World.getInstance().firstPower; body.landed = false; }; } public function immobilize():void{ if (body){ body.m_linearDamping = 10000000; }; } public function initRigidBody():void{ var _local1:b2World; _local1 = World.getInstance().physicWorld; if (_local1){ polygonDef = new b2PolygonDef(); polygonDef.SetAsOrientedBox((image.body.width / (2 * 30)), (image.body.height / (2 * 30)), new b2Vec2((image.body.x / (1 * 30)), (image.body.y / (1 * 30)))); polygonDef.density = density; polygonDef.friction = friction; polygonDef.restitution = restitution; polygonDef.filter.groupIndex = bodyType; polygonDef.id = "body"; triangleDef = new b2PolygonDef(); triangleDef.vertexCount = 3; triangleDef.vertices[2] = new b2Vec2(((image.triangle.width / (2 * 30)) + (image.triangle.x / (1 * 30))), ((-(image.triangle.height) / (2 * 30)) + (image.triangle.y / (1 * 30)))); triangleDef.vertices[1] = new b2Vec2(((-(image.triangle.width) / (2 * 30)) + (image.triangle.x / (1 * 30))), ((-(image.triangle.height) / (2 * 30)) + (image.triangle.y / (1 * 30)))); triangleDef.vertices[0] = new b2Vec2(((-(image.triangle.width) / (2 * 30)) + (image.triangle.x / (1 * 30))), ((image.triangle.height / (2 * 30)) + (image.triangle.y / (1 * 30)))); triangleDef.density = density; triangleDef.friction = friction; triangleDef.restitution = restitution; triangleDef.filter.groupIndex = bodyType; triangleDef.id = "triangle"; headDef = new b2PolygonDef(); headDef.SetAsOrientedBox((image.head.width / (2 * 30)), (image.head.height / (2 * 30)), new b2Vec2((image.head.x / (1 * 30)), (image.head.y / (1 * 30)))); headDef.density = density; headDef.friction = friction; headDef.restitution = restitution; headDef.filter.groupIndex = bodyType; headDef.id = "head"; bodyDef = new b2BodyDef(); bodyDef.userData = image; bodyDef.position.Set((position.x / World.physScale), (position.y / World.physScale)); bodyDef.angularDamping = 100000; bodyDef.linearDamping = linearDamping; body = _local1.CreateBody(bodyDef); body.CreateShape(polygonDef); body.CreateShape(headDef); body.CreateShape(triangleDef); body.SetMassFromShapes(); body.type = bodyType; body.landed = true; }; } } }//package p_plane
Section 141
//CollisionDetector (p_singleton.CollisionDetector) package p_singleton { import org.idmedia.as3commons.util.*; import p_level.*; import p_billboard.*; public class CollisionDetector { public var treeList:ArrayList; public var level:Level; public var balloonList:ArrayList; public var planeList:ArrayList; public var birdList:ArrayList; public var ballList:ArrayList; public var houseList:ArrayList; private static var INSTANCE:CollisionDetector; public function CollisionDetector(){ planeList = World.getInstance().planeList; balloonList = World.getInstance().balloonList; houseList = World.getInstance().houseList; ballList = World.getInstance().ballList; birdList = World.getInstance().birdList; treeList = World.getInstance().treeList; level = World.getInstance().level; } public function planeBalloonCollision():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Billboard; _local1 = 0; _local2 = 0; _local3 = balloonList.size(); _local4 = planeList.size(); _local1 = (_local3 - 1); while (_local1 >= 0) { _local2 = (_local4 - 1); while (_local2 >= 0) { _local5 = (planeList.get(_local2).image.x - balloonList.get(_local1).image.x); _local6 = (planeList.get(_local2).image.y - balloonList.get(_local1).image.y); _local7 = Math.sqrt(((_local5 * _local5) + (_local6 * _local6))); if (_local7 < 40){ if (!World.getInstance().gameMuted){ World.getInstance().popSound.play(); }; World.getInstance().power = (World.getInstance().power + 750); if (World.getInstance().power > World.getInstance().maxPower){ World.getInstance().power = World.getInstance().maxPower; }; if (World.getInstance().menu){ World.getInstance().menu.windBar.bar.width = (World.getInstance().power / 10); }; World.getInstance().score = (World.getInstance().score + balloonList.get(_local1).bonusScore); World.getInstance().menu.scoreText.text = ("" + World.getInstance().score); World.getInstance().combo++; World.getInstance().menu.comboText.text = ("Balloons : X" + World.getInstance().combo); World.getInstance().balloonPopped++; if (World.getInstance().balloonPopped >= 50){ if (!World.getInstance().balloonPopper){ World.getInstance().balloonPopper = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new balloonPopperMedal(), World.getInstance().balloonPopperName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; }; if (World.getInstance().menu){ _local8 = new Billboard(("+ " + balloonList.get(_local1).bonusScore), planeList.get(_local2).screenPosition.x, planeList.get(_local2).screenPosition.y, 20); }; balloonList.get(_local1).image.gotoAndStop(2); balloonList.get(_local1).dieTimer.start(); balloonList.removeAt(_local1); }; _local2--; }; _local1--; }; } public function checkCollision():void{ planeHouseCollision(); planeTreeCollision(); planeBalloonCollision(); } public function checkDistance():void{ if (World.getInstance().playedPlane){ if (level){ if ((World.getInstance().meterPassed % World.getInstance().meterBeforeABirdShowUp) == 0){ level.createABird(World.getInstance().playedPlane.position); }; if ((World.getInstance().meterPassed % World.getInstance().meterBeforeABalloonShowUp) == 0){ level.createABalloon(World.getInstance().playedPlane.position); }; }; }; } public function planeHouseCollision():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Billboard; _local1 = 0; _local2 = 0; _local3 = houseList.size(); _local4 = planeList.size(); _local1 = 0; while (_local1 < _local3) { _local2 = 0; while (_local2 < _local4) { if (!houseList.get(_local1).image.collided){ if (houseList.get(_local1).image.x < planeList.get(_local2).image.x){ houseList.get(_local1).image.collided = true; World.getInstance().score = (World.getInstance().score + houseList.get(_local1).bonusScore); if (World.getInstance().menu){ World.getInstance().menu.scoreText.text = ("" + World.getInstance().score); World.getInstance().meterPassed++; if ((World.getInstance().meterPassed % 50) == 0){ _local5 = new Billboard((("" + World.getInstance().meterPassed) + " meters passed"), (planeList.get(_local2).screenPosition.x + 100), planeList.get(_local2).screenPosition.y, 60); if (World.getInstance().meterBeforeABirdShowUp > 1){ World.getInstance().meterBeforeABirdShowUp--; }; }; if (World.getInstance().meterPassed >= 500){ if (!World.getInstance().traveller){ World.getInstance().traveller = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new travellerMedal(), World.getInstance().travellerName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; }; checkDistance(); }; }; }; _local2++; }; _local1++; }; } public function planeTreeCollision():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Billboard; _local1 = 0; _local2 = 0; _local3 = treeList.size(); _local4 = planeList.size(); _local1 = 0; while (_local1 < _local3) { _local2 = 0; while (_local2 < _local4) { if (!treeList.get(_local1).image.collided){ if (treeList.get(_local1).image.x < planeList.get(_local2).image.x){ treeList.get(_local1).image.collided = true; World.getInstance().score = (World.getInstance().score + treeList.get(_local1).bonusScore); if (World.getInstance().menu){ World.getInstance().menu.scoreText.text = ("" + World.getInstance().score); World.getInstance().meterPassed++; if ((World.getInstance().meterPassed % 50) == 0){ _local5 = new Billboard((("" + World.getInstance().meterPassed) + " meters passed"), (planeList.get(_local2).screenPosition.x + 100), planeList.get(_local2).screenPosition.y, 60); if (World.getInstance().meterBeforeABirdShowUp > 1){ World.getInstance().meterBeforeABirdShowUp--; }; }; if (World.getInstance().meterPassed >= 500){ if (!World.getInstance().traveller){ World.getInstance().traveller = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new travellerMedal(), World.getInstance().travellerName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; }; checkDistance(); }; }; }; _local2++; }; _local1++; }; } public static function getInstance():CollisionDetector{ if (INSTANCE == null){ INSTANCE = new (CollisionDetector); }; return (INSTANCE); } } }//package p_singleton
Section 142
//GameManager (p_singleton.GameManager) package p_singleton { import flash.display.*; import flash.events.*; import p_gameState.*; public class GameManager extends MovieClip { private var gameState:GameState; private static var INSTANCE:GameManager; public function GameManager(){ initListeners(); addChild(World.getInstance().backgroundRoot); addChild(World.getInstance().testRoot); addChild(World.getInstance().cloudRoot); addChild(World.getInstance().sunRoot); addChild(World.getInstance().birdRoot); addChild(World.getInstance().boatRoot); addChild(World.getInstance().sceneRoot); addChild(World.getInstance().foregroundRoot); addChild(World.getInstance().menuRoot); addChild(World.getInstance().maskRoot); } public function initListeners():void{ this.addEventListener(Event.ENTER_FRAME, update); } public function setGameState(_arg1:GameState):void{ if (this.gameState){ if (this.contains(this.gameState)){ this.removeChild(this.gameState); this.gameState = null; }; }; this.gameState = _arg1; addChild(_arg1); } public function update(_arg1:Event):void{ if (gameState){ gameState.update(); }; } public static function getInstance():GameManager{ if (!INSTANCE){ INSTANCE = new (GameManager); }; return (INSTANCE); } } }//package p_singleton
Section 143
//Updater (p_singleton.Updater) package p_singleton { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import flash.display.*; import org.idmedia.as3commons.util.*; import p_level.*; public class Updater { public var level:Level; private var stageHeight:Number; private var sceneRoot:Sprite; private var midY:Number; private var midX:Number;// = 200 public var treeList:ArrayList; public var houseList:ArrayList; public var planeList:ArrayList; private var stageWidth:Number; public var balloonList:ArrayList; public var birdList:ArrayList; public var ballList:ArrayList; private static var INSTANCE:Updater; public function Updater(){ stageWidth = World.getInstance().gameWidth; stageHeight = World.getInstance().gameHeight; midX = 200; midY = (stageHeight / 2); sceneRoot = World.getInstance().sceneRoot; super(); planeList = World.getInstance().planeList; balloonList = World.getInstance().balloonList; houseList = World.getInstance().houseList; ballList = World.getInstance().ballList; birdList = World.getInstance().birdList; treeList = World.getInstance().treeList; level = World.getInstance().level; } public function destroyBirds():void{ var _local1:int; var _local2:int; _local1 = birdList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { World.getInstance().sceneRoot.removeChild(birdList.get(_local2).image); birdList.get(_local2).destroy(); birdList.removeAt(_local2); _local2--; }; } public function updateLevel():void{ var _local1:Number; var _local2:Number; var _local3:int; var _local4:int; var _local5:Number; var _local6:String; var _local7:Number; if (((World.getInstance().playedPlane) && ((World.getInstance().planeList.size() > 0)))){ _local1 = World.getInstance().playedPlane.screenPosition.x; _local2 = World.getInstance().playedPlane.screenPosition.y; _local3 = World.getInstance().gameWidth; _local4 = World.getInstance().gameHeight; _local5 = 200; _local6 = sceneRoot.stage.quality; sceneRoot.stage.quality = StageQuality.LOW; if (World.getInstance().playedPlane.position.x < 200){ } else { if (midX != _local1){ _local7 = (midX - _local1); sceneRoot.x = (sceneRoot.x + (_local7 / 1)); World.getInstance().foregroundRoot.x = (World.getInstance().foregroundRoot.x + (_local7 * 1.5)); }; }; level.update(); sceneRoot.stage.quality = _local6; }; } public function update():void{ updatePlanes(); updateBalls(); updateBalloons(); updateBirds(); if (level){ updateLevel(); }; checkMedals(); } public function checkMedals():void{ if (World.getInstance().currentMedalNum == World.getInstance().numOfMedal){ if (!World.getInstance().champion){ World.getInstance().champion = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new championMedal(), World.getInstance().championName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; }; } public function updateBalloons():void{ var _local1:int; var _local2:int; _local1 = balloonList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { balloonList.get(_local2).screenPosition.x = (balloonList.get(_local2).position.x + sceneRoot.x); balloonList.get(_local2).screenPosition.y = (balloonList.get(_local2).position.y + sceneRoot.y); balloonList.get(_local2).update(); if (balloonList.get(_local2).screenPosition.x < 0){ World.getInstance().sceneRoot.removeChild(balloonList.get(_local2).image); balloonList.removeAt(_local2); }; _local2--; }; } public function updateBalls():void{ var _local1:int; var _local2:int; _local1 = ballList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { ballList.get(_local2).position.x = (ballList.get(_local2).body.GetPosition().x * 30); ballList.get(_local2).position.y = (ballList.get(_local2).body.GetPosition().y * 30); ballList.get(_local2).screenPosition.x = (ballList.get(_local2).position.x + sceneRoot.x); ballList.get(_local2).screenPosition.y = (ballList.get(_local2).position.y + sceneRoot.y); ballList.get(_local2).angle = b2Math.radiansToDegrees(ballList.get(_local2).body.GetAngle()); ballList.get(_local2).update(); _local2--; }; } public function updateBirds():void{ var _local1:int; var _local2:int; _local1 = birdList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { birdList.get(_local2).position.x = (birdList.get(_local2).body.GetPosition().x * 30); birdList.get(_local2).position.y = (birdList.get(_local2).body.GetPosition().y * 30); birdList.get(_local2).screenPosition.x = (birdList.get(_local2).position.x + sceneRoot.x); birdList.get(_local2).screenPosition.y = (birdList.get(_local2).position.y + sceneRoot.y); birdList.get(_local2).angle = b2Math.radiansToDegrees(birdList.get(_local2).body.GetAngle()); birdList.get(_local2).update(); if (birdList.get(_local2).screenPosition.x < 0){ World.getInstance().sceneRoot.removeChild(birdList.get(_local2).image); birdList.get(_local2).destroy(); birdList.removeAt(_local2); }; _local2--; }; } public function destroyHouses():void{ var _local1:int; var _local2:int; _local1 = houseList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { World.getInstance().sceneRoot.removeChild(houseList.get(_local2).image); houseList.get(_local2).destroy(); houseList.removeAt(_local2); _local2--; }; } public function updatePlanes():void{ var _local1:int; var _local2:int; var _local3:b2Vec2; var _local4:b2Body; _local1 = planeList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { planeList.get(_local2).position.x = (planeList.get(_local2).body.GetPosition().x * 30); planeList.get(_local2).position.y = (planeList.get(_local2).body.GetPosition().y * 30); planeList.get(_local2).screenPosition.x = (planeList.get(_local2).position.x + sceneRoot.x); planeList.get(_local2).screenPosition.y = (planeList.get(_local2).position.y + sceneRoot.y); planeList.get(_local2).angle = b2Math.radiansToDegrees(planeList.get(_local2).body.GetAngle()); if (((!(planeList.get(_local2).body.touchedSolid)) && (!(planeList.get(_local2).body.landed)))){ _local3 = planeList.get(_local2).body.GetLinearVelocity().Copy(); _local3.Normalize(); planeList.get(_local2).angle = b2Vec2.vectorToRotation(planeList.get(_local2).direction, _local3); if (_local3.y < 0){ planeList.get(_local2).angle = (planeList.get(_local2).angle * -1); }; _local4 = planeList.get(_local2).body; planeList.get(_local2).body.SetXForm(_local4.GetPosition(), b2Math.degreesToRadians(planeList.get(_local2).angle)); }; if (((((!(planeList.get(_local2).body.touchedSolid)) && (planeList.get(_local2).body.landed))) && (!(planeList.get(_local2).doneOnce)))){ planeList.get(_local2).doneOnce = true; }; planeList.get(_local2).update(); _local2--; }; } public function destroyTrees():void{ var _local1:int; var _local2:int; _local1 = treeList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { World.getInstance().sceneRoot.removeChild(treeList.get(_local2).image); treeList.get(_local2).destroy(); treeList.removeAt(_local2); _local2--; }; } public function destroyBalloons():void{ var _local1:int; var _local2:int; _local1 = balloonList.size(); _local2 = (_local1 - 1); while (_local2 >= 0) { World.getInstance().sceneRoot.removeChild(balloonList.get(_local2).image); balloonList.removeAt(_local2); _local2--; }; } public static function getInstance():Updater{ if (INSTANCE == null){ INSTANCE = new (Updater); }; return (INSTANCE); } } }//package p_singleton
Section 144
//World (p_singleton.World) package p_singleton { import Box2D.Common.Math.*; import Box2D.Dynamics.*; import Box2D.Collision.*; import p_entity.*; import flash.display.*; import flash.events.*; import org.idmedia.as3commons.util.*; import p_level.*; import flash.utils.*; import p_plane.*; import flash.net.*; import flash.media.*; public class World extends EventDispatcher { public var maxPower:int;// = 1500 public var sharedObject:SharedObject; public var spinTimer:Timer; public var balloonPopped:int;// = 0 public var firstPower:int; public var maxTreeSubsequentlyAppear:int;// = 2 public var balloonPopper:Boolean;// = false public var boatRoot:MovieClip; public var medalInfo:MedalInfo; public var plusTrue:Boolean;// = true public var meterBeforeABirdShowUp:int;// = 4 public var acquainted:Boolean;// = false public var fallSound:Sound; public var loaderScreen:MovieClip; public var choseDirection:Boolean;// = false public var champion:Boolean;// = false public var timesHit:int;// = 0 public var crashLanding:Boolean;// = false public var fly:Boolean;// = false public var roofLanderName:String;// = "- Roof Lander -" public var gameTimer:Timer; protected var dbgDraw:b2DebugDraw; public var score:Number;// = 0 public var testRoot:MovieClip; public var buttonHitSound:Sound; public var currentTreeCount:int;// = 0 public var prevIsIceCream:Boolean;// = false public var gameMuted:Boolean;// = false public var championName:String;// = "- Champion -" public var gameQuality:String;// = "high" public var firstDirection:b2Vec2; public var cloudRoot:MovieClip; public var traveller:Boolean;// = false public var foregroundRoot:MovieClip; public var kid:MovieClip; public var millionaire:Boolean;// = false public var maximumPower:Boolean;// = false public var menuRoot:MovieClip; public var maximumPowerName:String;// = "- Maximum Power -" public var birdList:ArrayList; public var numOfMedal:int;// = 9 public var quality:String; public var stageRoot:Stage; public var gameWidth:int;// = 800 public var power:int; public var directionTimer:Timer; public var playerName:String;// = "Your Name Here" public var helpingHand:Boolean;// = false public var crashLandingName:String;// = "- Crash Landing -" public var tempScore:Number;// = 0 public var planeList:ArrayList; public var meterBeforeABalloonShowUp:int;// = 8 public var backgroundRoot:MovieClip; public var helpScreenOpenned:Boolean;// = false public var birdRoot:MovieClip; public var ballList:ArrayList; public var popSound:Sound; public var physicWorld:b2World; public var spriteRoot:MovieClip; public var playedPlane:Plane; public var sunRoot:MovieClip; public var meterPassed:int;// = 0 public var treeList:ArrayList; public var menu:MovieClip; public var balloonPopperName:String;// = "- Balloon Popper -" public var balloonList:ArrayList; public var level:Level; public var acquaintedName:String;// = "- Acquainted -" public var sceneRoot:MovieClip; public var combo:int;// = 0 public var birdHunter:Boolean;// = false public var currentMedalNum:int;// = 0 public var triviaNumber:int; public var gameHeight:int;// = 500 public var helpingHandName:String;// = "- Helping Hand -" public var hitTreeSound:Sound; public var gamePaused:Boolean;// = false public var triviaList:ArrayList; public var birdHunterName:String;// = "- Bird Hunter -" public var roofLander:Boolean;// = false protected var dbgSprite:Sprite; public var taskCompleteSound:Sound; public var medalGainedSound:Sound; public var houseList:ArrayList; public var chosePower:Boolean;// = false public var travellerName:String;// = "- Traveller -" public var maskRoot:MovieClip; public var millionaireName:String;// = "- Millionaire -" public static const gameUpdateInterval:int = 30; public static const gravity:Number = 2; public static const physicsIteration:int = 10; public static const physicsDT:Number = 0.0333333333333333; public static const physScale:Number = 30; private static var INSTANCE:World; public function World(){ var _local1:MovieClip; gameWidth = 800; gameHeight = 500; score = 0; tempScore = 0; combo = 0; meterPassed = 0; currentTreeCount = 0; maxTreeSubsequentlyAppear = 2; prevIsIceCream = false; maxPower = 1500; power = maxPower; plusTrue = true; fly = false; chosePower = false; choseDirection = false; balloonPopped = 0; meterBeforeABirdShowUp = 4; meterBeforeABalloonShowUp = 8; numOfMedal = 9; currentMedalNum = 0; balloonPopper = false; balloonPopperName = "- Balloon Popper -"; roofLander = false; roofLanderName = "- Roof Lander -"; traveller = false; travellerName = "- Traveller -"; maximumPower = false; maximumPowerName = "- Maximum Power -"; acquainted = false; acquaintedName = "- Acquainted -"; birdHunter = false; birdHunterName = "- Bird Hunter -"; crashLanding = false; crashLandingName = "- Crash Landing -"; helpingHand = false; helpingHandName = "- Helping Hand -"; millionaire = false; millionaireName = "- Millionaire -"; champion = false; championName = "- Champion -"; gamePaused = false; helpScreenOpenned = false; playerName = "Your Name Here"; gameMuted = false; gameQuality = StageQuality.HIGH; timesHit = 0; super(); sceneRoot = new MovieClip(); backgroundRoot = new MovieClip(); cloudRoot = new MovieClip(); foregroundRoot = new MovieClip(); menuRoot = new MovieClip(); sunRoot = new MovieClip(); birdRoot = new MovieClip(); boatRoot = new MovieClip(); testRoot = new MovieClip(); maskRoot = new MovieClip(); _local1 = new maskClip(); maskRoot.addChild(_local1); gameTimer = new Timer(gameUpdateInterval); gameTimer.addEventListener(TimerEvent.TIMER, updateWorld); planeList = new ArrayList(); balloonList = new ArrayList(); houseList = new ArrayList(); ballList = new ArrayList(); birdList = new ArrayList(); treeList = new ArrayList(); firstDirection = new b2Vec2(); spinTimer = new Timer(1); spinTimer.addEventListener(TimerEvent.TIMER, startSpin); directionTimer = new Timer(1); directionTimer.addEventListener(TimerEvent.TIMER, startRotate); medalInfo = new MedalInfo(); initTrivia(); } public function detachFromForegroundRoot():void{ var _local1:int; var _local2:int; _local1 = foregroundRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { foregroundRoot.removeChildAt(_local2); _local2--; }; } public function initPhysicWorld(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2, _arg4:Boolean=true, _arg5:b2ContactListener=null, _arg6:b2ContactFilter=null):void{ var _local7:b2AABB; _local7 = new b2AABB(); _local7.lowerBound.Set((_arg1.x / physScale), (_arg1.y / physScale)); _local7.upperBound.Set((_arg2.x / physScale), (_arg2.y / physScale)); physicWorld = new b2World(_local7, _arg3, _arg4); if (_arg5){ physicWorld.SetContactListener(_arg5); }; if (_arg6){ physicWorld.SetContactFilter(_arg6); }; } public function detachFromSceneRoot():void{ var _local1:int; var _local2:int; _local1 = sceneRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { sceneRoot.removeChildAt(_local2); _local2--; }; } public function detachFromBirdRoot():void{ var _local1:int; var _local2:int; _local1 = birdRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { birdRoot.removeChildAt(_local2); _local2--; }; } public function updateWorld(_arg1:TimerEvent):void{ physicWorld.Step(physicsDT, physicsIteration); dispatchEvent(new Event(WorldEvent.ON_UPDATE)); _arg1.updateAfterEvent(); } public function startRotate(_arg1:TimerEvent):void{ if (kid){ if (!gamePaused){ if (kid.lineBar.rotation >= 45){ plusTrue = false; } else { if (kid.lineBar.rotation <= -45){ plusTrue = true; }; }; if (plusTrue){ kid.lineBar.rotation++; } else { kid.lineBar.rotation--; }; }; }; } public function initWorld():void{ dispatchEvent(new Event(WorldEvent.ON_INIT)); } public function detachFromBackgroundRoot():void{ var _local1:int; var _local2:int; _local1 = backgroundRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { backgroundRoot.removeChildAt(_local2); _local2--; }; } public function stopRotateTheWheel():void{ directionTimer.stop(); if (kid){ firstDirection = b2Vec2.vectorTransform(kid.lineBar.rotation, new b2Vec2(1, 0)); }; } public function setDebugMode(_arg1:Boolean):void{ if (_arg1){ dbgDraw = new b2DebugDraw(); dbgSprite = new Sprite(); dbgDraw.m_sprite = dbgSprite; dbgDraw.m_drawScale = 30; dbgDraw.m_fillAlpha = 0.6; dbgDraw.m_lineThickness = 1; dbgDraw.m_drawFlags = 4294967295; physicWorld.SetDebugDraw(dbgDraw); sceneRoot.addChild(dbgSprite); } else { if (sceneRoot.contains(dbgSprite)){ sceneRoot.removeChild(dbgSprite); }; }; } public function detachFromSunRoot():void{ var _local1:int; var _local2:int; _local1 = sunRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { sunRoot.removeChildAt(_local2); _local2--; }; } public function setFocusToStage():void{ stageRoot.focus = stageRoot; } public function initSoundFX():void{ medalGainedSound = new MedalGainedSound(); fallSound = new FallSound(); buttonHitSound = new ButtonHitSound(); popSound = new BalloonPopSound(); hitTreeSound = new HitTreeSound(); taskCompleteSound = new TaskCompleteSound(); } public function saveGame():void{ initSharedObject(); sharedObject.data.balloonPopper = balloonPopper; sharedObject.data.roofLander = roofLander; sharedObject.data.traveller = traveller; sharedObject.data.maximumPower = maximumPower; sharedObject.data.acquainted = acquainted; sharedObject.data.birdHunter = birdHunter; sharedObject.data.crashLanding = crashLanding; sharedObject.data.helpingHand = helpingHand; sharedObject.data.millionaire = millionaire; sharedObject.data.champion = champion; } public function pauseGame():void{ dispatchEvent(new Event(WorldEvent.ON_PAUSE)); gameTimer.stop(); } public function initSharedObject():void{ try { sharedObject = SharedObject.getLocal("AWindyDayMemory"); } catch(error:Error) { return; }; } public function detachFromBoatRoot():void{ var _local1:int; var _local2:int; _local1 = boatRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { boatRoot.removeChildAt(_local2); _local2--; }; } public function detachFromCloudRoot():void{ var _local1:int; var _local2:int; _local1 = cloudRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { cloudRoot.removeChildAt(_local2); _local2--; }; } public function startGame():void{ dispatchEvent(new Event(WorldEvent.ON_START)); gameTimer.start(); } public function stopTheWheel():void{ spinTimer.stop(); if (kid){ firstPower = kid.powerBar.bar.height; }; } public function initTrivia():void{ triviaList = new ArrayList(); triviaList.add("Toge production literaly means beansprout production"); triviaList.add("The invention of the paper airplane is mystery, but Leonardo Di Vinci is often given credit for the feat"); triviaList.add("A paper airplane thrown in space will not fly; it will float in a straight line. Unless it hits an object, it could literally float forever"); triviaList.add("The record wingspan of a paper airplane is 40 feet and 10 inches. The craft flew over 114 feet before crashing into a wall"); triviaList.add("Scientists, engineers and students use paper airplanes to study aerodynamics"); triviaList.add("The National Aeronautics and Space Administration (NASA) sent a paper airplane to space on a space shuttle"); triviaList.add("According to world record holder Ken Blackburn, airplanes in the shape of an \"X,\" a hoop and a \"futuristic spacecraft\" can all be made to fly"); triviaList.add("The humidity outside can affect the performance of a paper airplane thrown inside"); triviaNumber = ((Math.random() * 10) % triviaList.size()); } public function changeLevel(_arg1:Level):void{ this.level = _arg1; Updater.getInstance().level = _arg1; CollisionDetector.getInstance().level = _arg1; } public function startSpin(_arg1:TimerEvent):void{ if (kid){ if (!gamePaused){ if (kid.powerBar.bar.height >= 88){ plusTrue = false; } else { if (kid.powerBar.bar.height <= 0){ plusTrue = true; }; }; if (plusTrue){ kid.powerBar.bar.height++; } else { kid.powerBar.bar.height--; }; }; }; } public function spinTheWheel():void{ spinTimer.start(); } public function rotateTheWheel():void{ directionTimer.start(); } public function detachFromMenuRoot():void{ var _local1:int; var _local2:int; _local1 = menuRoot.numChildren; _local2 = (_local1 - 1); while (_local2 >= 0) { menuRoot.removeChildAt(_local2); _local2--; }; } public function loadGame():void{ initSharedObject(); balloonPopper = sharedObject.data.balloonPopper; roofLander = sharedObject.data.roofLander; traveller = sharedObject.data.traveller; maximumPower = sharedObject.data.maximumPower; acquainted = sharedObject.data.acquainted; birdHunter = sharedObject.data.birdHunter; crashLanding = sharedObject.data.crashLanding; helpingHand = sharedObject.data.helpingHand; millionaire = sharedObject.data.millionaire; champion = sharedObject.data.champion; sharedObject.flush(); sharedObject.close(); } public static function getInstance():World{ if (!INSTANCE){ INSTANCE = new (World); }; return (INSTANCE); } } }//package p_singleton
Section 145
//WorldEvent (p_singleton.WorldEvent) package p_singleton { public class WorldEvent { public static var ON_UPDATE:String = "OnUpdate"; public static var ON_LOADED:String = "OnLoaded"; public static var ON_START:String = "OnStart"; public static var ON_INIT:String = "OnInit"; public static var ON_PAUSE:String = "OnPause"; public static var ON_LOADING:String = "OnLoading"; } }//package p_singleton
Section 146
//ContactFilterer (p_util.ContactFilterer) package p_util { import Box2D.Collision.Shapes.*; import Box2D.Dynamics.*; import p_entity.*; public class ContactFilterer extends b2ContactFilter { public static var b2_defaultFilter:b2ContactFilter = new b2ContactFilter(); override public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{ var _local3:b2FilterData; var _local4:b2FilterData; var _local5:Boolean; _local3 = _arg1.GetFilterData(); _local4 = _arg2.GetFilterData(); if (!birdAndBird(_local3, _local4)){ return (false); }; _local5 = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0)))); return (_local5); } public function birdAndBird(_arg1:b2FilterData, _arg2:b2FilterData):Boolean{ if (_arg1.groupIndex == BodyType.BIRD){ if (_arg2.groupIndex == BodyType.BIRD){ return (false); }; } else { if (_arg2.groupIndex == BodyType.BIRD){ if (_arg1.groupIndex == BodyType.BIRD){ return (false); }; }; }; return (true); } } }//package p_util
Section 147
//ContactListener (p_util.ContactListener) package p_util { import Box2D.Dynamics.*; import Box2D.Collision.*; import Box2D.Dynamics.Contacts.*; import p_entity.*; import p_singleton.*; public class ContactListener extends b2ContactListener { public function planeTouchSolid(_arg1:b2ContactPoint, _arg2:b2Contact):void{ if (_arg1.shape1.GetBody().type == BodyType.PLANE){ if (!_arg1.shape1.GetBody().landed){ if ((((_arg1.shape2.GetBody().type == BodyType.BIRD)) || ((_arg1.shape2.GetBody().type == BodyType.TREE)))){ _arg1.shape1.GetBody().touchedSolid = true; _arg1.shape1.GetBody().m_angularDamping = 0; _arg1.shape1.GetBody().m_linearDamping = 0; _arg1.shape1.GetBody().hitTheHead = true; if (_arg1.shape2.GetBody().type == BodyType.BIRD){ if (!World.getInstance().birdHunter){ World.getInstance().birdHunter = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new birdHunterMedal(), World.getInstance().birdHunterName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (((!(World.getInstance().gameMuted)) && ((World.getInstance().timesHit < 4)))){ World.getInstance().hitTreeSound.play(); World.getInstance().timesHit++; }; } else { if (!World.getInstance().crashLanding){ World.getInstance().crashLanding = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new crashLandingMedal(), World.getInstance().crashLandingName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (((!(World.getInstance().gameMuted)) && ((World.getInstance().timesHit < 4)))){ World.getInstance().hitTreeSound.play(); World.getInstance().timesHit++; }; }; }; if ((((_arg1.shape2.GetBody().type == BodyType.HOUSE)) || ((_arg1.shape2.GetBody().type == BodyType.WALL)))){ _arg1.shape1.GetBody().touchedSolid = true; _arg1.shape1.GetBody().m_angularDamping = 0; _arg1.shape1.GetBody().m_linearDamping = 0; if (_arg1.shape1.id != "body"){ _arg1.shape1.GetBody().hitTheHead = true; if (!World.getInstance().crashLanding){ World.getInstance().crashLanding = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new crashLandingMedal(), World.getInstance().crashLandingName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (((!(World.getInstance().gameMuted)) && ((World.getInstance().timesHit < 4)))){ World.getInstance().hitTreeSound.play(); World.getInstance().timesHit++; }; } else { if (_arg1.shape1.id == "body"){ if (!_arg1.shape1.GetBody().hitTheHead){ _arg1.shape1.GetBody().landed = true; }; if (_arg1.shape2.GetBody().type == BodyType.HOUSE){ _arg1.shape1.GetBody().touchedClip = _arg1.shape2.GetBody().m_userData; }; }; }; }; } else { if (_arg1.shape2.GetBody().type == BodyType.BIRD){ _arg2.m_flags = (_arg2.m_flags | b2Contact.e_nonSolidFlag); }; }; } else { if (_arg1.shape2.GetBody().type == BodyType.PLANE){ if (!_arg1.shape2.GetBody().landed){ if ((((_arg1.shape1.GetBody().type == BodyType.BIRD)) || ((_arg1.shape1.GetBody().type == BodyType.TREE)))){ _arg1.shape2.GetBody().touchedSolid = true; _arg1.shape2.GetBody().m_angularDamping = 0; _arg1.shape2.GetBody().m_linearDamping = 0; _arg1.shape2.GetBody().hitTheHead = true; if (_arg1.shape1.GetBody().type == BodyType.BIRD){ if (!World.getInstance().birdHunter){ World.getInstance().birdHunter = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new birdHunterMedal(), World.getInstance().birdHunterName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (((!(World.getInstance().gameMuted)) && ((World.getInstance().timesHit < 4)))){ World.getInstance().hitTreeSound.play(); World.getInstance().timesHit++; }; } else { if (!World.getInstance().crashLanding){ World.getInstance().crashLanding = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new crashLandingMedal(), World.getInstance().crashLandingName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (((!(World.getInstance().gameMuted)) && ((World.getInstance().timesHit < 4)))){ World.getInstance().hitTreeSound.play(); World.getInstance().timesHit++; }; }; } else { if ((((_arg1.shape1.GetBody().type == BodyType.HOUSE)) || ((_arg1.shape1.GetBody().type == BodyType.WALL)))){ _arg1.shape2.GetBody().touchedSolid = true; _arg1.shape2.GetBody().m_angularDamping = 0; _arg1.shape2.GetBody().m_linearDamping = 0; if (_arg1.shape2.id != "body"){ _arg1.shape2.GetBody().hitTheHead = true; if (!World.getInstance().crashLanding){ World.getInstance().crashLanding = true; World.getInstance().menuRoot.addChild(World.getInstance().medalInfo.image); World.getInstance().medalInfo.goInOfScreen(new crashLandingMedal(), World.getInstance().crashLandingName); World.getInstance().currentMedalNum++; World.getInstance().saveGame(); if (!World.getInstance().gameMuted){ World.getInstance().medalGainedSound.play(); }; }; if (((!(World.getInstance().gameMuted)) && ((World.getInstance().timesHit < 4)))){ World.getInstance().hitTreeSound.play(); World.getInstance().timesHit++; }; } else { if (_arg1.shape2.id == "body"){ if (!_arg1.shape2.GetBody().hitTheHead){ _arg1.shape2.GetBody().landed = true; }; if (_arg1.shape1.GetBody().type == BodyType.HOUSE){ _arg1.shape2.GetBody().touchedClip = _arg1.shape1.GetBody().m_userData; }; }; }; }; }; } else { if (_arg1.shape1.GetBody().type == BodyType.BIRD){ _arg2.m_flags = (_arg2.m_flags | b2Contact.e_nonSolidFlag); }; }; }; }; } override public function Persist(_arg1:b2ContactPoint, _arg2:b2Contact):void{ } override public function Add(_arg1:b2ContactPoint, _arg2:b2Contact):void{ planeTouchSolid(_arg1, _arg2); } override public function Remove(_arg1:b2ContactPoint, _arg2:b2Contact):void{ } override public function Result(_arg1:b2ContactResult, _arg2:b2Contact):void{ } } }//package p_util
Section 148
//acquaintedMedal (acquaintedMedal) package { import flash.display.*; public dynamic class acquaintedMedal extends MovieClip { public function acquaintedMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 149
//ballClip (ballClip) package { import flash.display.*; public dynamic class ballClip extends MovieClip { public var head:MovieClip; public function ballClip(){ addFrameScript(0, frame1); } function frame1(){ stop(); } } }//package
Section 150
//balloonClip (balloonClip) package { import flash.display.*; public dynamic class balloonClip extends MovieClip { public var balloonHead:MovieClip; public var head:MovieClip; public function balloonClip(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 151
//balloonPopperMedal (balloonPopperMedal) package { import flash.display.*; public dynamic class balloonPopperMedal extends MovieClip { public function balloonPopperMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 152
//BalloonPopSound (BalloonPopSound) package { import flash.media.*; public dynamic class BalloonPopSound extends Sound { } }//package
Section 153
//bgMusic (bgMusic) package { import flash.media.*; public dynamic class bgMusic extends Sound { } }//package
Section 154
//billboard_text (billboard_text) package { import flash.display.*; import flash.text.*; public dynamic class billboard_text extends MovieClip { public var content:TextField; } }//package
Section 155
//bird01 (bird01) package { import flash.display.*; public dynamic class bird01 extends MovieClip { public var body:PhysicBody; } }//package
Section 156
//birdHunterMedal (birdHunterMedal) package { import flash.display.*; public dynamic class birdHunterMedal extends MovieClip { public function birdHunterMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 157
//birdsClip (birdsClip) package { import flash.display.*; public dynamic class birdsClip extends MovieClip { } }//package
Section 158
//boatsClip (boatsClip) package { import flash.display.*; public dynamic class boatsClip extends MovieClip { } }//package
Section 159
//ButtonHitSound (ButtonHitSound) package { import flash.media.*; public dynamic class ButtonHitSound extends Sound { } }//package
Section 160
//Ceiling (Ceiling) package { import p_entity.*; public dynamic class Ceiling extends Ceiling { } }//package
Section 161
//championMedal (championMedal) package { import flash.display.*; public dynamic class championMedal extends MovieClip { public function championMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 162
//cloud0 (cloud0) package { import flash.display.*; public dynamic class cloud0 extends MovieClip { } }//package
Section 163
//cloud1 (cloud1) package { import flash.display.*; public dynamic class cloud1 extends MovieClip { } }//package
Section 164
//cloud2 (cloud2) package { import flash.display.*; public dynamic class cloud2 extends MovieClip { } }//package
Section 165
//crashLandingMedal (crashLandingMedal) package { import flash.display.*; public dynamic class crashLandingMedal extends MovieClip { public function crashLandingMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 166
//crosshairWind (crosshairWind) package { import flash.display.*; public dynamic class crosshairWind extends MovieClip { } }//package
Section 167
//FallSound (FallSound) package { import flash.media.*; public dynamic class FallSound extends Sound { } }//package
Section 168
//foreViews0 (foreViews0) package { import flash.display.*; public dynamic class foreViews0 extends MovieClip { } }//package
Section 169
//helpingHandMedal (helpingHandMedal) package { import flash.display.*; public dynamic class helpingHandMedal extends MovieClip { public function helpingHandMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 170
//HitTreeSound (HitTreeSound) package { import flash.media.*; public dynamic class HitTreeSound extends Sound { } }//package
Section 171
//house01 (house01) package { import flash.display.*; public dynamic class house01 extends MovieClip { public var collisionBox:MovieClip; public var paperPoint:paperPlane; public var body:PhysicBody; public var kid:MovieClip; } }//package
Section 172
//house02 (house02) package { import flash.display.*; public dynamic class house02 extends MovieClip { public var collisionBox:MovieClip; public var paperPoint:paperPlane; public var body:PhysicBody; public var kid:MovieClip; } }//package
Section 173
//house03 (house03) package { import flash.display.*; public dynamic class house03 extends MovieClip { public var collisionBox:MovieClip; public var paperPoint:paperPlane; public var body:PhysicBody; public var kid:MovieClip; } }//package
Section 174
//house04 (house04) package { import flash.display.*; public dynamic class house04 extends MovieClip { public var collisionBox:MovieClip; public var paperPoint:paperPlane; public var body:PhysicBody; public var kid:MovieClip; } }//package
Section 175
//introSponsor (introSponsor) package { import flash.display.*; import flash.events.*; import flash.net.*; public dynamic class introSponsor extends MovieClip { public var animationDone:Boolean; public var minijuegos:MovieClip; public function introSponsor(){ addFrameScript(0, frame1); } function frame1(){ stop(); animationDone = false; stage.addEventListener(MouseEvent.CLICK, minijuegosClick); stage.addEventListener(Event.ENTER_FRAME, minijuegosMain); } public function minijuegosClick(_arg1:MouseEvent){ navigateToURL(new URLRequest("http://www.minijuegos.com/"), "_BLANK"); } public function minijuegosMain(_arg1:Event){ if (minijuegos.currentFrame == minijuegos.totalFrames){ stage.removeEventListener(MouseEvent.CLICK, minijuegosClick); stage.removeEventListener(Event.ENTER_FRAME, minijuegosMain); animationDone = true; }; } } }//package
Section 176
//mainMenuSound (mainMenuSound) package { import flash.media.*; public dynamic class mainMenuSound extends Sound { } }//package
Section 177
//maskClip (maskClip) package { import flash.display.*; public dynamic class maskClip extends MovieClip { } }//package
Section 178
//maximumPowerMedal (maximumPowerMedal) package { import flash.display.*; public dynamic class maximumPowerMedal extends MovieClip { public function maximumPowerMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 179
//MedalGainedSound (MedalGainedSound) package { import flash.media.*; public dynamic class MedalGainedSound extends Sound { } }//package
Section 180
//medalInfoClip (medalInfoClip) package { import flash.display.*; public dynamic class medalInfoClip extends MovieClip { public var animationDone:Boolean; public var menu:MovieClip; public function medalInfoClip(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package
Section 181
//menuClip (menuClip) package { import flash.display.*; import flash.text.*; public dynamic class menuClip extends MovieClip { public var windBar:MovieClip; public var comboText:TextField; public var scoreText:TextField; } }//package
Section 182
//millionaireMedal (millionaireMedal) package { import flash.display.*; public dynamic class millionaireMedal extends MovieClip { public function millionaireMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 183
//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{ var _local3:MochiBot; var _local4:String; var _local5:URLVariables; var _local6:String; var _local7:URLRequest; var _local8:Loader; if (Security.sandboxType == "localWithFile"){ return (null); }; _local3 = new (MochiBot); _arg1.addChild(_local3); Security.allowDomain("*"); Security.allowInsecureDomain("*"); _local4 = "http://core.mochibot.com/my/core.swf"; _local5 = new URLVariables(); _local5["sb"] = Security.sandboxType; _local5["v"] = Capabilities.version; _local5["swfid"] = _arg2; _local5["mv"] = "8"; _local5["fv"] = "9"; _local6 = _local3.root.loaderInfo.loaderURL; if (_local6.indexOf("http") == 0){ _local5["url"] = _local6; } else { _local5["url"] = "local"; }; _local7 = new URLRequest(_local4); _local7.contentType = "application/x-www-form-urlencoded"; _local7.method = URLRequestMethod.POST; _local7.data = _local5; _local8 = new Loader(); _local3.addChild(_local8); _local8.load(_local7); return (_local3); } } }//package
Section 184
//OneSideTriangle (OneSideTriangle) package { import flash.display.*; public dynamic class OneSideTriangle extends MovieClip { } }//package
Section 185
//paperPlane (paperPlane) package { import flash.display.*; public dynamic class paperPlane extends MovieClip { public var triangle:OneSideTriangle; public var body:PhysicBody; public var head:PhysicBody; public function paperPlane(){ addFrameScript(56, frame57, 57, frame58); } function frame58(){ stop(); } function frame57(){ gotoAndPlay(1); } } }//package
Section 186
//PhysicBody (PhysicBody) package { import flash.display.*; public dynamic class PhysicBody extends MovieClip { } }//package
Section 187
//roofLanderMedal (roofLanderMedal) package { import flash.display.*; public dynamic class roofLanderMedal extends MovieClip { public function roofLanderMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 188
//scoreGUI (scoreGUI) package { import flash.display.*; public dynamic class scoreGUI extends MovieClip { public var animationDone:Boolean; public var statusInfo:MovieClip; public function scoreGUI(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame30(){ animationDone = true; } function frame2(){ animationDone = false; } } }//package
Section 189
//screenHelpAnimated (screenHelpAnimated) package { import flash.display.*; public dynamic class screenHelpAnimated extends MovieClip { public var animationDone:Boolean; public var menu:MovieClip; public function screenHelpAnimated(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package
Section 190
//screenLoader (screenLoader) package { import flash.geom.*; import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.net.*; import flash.media.*; import flash.ui.*; import flash.system.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.xml.*; public dynamic class screenLoader extends MovieClip { public var togeLogo:MovieClip; public var loadingInfo:TextField; public var loadingBar:MovieClip; public var adArea:MovieClip; public var playBtn:SimpleButton; public var logo:MovieClip; public var kid:MovieClip; public function screenLoader(){ addFrameScript(0, frame1, 27, frame28); } function frame1(){ stop(); playBtn.visible = false; kid.lineBar.visible = false; kid.powerBar.visible = false; logo.addEventListener(MouseEvent.CLICK, onLogoClicked); logo.buttonMode = true; togeLogo.addEventListener(MouseEvent.CLICK, onTogeLogoClicked); togeLogo.buttonMode = true; } function frame28(){ stop(); } public function onLogoClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://minijuegos.com/"); navigateToURL(_local2, "_blank"); } public function onTogeLogoClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://togeproductions.webs.com/"); navigateToURL(_local2, "_blank"); } } }//package
Section 191
//screenMainMenu (screenMainMenu) package { import flash.display.*; import flash.events.*; import flash.net.*; public dynamic class screenMainMenu extends MovieClip { public var screenOption:screenOptionAnimated; public var togeLogo:MovieClip; public var screenMedal:MovieClip; public var moreGamesBtn:SimpleButton; public var helpBtn:SimpleButton; public var creditsBtn:SimpleButton; public var scoreBtn:SimpleButton; public var screenScore:screenScoreAnimated; public var playBtn:SimpleButton; public var medalsBtn:SimpleButton; public var screenCredit:MovieClip; public var optionBtn:SimpleButton; public var logo:MovieClip; public var screenHelp:screenHelpAnimated; public var kid:MovieClip; public function screenMainMenu(){ addFrameScript(0, frame1, 1, frame2, 27, frame28); } function frame28(){ stop(); } function frame1(){ stop(); } function frame2(){ logo.addEventListener(MouseEvent.CLICK, onLogoClicked); logo.buttonMode = true; moreGamesBtn.addEventListener(MouseEvent.CLICK, onLogoClicked); togeLogo.addEventListener(MouseEvent.CLICK, onTogeLogoClicked); togeLogo.buttonMode = true; } public function onLogoClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://minijuegos.com/"); navigateToURL(_local2, "_blank"); } public function onTogeLogoClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://togeproductions.webs.com/"); navigateToURL(_local2, "_blank"); } } }//package
Section 192
//screenOptionAnimated (screenOptionAnimated) package { import flash.display.*; public dynamic class screenOptionAnimated extends MovieClip { public var animationDone:Boolean; public var menu:MovieClip; public function screenOptionAnimated(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package
Section 193
//screenPause (screenPause) package { import flash.display.*; public dynamic class screenPause extends MovieClip { public var retryButton:SimpleButton; public var optionButton:SimpleButton; public var menuButton:SimpleButton; public var resumeButton:SimpleButton; } }//package
Section 194
//screenPauseAnimated (screenPauseAnimated) package { import flash.display.*; public dynamic class screenPauseAnimated extends MovieClip { public var animationDone:Boolean; public var menu:screenPause; public function screenPauseAnimated(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package
Section 195
//screenScoreAnimated (screenScoreAnimated) package { import flash.display.*; public dynamic class screenScoreAnimated extends MovieClip { public var animationDone:Boolean; public function screenScoreAnimated(){ addFrameScript(0, frame1, 1, frame2, 15, frame16, 16, frame17, 29, frame30); } function frame16(){ animationDone = true; stop(); } function frame1(){ animationDone = true; stop(); } function frame17(){ animationDone = false; } function frame2(){ animationDone = false; } function frame30(){ animationDone = true; } } }//package
Section 196
//smokeAnimate (smokeAnimate) package { import flash.display.*; public dynamic class smokeAnimate extends MovieClip { } }//package
Section 197
//Star (Star) package { import flash.display.*; public dynamic class Star extends MovieClip { } }//package
Section 198
//sunClip (sunClip) package { import flash.display.*; public dynamic class sunClip extends MovieClip { } }//package
Section 199
//SunnyDay2Fly (SunnyDay2Fly) package { import flash.display.*; import flash.events.*; import p_singleton.*; import p_gameState.*; import flash.ui.*; public dynamic class SunnyDay2Fly extends MovieClip { public var myMenu:ContextMenu; public var _mochiads_game_id:String;// = "1352b52e7c46adc9" public var loaderScreen:screenLoader; public function SunnyDay2Fly(){ _mochiads_game_id = "1352b52e7c46adc9"; super(); addFrameScript(0, frame1, 2, frame3); this.addEventListener(Event.ENTER_FRAME, update); this.addEventListener(Event.ADDED_TO_STAGE, init); MochiBot.track(this, "bf5426e7"); } public function init(_arg1:Event){ var _local2:ContextMenuItem; World.getInstance().spriteRoot = this; World.getInstance().loadGame(); World.getInstance().loaderScreen = loaderScreen; myMenu = new ContextMenu(); myMenu.hideBuiltInItems(); _local2 = new ContextMenuItem("Created by Toge Productions"); myMenu.customItems.push(_local2); this.contextMenu = myMenu; World.getInstance().stageRoot = this.stage; GameManager.getInstance().setGameState(new LoadingGameState()); addChild(GameManager.getInstance()); } function frame3(){ stop(); } function frame1(){ stop(); } public function update(_arg1:Event):void{ if (this.stage){ this.removeEventListener(Event.ENTER_FRAME, update); }; } } }//package
Section 200
//TaskCompleteSound (TaskCompleteSound) package { import flash.media.*; public dynamic class TaskCompleteSound extends Sound { } }//package
Section 201
//TogeLogoAnimated (TogeLogoAnimated) package { import flash.display.*; import flash.events.*; import flash.net.*; public dynamic class TogeLogoAnimated extends MovieClip { public var animationDone:Boolean; public var logo:MovieClip; public function TogeLogoAnimated(){ addFrameScript(0, frame1, 100, frame101); } function frame1(){ animationDone = false; logo.addEventListener(MouseEvent.CLICK, onLogoClicked); } function frame101(){ stop(); animationDone = true; } public function onLogoClicked(_arg1:MouseEvent){ var _local2:URLRequest; _local2 = new URLRequest("http://togeproductions.webs.com/"); navigateToURL(_local2, "_blank"); } } }//package
Section 202
//travellerMedal (travellerMedal) package { import flash.display.*; public dynamic class travellerMedal extends MovieClip { public function travellerMedal(){ addFrameScript(0, frame1, 1, frame2); } function frame1(){ stop(); } function frame2(){ stop(); } } }//package
Section 203
//treeClip (treeClip) package { import flash.display.*; public dynamic class treeClip extends MovieClip { public var collisionBox:MovieClip; public var body:PhysicBody; public var head:MovieClip; } }//package
Section 204
//treeClip2 (treeClip2) package { import flash.display.*; public dynamic class treeClip2 extends MovieClip { public var collisionBox:MovieClip; public var body:PhysicBody; public var head:MovieClip; } }//package
Section 205
//Wall (Wall) package { import p_entity.*; public dynamic class Wall extends Wall { } }//package
Section 206
//views0 (views0) package { import flash.display.*; public dynamic class views0 extends MovieClip { } }//package

Library Items

Symbol 1 GraphicUsed by:160 403
Symbol 2 BitmapUsed by:3
Symbol 3 GraphicUses:2Used by:4
Symbol 4 MovieClipUses:3Used by:160 403 498
Symbol 5 GraphicUsed by:6
Symbol 6 MovieClip {sunClip}Uses:5Used by:160 403  Timeline
Symbol 7 GraphicUsed by:8
Symbol 8 MovieClipUses:7Used by:9
Symbol 9 MovieClip {boatsClip}Uses:8Used by:160 403  Timeline
Symbol 10 BitmapUsed by:11 423
Symbol 11 GraphicUses:10Used by:12
Symbol 12 MovieClip {cloud1}Uses:11Used by:16  Timeline
Symbol 13 BitmapUsed by:14 423
Symbol 14 GraphicUses:13Used by:15
Symbol 15 MovieClip {cloud2}Uses:14Used by:16  Timeline
Symbol 16 MovieClipUses:12 15Used by:160 403
Symbol 17 ShapeTweeningUsed by:26
Symbol 18 ShapeTweeningUsed by:26
Symbol 19 ShapeTweeningUsed by:26
Symbol 20 ShapeTweeningUsed by:26
Symbol 21 ShapeTweeningUsed by:26
Symbol 22 ShapeTweeningUsed by:26
Symbol 23 ShapeTweeningUsed by:26
Symbol 24 ShapeTweeningUsed by:26
Symbol 25 GraphicUsed by:26
Symbol 26 MovieClipUses:17 18 19 20 21 22 23 24 25Used by:27
Symbol 27 MovieClip {birdsClip}Uses:26Used by:160 403  Timeline
Symbol 28 GraphicUsed by:39
Symbol 29 GraphicUsed by:30
Symbol 30 MovieClipUses:29Used by:39 46
Symbol 31 GraphicUsed by:32
Symbol 32 MovieClipUses:31Used by:39
Symbol 33 GraphicUsed by:39
Symbol 34 GraphicUsed by:35
Symbol 35 MovieClipUses:34Used by:39 46
Symbol 36 GraphicUsed by:37
Symbol 37 MovieClipUses:36Used by:39 46
Symbol 38 GraphicUsed by:39
Symbol 39 MovieClipUses:28 30 32 33 35 37 38Used by:160 307 403
Symbol 40 GraphicUsed by:41
Symbol 41 MovieClipUses:40Used by:160 403 425
Symbol 42 BitmapUsed by:43
Symbol 43 GraphicUses:42Used by:44
Symbol 44 MovieClipUses:43Used by:160 403 425
Symbol 45 GraphicUsed by:46
Symbol 46 MovieClipUses:45 35 37 30Used by:160 307 403
Symbol 47 GraphicUsed by:82
Symbol 48 GraphicUsed by:49
Symbol 49 MovieClipUses:48Used by:82
Symbol 50 GraphicUsed by:51
Symbol 51 MovieClipUses:50Used by:82
Symbol 52 GraphicUsed by:53
Symbol 53 MovieClipUses:52Used by:82
Symbol 54 GraphicUsed by:55
Symbol 55 MovieClipUses:54Used by:82
Symbol 56 GraphicUsed by:57
Symbol 57 MovieClipUses:56Used by:82
Symbol 58 GraphicUsed by:59
Symbol 59 MovieClipUses:58Used by:82
Symbol 60 GraphicUsed by:61
Symbol 61 MovieClipUses:60Used by:82
Symbol 62 GraphicUsed by:63
Symbol 63 MovieClip {Star}Uses:62Used by:73  Timeline
Symbol 64 GraphicUsed by:72
Symbol 65 GraphicUsed by:72
Symbol 66 GraphicUsed by:72
Symbol 67 GraphicUsed by:72
Symbol 68 GraphicUsed by:72
Symbol 69 GraphicUsed by:72
Symbol 70 GraphicUsed by:72
Symbol 71 GraphicUsed by:72
Symbol 72 MovieClip {smokeAnimate}Uses:64 65 66 67 68 69 70 71Used by:73  Timeline
Symbol 73 MovieClip {AWindyDay_fla.poof_27}Uses:63 72Used by:82
Symbol 74 GraphicUsed by:78
Symbol 75 GraphicUsed by:76
Symbol 76 MovieClipUses:75Used by:78
Symbol 77 GraphicUsed by:78
Symbol 78 MovieClip {AWindyDay_fla.powerBar_30}Uses:74 76 77Used by:82
Symbol 79 GraphicUsed by:80
Symbol 80 MovieClipUses:79Used by:82
Symbol 81 GraphicUsed by:82
Symbol 82 MovieClip {AWindyDay_fla.kid_19}Uses:47 49 51 53 55 57 59 61 73 78 80 81Used by:160 403 431 434 437 440
Symbol 83 GraphicUsed by:84
Symbol 84 MovieClipUses:83Used by:160 171 403
Symbol 85 FontUsed by:86 91 92 102 105 172 176 178 180 182 184 187 189 201 205 211 212 218 300 304 306 310 311 312 313 314 315 316 319 320 321 324 325 326 328 329 330 333 339 340 341 344 375 380 381 382 383 384 388 389 391 393 395 396 398 400 419 445 446 453 454 457 458 459 460 461 462 464 466 467 468 469 470 472 474 476 478 483 484 486
Symbol 86 TextUses:85Used by:160 403
Symbol 87 FontUsed by:88
Symbol 88 TextUses:87Used by:89
Symbol 89 MovieClipUses:88Used by:160 403
Symbol 90 GraphicUsed by:160
Symbol 91 TextUses:85Used by:160
Symbol 92 EditableTextUses:85Used by:160
Symbol 93 GraphicUsed by:97
Symbol 94 GraphicUsed by:96
Symbol 95 GraphicUsed by:96 450
Symbol 96 MovieClipUses:94 95Used by:97
Symbol 97 MovieClip {AWindyDay_fla.loadingBar_35}Uses:93 96Used by:160
Symbol 98 GraphicUsed by:103
Symbol 99 BitmapUsed by:100
Symbol 100 GraphicUses:99Used by:101
Symbol 101 MovieClipUses:100Used by:103
Symbol 102 TextUses:85Used by:103
Symbol 103 MovieClip {AWindyDay_fla.adArea_37}Uses:98 101 102Used by:160 479
Symbol 104 GraphicUsed by:109 181 183 185
Symbol 105 TextUses:85Used by:109
Symbol 106 GraphicUsed by:109 181 183 185
Symbol 107 GraphicUsed by:109 181 183 185
Symbol 108 GraphicUsed by:109 175 177 179 181 183 185 188 387 390 392 394 397 399 463 465 473 485 487
Symbol 109 ButtonUses:104 105 106 107 108Used by:160 403
Symbol 110 GraphicUsed by:159
Symbol 111 GraphicUsed by:112
Symbol 112 MovieClipUses:111Used by:159 544
Symbol 113 GraphicUsed by:118
Symbol 114 GraphicUsed by:118 152
Symbol 115 GraphicUsed by:118
Symbol 116 GraphicUsed by:118 122 127 132 137 142 147 152 157
Symbol 117 GraphicUsed by:118
Symbol 118 MovieClipUses:113 114 115 116 117Used by:158
Symbol 119 GraphicUsed by:122
Symbol 120 GraphicUsed by:122
Symbol 121 GraphicUsed by:122
Symbol 122 MovieClipUses:119 120 116 121Used by:158
Symbol 123 GraphicUsed by:127
Symbol 124 GraphicUsed by:127
Symbol 125 GraphicUsed by:127
Symbol 126 GraphicUsed by:127
Symbol 127 MovieClipUses:123 124 125 116 126Used by:158
Symbol 128 GraphicUsed by:132
Symbol 129 GraphicUsed by:132
Symbol 130 GraphicUsed by:132
Symbol 131 GraphicUsed by:132
Symbol 132 MovieClipUses:128 129 130 116 131Used by:158
Symbol 133 GraphicUsed by:137
Symbol 134 GraphicUsed by:137
Symbol 135 GraphicUsed by:137
Symbol 136 GraphicUsed by:137
Symbol 137 MovieClipUses:133 134 135 116 136Used by:158
Symbol 138 GraphicUsed by:142
Symbol 139 GraphicUsed by:142
Symbol 140 GraphicUsed by:142
Symbol 141 GraphicUsed by:142
Symbol 142 MovieClipUses:138 139 140 116 141Used by:158
Symbol 143 GraphicUsed by:147 152
Symbol 144 GraphicUsed by:147
Symbol 145 GraphicUsed by:147 152
Symbol 146 GraphicUsed by:147 152
Symbol 147 MovieClipUses:143 144 145 116 146Used by:158
Symbol 148 GraphicUsed by:151
Symbol 149 GraphicUsed by:151
Symbol 150 GraphicUsed by:151
Symbol 151 MovieClipUses:148 149 150Used by:158
Symbol 152 MovieClipUses:143 114 145 116 146Used by:158
Symbol 153 GraphicUsed by:157
Symbol 154 GraphicUsed by:157
Symbol 155 GraphicUsed by:157
Symbol 156 GraphicUsed by:157
Symbol 157 MovieClipUses:153 154 155 116 156Used by:158
Symbol 158 MovieClipUses:118 122 127 132 137 142 147 151 152 157Used by:159 544
Symbol 159 MovieClipUses:110 112 158Used by:160 403 480
Symbol 160 MovieClip {screenLoader}Uses:1 4 6 9 16 27 39 41 44 46 82 84 86 89 90 91 92 97 103 109 159Used by:Timeline
Symbol 161 Sound {TaskCompleteSound}Used by:169
Symbol 162 Sound {BalloonPopSound}Used by:169
Symbol 163 Sound {ButtonHitSound}Used by:169
Symbol 164 Sound {MedalGainedSound}Used by:169
Symbol 165 Sound {HitTreeSound}Used by:169
Symbol 166 Sound {FallSound}Used by:169
Symbol 167 Sound {mainMenuSound}Used by:169
Symbol 168 Sound {bgMusic}Used by:169
Symbol 169 MovieClip {AWindyDay_fla.exportedSound_53}Uses:161 162 163 164 165 166 167 168Used by:Timeline
Symbol 170 GraphicUsed by:171 544 545
Symbol 171 MovieClip {TogeLogoAnimated}Uses:170 84Used by:Timeline
Symbol 172 TextUses:85Used by:175
Symbol 173 GraphicUsed by:175 177 179 188 390 392 394 397 399 463 465 473 485 487
Symbol 174 GraphicUsed by:175 177 179 188 390 392 394 397 399 463 465 473 485 487
Symbol 175 ButtonUses:108 172 173 174Used by:403
Symbol 176 TextUses:85Used by:177
Symbol 177 ButtonUses:108 176 173 174Used by:403
Symbol 178 TextUses:85Used by:179
Symbol 179 ButtonUses:108 178 173 174Used by:403
Symbol 180 TextUses:85Used by:181
Symbol 181 ButtonUses:104 180 106 107 108Used by:403
Symbol 182 TextUses:85Used by:183
Symbol 183 ButtonUses:104 182 106 107 108Used by:403
Symbol 184 TextUses:85Used by:185
Symbol 185 ButtonUses:104 184 106 107 108Used by:403
Symbol 186 GraphicUsed by:308 336 376 401
Symbol 187 TextUses:85Used by:188
Symbol 188 ButtonUses:108 187 173 174Used by:308 336 376 401
Symbol 189 TextUses:85Used by:308
Symbol 190 ShapeTweeningUsed by:200
Symbol 191 GraphicUsed by:192
Symbol 192 MovieClip {PhysicBody}Uses:191Used by:200 299 431 434 437 440 494 497  Timeline
Symbol 193 GraphicUsed by:194
Symbol 194 MovieClip {OneSideTriangle}Uses:193Used by:200  Timeline
Symbol 195 ShapeTweeningUsed by:200
Symbol 196 ShapeTweeningUsed by:200
Symbol 197 ShapeTweeningUsed by:200
Symbol 198 GraphicUsed by:200
Symbol 199 GraphicUsed by:200
Symbol 200 MovieClip {paperPlane}Uses:190 192 194 195 196 197 198 199Used by:307 431 434 437 440  Timeline
Symbol 201 TextUses:85Used by:307
Symbol 202 BitmapUsed by:203
Symbol 203 GraphicUses:202Used by:204
Symbol 204 MovieClipUses:203Used by:307
Symbol 205 TextUses:85Used by:307
Symbol 206 GraphicUsed by:207
Symbol 207 MovieClipUses:206Used by:210
Symbol 208 GraphicUsed by:209
Symbol 209 MovieClipUses:208Used by:210
Symbol 210 MovieClip {crosshairWind}Uses:207 209Used by:307  Timeline
Symbol 211 TextUses:85Used by:307
Symbol 212 TextUses:85Used by:307
Symbol 213 GraphicUsed by:307
Symbol 214 GraphicUsed by:217 450
Symbol 215 ShapeTweeningUsed by:217
Symbol 216 GraphicUsed by:217
Symbol 217 MovieClipUses:214 215 216Used by:307
Symbol 218 TextUses:85Used by:307
Symbol 219 BitmapUsed by:220
Symbol 220 GraphicUses:219Used by:299
Symbol 221 BitmapUsed by:222
Symbol 222 GraphicUses:221Used by:299
Symbol 223 BitmapUsed by:224
Symbol 224 GraphicUses:223Used by:299
Symbol 225 BitmapUsed by:226
Symbol 226 GraphicUses:225Used by:299
Symbol 227 BitmapUsed by:228
Symbol 228 GraphicUses:227Used by:299
Symbol 229 BitmapUsed by:230
Symbol 230 GraphicUses:229Used by:299
Symbol 231 BitmapUsed by:232
Symbol 232 GraphicUses:231Used by:299
Symbol 233 BitmapUsed by:234
Symbol 234 GraphicUses:233Used by:299
Symbol 235 BitmapUsed by:236
Symbol 236 GraphicUses:235Used by:299
Symbol 237 BitmapUsed by:238
Symbol 238 GraphicUses:237Used by:299
Symbol 239 BitmapUsed by:240
Symbol 240 GraphicUses:239Used by:299
Symbol 241 BitmapUsed by:242
Symbol 242 GraphicUses:241Used by:299
Symbol 243 BitmapUsed by:244
Symbol 244 GraphicUses:243Used by:299
Symbol 245 BitmapUsed by:246
Symbol 246 GraphicUses:245Used by:299
Symbol 247 BitmapUsed by:248
Symbol 248 GraphicUses:247Used by:299
Symbol 249 BitmapUsed by:250
Symbol 250 GraphicUses:249Used by:299
Symbol 251 BitmapUsed by:252
Symbol 252 GraphicUses:251Used by:299
Symbol 253 BitmapUsed by:254
Symbol 254 GraphicUses:253Used by:299
Symbol 255 BitmapUsed by:256
Symbol 256 GraphicUses:255Used by:299
Symbol 257 BitmapUsed by:258
Symbol 258 GraphicUses:257Used by:299
Symbol 259 BitmapUsed by:260
Symbol 260 GraphicUses:259Used by:299
Symbol 261 BitmapUsed by:262
Symbol 262 GraphicUses:261Used by:299
Symbol 263 BitmapUsed by:264
Symbol 264 GraphicUses:263Used by:299
Symbol 265 BitmapUsed by:266
Symbol 266 GraphicUses:265Used by:299
Symbol 267 BitmapUsed by:268
Symbol 268 GraphicUses:267Used by:299
Symbol 269 BitmapUsed by:270
Symbol 270 GraphicUses:269Used by:299
Symbol 271 BitmapUsed by:272
Symbol 272 GraphicUses:271Used by:299
Symbol 273 BitmapUsed by:274
Symbol 274 GraphicUses:273Used by:299
Symbol 275 BitmapUsed by:276
Symbol 276 GraphicUses:275Used by:299
Symbol 277 BitmapUsed by:278
Symbol 278 GraphicUses:277Used by:299
Symbol 279 BitmapUsed by:280
Symbol 280 GraphicUses:279Used by:299
Symbol 281 BitmapUsed by:282
Symbol 282 GraphicUses:281Used by:299
Symbol 283 BitmapUsed by:284
Symbol 284 GraphicUses:283Used by:299
Symbol 285 BitmapUsed by:286
Symbol 286 GraphicUses:285Used by:299
Symbol 287 BitmapUsed by:288
Symbol 288 GraphicUses:287Used by:299
Symbol 289 BitmapUsed by:290
Symbol 290 GraphicUses:289Used by:299
Symbol 291 BitmapUsed by:292
Symbol 292 GraphicUses:291Used by:299
Symbol 293 BitmapUsed by:294
Symbol 294 GraphicUses:293Used by:299
Symbol 295 BitmapUsed by:296
Symbol 296 GraphicUses:295Used by:299
Symbol 297 BitmapUsed by:298
Symbol 298 GraphicUses:297Used by:299
Symbol 299 MovieClip {bird01}Uses:220 192 222 224 226 228 230 232 234 236 238 240 242 244 246 248 250 252 254 256 258 260 262 264 266 268 270 272 274 276 278 280 282 284 286 288 290 292 294 296 298Used by:307  Timeline
Symbol 300 TextUses:85Used by:307
Symbol 301 GraphicUsed by:302
Symbol 302 MovieClipUses:301Used by:307
Symbol 303 GraphicUsed by:307
Symbol 304 TextUses:85Used by:307
Symbol 305 GraphicUsed by:307
Symbol 306 TextUses:85Used by:307
Symbol 307 MovieClipUses:200 201 204 205 210 211 212 213 217 218 299 300 39 302 46 303 304 305 306Used by:308
Symbol 308 MovieClip {AWindyDay_fla.screenHelp_63}Uses:186 188 189 307Used by:309
Symbol 309 MovieClip {screenHelpAnimated}Uses:308Used by:403  Timeline
Symbol 310 TextUses:85Used by:336
Symbol 311 TextUses:85Used by:336
Symbol 312 TextUses:85Used by:336
Symbol 313 TextUses:85Used by:336
Symbol 314 TextUses:85Used by:318
Symbol 315 TextUses:85Used by:318
Symbol 316 TextUses:85Used by:318
Symbol 317 GraphicUsed by:318 327
Symbol 318 ButtonUses:314 315 316 317Used by:336
Symbol 319 TextUses:85Used by:323
Symbol 320 TextUses:85Used by:323
Symbol 321 TextUses:85Used by:323
Symbol 322 GraphicUsed by:323
Symbol 323 ButtonUses:319 320 321 322Used by:336
Symbol 324 TextUses:85Used by:327
Symbol 325 TextUses:85Used by:327
Symbol 326 TextUses:85Used by:327
Symbol 327 ButtonUses:324 325 326 317Used by:336
Symbol 328 TextUses:85Used by:332
Symbol 329 TextUses:85Used by:332
Symbol 330 TextUses:85Used by:332
Symbol 331 GraphicUsed by:332
Symbol 332 ButtonUses:328 329 330 331Used by:336
Symbol 333 TextUses:85Used by:336
Symbol 334 GraphicUsed by:336
Symbol 335 GraphicUsed by:336
Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77}Uses:186 188 310 311 312 313 318 323 327 332 333 334 335Used by:337
Symbol 337 MovieClip {AWindyDay_fla.screenCreditsAnimated_76}Uses:336Used by:403
Symbol 338 GraphicUsed by:376
Symbol 339 EditableTextUses:85Used by:376
Symbol 340 EditableTextUses:85Used by:376
Symbol 341 EditableTextUses:85Used by:376
Symbol 342 GraphicUsed by:347 350 353 356 359 362 365 368 371 374
Symbol 343 GraphicUsed by:347 350 353 356 359 362 365 368 371 374
Symbol 344 TextUses:85Used by:347 350 353 356 359 362 365 368 371 374
Symbol 345 BitmapUsed by:346
Symbol 346 GraphicUses:345Used by:347
Symbol 347 MovieClip {balloonPopperMedal}Uses:342 343 344 346Used by:376  Timeline
Symbol 348 BitmapUsed by:349
Symbol 349 GraphicUses:348Used by:350
Symbol 350 MovieClip {roofLanderMedal}Uses:342 343 344 349Used by:376  Timeline
Symbol 351 BitmapUsed by:352
Symbol 352 GraphicUses:351Used by:353
Symbol 353 MovieClip {travellerMedal}Uses:342 343 344 352Used by:376  Timeline
Symbol 354 BitmapUsed by:355
Symbol 355 GraphicUses:354Used by:356
Symbol 356 MovieClip {maximumPowerMedal}Uses:342 343 344 355Used by:376  Timeline
Symbol 357 BitmapUsed by:358
Symbol 358 GraphicUses:357Used by:359
Symbol 359 MovieClip {acquaintedMedal}Uses:342 343 344 358Used by:376  Timeline
Symbol 360 BitmapUsed by:361
Symbol 361 GraphicUses:360Used by:362
Symbol 362 MovieClip {birdHunterMedal}Uses:342 343 344 361Used by:376  Timeline
Symbol 363 BitmapUsed by:364
Symbol 364 GraphicUses:363Used by:365
Symbol 365 MovieClip {crashLandingMedal}Uses:342 343 344 364Used by:376  Timeline
Symbol 366 BitmapUsed by:367
Symbol 367 GraphicUses:366Used by:368
Symbol 368 MovieClip {championMedal}Uses:342 343 344 367Used by:376  Timeline
Symbol 369 BitmapUsed by:370
Symbol 370 GraphicUses:369Used by:371
Symbol 371 MovieClip {helpingHandMedal}Uses:342 343 344 370Used by:376  Timeline
Symbol 372 BitmapUsed by:373
Symbol 373 GraphicUses:372Used by:374
Symbol 374 MovieClip {millionaireMedal}Uses:342 343 344 373Used by:376  Timeline
Symbol 375 TextUses:85Used by:376
Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83}Uses:186 188 338 339 340 341 347 350 353 356 359 362 365 368 371 374 375Used by:377
Symbol 377 MovieClip {AWindyDay_fla.screenMedalsAnimated_82}Uses:376Used by:403
Symbol 378 GraphicUsed by:379
Symbol 379 MovieClipUses:378Used by:386 481 489
Symbol 380 TextUses:85Used by:385
Symbol 381 TextUses:85Used by:385
Symbol 382 TextUses:85Used by:385
Symbol 383 TextUses:85Used by:385
Symbol 384 TextUses:85Used by:385
Symbol 385 MovieClipUses:380 381 382 383 384Used by:386
Symbol 386 MovieClip {screenScoreAnimated}Uses:379 385Used by:403  Timeline
Symbol 387 ButtonUses:108Used by:401
Symbol 388 TextUses:85Used by:401
Symbol 389 TextUses:85Used by:390
Symbol 390 ButtonUses:108 389 173 174Used by:401
Symbol 391 TextUses:85Used by:392
Symbol 392 ButtonUses:108 391 173 174Used by:401
Symbol 393 TextUses:85Used by:394
Symbol 394 ButtonUses:108 393 173 174Used by:401
Symbol 395 TextUses:85Used by:401
Symbol 396 TextUses:85Used by:397
Symbol 397 ButtonUses:108 396 173 174Used by:401
Symbol 398 TextUses:85Used by:399
Symbol 399 ButtonUses:108 398 173 174Used by:401
Symbol 400 TextUses:85Used by:401
Symbol 401 MovieClip {AWindyDay_fla.screenOption_98}Uses:186 387 188 388 390 392 394 395 397 399 400Used by:402
Symbol 402 MovieClip {screenOptionAnimated}Uses:401Used by:403  Timeline
Symbol 403 MovieClip {screenMainMenu}Uses:1 4 6 9 16 27 39 41 44 46 82 175 177 179 181 183 185 109 84 86 89 309 337 377 386 402 159Used by:Timeline
Symbol 404 GraphicUsed by:413
Symbol 405 GraphicUsed by:409
Symbol 406 GraphicUsed by:409
Symbol 407 GraphicUsed by:409
Symbol 408 GraphicUsed by:409
Symbol 409 MovieClip {AWindyDay_fla.baloonHead_106}Uses:405 406 407 408Used by:413
Symbol 410 GraphicUsed by:411
Symbol 411 MovieClipUses:410Used by:413 418 494 497
Symbol 412 GraphicUsed by:413
Symbol 413 MovieClip {balloonClip}Uses:404 409 411 412Used by:Timeline
Symbol 414 GraphicUsed by:418
Symbol 415 GraphicUsed by:418
Symbol 416 GraphicUsed by:418
Symbol 417 GraphicUsed by:418
Symbol 418 MovieClip {ballClip}Uses:414 411 415 416 417Used by:Timeline
Symbol 419 EditableTextUses:85Used by:420
Symbol 420 MovieClip {billboard_text}Uses:419Used by:Timeline
Symbol 421 GraphicUsed by:422 499
Symbol 422 MovieClip {Ceiling}Uses:421Used by:Timeline
Symbol 423 GraphicUses:10 13Used by:424
Symbol 424 MovieClip {cloud0}Uses:423Used by:Timeline
Symbol 425 MovieClip {foreViews0}Uses:44 41Used by:Timeline
Symbol 426 GraphicUsed by:428 493 496
Symbol 427 GraphicUsed by:428
Symbol 428 MovieClip {AWindyDay_fla.collisionBox_114}Uses:426 427Used by:431 434 437 440
Symbol 429 BitmapUsed by:430
Symbol 430 GraphicUses:429Used by:431
Symbol 431 MovieClip {house01}Uses:428 192 430 82 200Used by:Timeline
Symbol 432 BitmapUsed by:433
Symbol 433 GraphicUses:432Used by:434
Symbol 434 MovieClip {house02}Uses:428 433 192 82 200Used by:Timeline
Symbol 435 BitmapUsed by:436
Symbol 436 GraphicUses:435Used by:437
Symbol 437 MovieClip {house03}Uses:428 436 192 82 200Used by:Timeline
Symbol 438 BitmapUsed by:439
Symbol 439 GraphicUses:438Used by:440
Symbol 440 MovieClip {house04}Uses:428 439 192 82 200Used by:Timeline
Symbol 441 GraphicUsed by:442
Symbol 442 MovieClip {maskClip}Uses:441Used by:Timeline
Symbol 443 GraphicUsed by:447
Symbol 444 MovieClipUsed by:447
Symbol 445 EditableTextUses:85Used by:447
Symbol 446 TextUses:85Used by:447
Symbol 447 MovieClip {AWindyDay_fla.medalInfoMenu_120}Uses:443 444 445 446Used by:448
Symbol 448 MovieClip {medalInfoClip}Uses:447Used by:Timeline
Symbol 449 GraphicUsed by:452
Symbol 450 MovieClipUses:214 95Used by:452
Symbol 451 GraphicUsed by:452
Symbol 452 MovieClip {AWindyDay_fla.windBar_123}Uses:449 450 451Used by:455
Symbol 453 EditableTextUses:85Used by:455
Symbol 454 EditableTextUses:85Used by:455
Symbol 455 MovieClip {menuClip}Uses:452 453 454Used by:Timeline
Symbol 456 GraphicUsed by:480
Symbol 457 TextUses:85Used by:480
Symbol 458 TextUses:85Used by:480
Symbol 459 TextUses:85Used by:480
Symbol 460 EditableTextUses:85Used by:480
Symbol 461 EditableTextUses:85Used by:480
Symbol 462 TextUses:85Used by:463
Symbol 463 ButtonUses:108 462 173 174Used by:480 488
Symbol 464 TextUses:85Used by:465
Symbol 465 ButtonUses:108 464 173 174Used by:480
Symbol 466 TextUses:85Used by:480
Symbol 467 EditableTextUses:85Used by:480
Symbol 468 TextUses:85Used by:480
Symbol 469 EditableTextUses:85Used by:480
Symbol 470 EditableTextUses:85Used by:471
Symbol 471 MovieClip {AWindyDay_fla.Symbol3_129}Uses:470Used by:480
Symbol 472 TextUses:85Used by:473
Symbol 473 ButtonUses:108 472 173 174Used by:480 488
Symbol 474 TextUses:85Used by:480
Symbol 475 GraphicUsed by:480
Symbol 476 EditableTextUses:85Used by:480
Symbol 477 GraphicUsed by:479
Symbol 478 TextUses:85Used by:479
Symbol 479 MovieClip {AWindyDay_fla.UIAdvertising_131}Uses:477 478 103Used by:480
Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126}Uses:456 457 458 459 460 461 463 465 466 467 468 469 471 473 474 475 476 479 159Used by:481
Symbol 481 MovieClip {scoreGUI}Uses:379 480Used by:Timeline
Symbol 482 GraphicUsed by:488
Symbol 483 TextUses:85Used by:488
Symbol 484 TextUses:85Used by:485
Symbol 485 ButtonUses:108 484 173 174Used by:488
Symbol 486 TextUses:85Used by:487
Symbol 487 ButtonUses:108 486 173 174Used by:488
Symbol 488 MovieClip {screenPause}Uses:482 483 463 473 485 487Used by:489  Timeline
Symbol 489 MovieClip {screenPauseAnimated}Uses:379 488Used by:Timeline
Symbol 490 BitmapUsed by:491
Symbol 491 GraphicUses:490Used by:494
Symbol 492 GraphicUsed by:493 496
Symbol 493 MovieClip {AWindyDay_fla.collisionBoxcopy_137}Uses:426 492Used by:494
Symbol 494 MovieClip {treeClip}Uses:491 411 192 493Used by:498  Timeline
Symbol 495 GraphicUsed by:497
Symbol 496 MovieClip {AWindyDay_fla.collisionBoxcopy2_139}Uses:426 492Used by:497
Symbol 497 MovieClip {treeClip2}Uses:495 411 192 496Used by:Timeline
Symbol 498 MovieClip {views0}Uses:4 494Used by:Timeline
Symbol 499 MovieClip {Wall}Uses:421Used by:Timeline
Symbol 500 BitmapUsed by:501 504
Symbol 501 GraphicUses:500Used by:544
Symbol 502 ShapeTweeningUsed by:544
Symbol 503 ShapeTweeningUsed by:544
Symbol 504 GraphicUses:500Used by:544
Symbol 505 BitmapUsed by:506 514
Symbol 506 GraphicUses:505Used by:544
Symbol 507 BitmapUsed by:508
Symbol 508 GraphicUses:507Used by:544
Symbol 509 BitmapUsed by:510
Symbol 510 GraphicUses:509Used by:544
Symbol 511 BitmapUsed by:512 513
Symbol 512 GraphicUses:511Used by:544
Symbol 513 GraphicUses:511Used by:544
Symbol 514 GraphicUses:505Used by:544
Symbol 515 GraphicUsed by:544
Symbol 516 BitmapUsed by:517
Symbol 517 GraphicUses:516Used by:544
Symbol 518 BitmapUsed by:519
Symbol 519 GraphicUses:518Used by:544
Symbol 520 GraphicUsed by:544
Symbol 521 GraphicUsed by:544
Symbol 522 BitmapUsed by:523
Symbol 523 GraphicUses:522Used by:544
Symbol 524 GraphicUsed by:544
Symbol 525 BitmapUsed by:526
Symbol 526 GraphicUses:525Used by:544
Symbol 527 GraphicUsed by:544
Symbol 528 BitmapUsed by:529 530 531
Symbol 529 GraphicUses:528Used by:544
Symbol 530 GraphicUses:528Used by:544
Symbol 531 GraphicUses:528Used by:544
Symbol 532 GraphicUsed by:544
Symbol 533 GraphicUsed by:544
Symbol 534 GraphicUsed by:544
Symbol 535 GraphicUsed by:544
Symbol 536 GraphicUsed by:544
Symbol 537 GraphicUsed by:544
Symbol 538 ShapeTweeningUsed by:544
Symbol 539 ShapeTweeningUsed by:544
Symbol 540 GraphicUsed by:544
Symbol 541 GraphicUsed by:544
Symbol 542 GraphicUsed by:544
Symbol 543 GraphicUsed by:544
Symbol 544 MovieClipUses:170 501 502 503 504 506 508 510 512 513 514 515 517 519 520 521 523 524 526 527 529 530 531 532 533 534 535 536 112 537 158 538 539 540 541 542 543Used by:545
Symbol 545 MovieClip {introSponsor}Uses:170 544Used by:Timeline

Instance Names

"loaderScreen"Frame 1Symbol 160 MovieClip {screenLoader}
"bar"Symbol 78 MovieClip {AWindyDay_fla.powerBar_30} Frame 1Symbol 76 MovieClip
"powerBar"Symbol 82 MovieClip {AWindyDay_fla.kid_19} Frame 1Symbol 78 MovieClip {AWindyDay_fla.powerBar_30}
"lineBar"Symbol 82 MovieClip {AWindyDay_fla.kid_19} Frame 1Symbol 80 MovieClip
"bar"Symbol 97 MovieClip {AWindyDay_fla.loadingBar_35} Frame 1Symbol 96 MovieClip
"adArea"Symbol 103 MovieClip {AWindyDay_fla.adArea_37} Frame 1Symbol 101 MovieClip
"kid"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 82 MovieClip {AWindyDay_fla.kid_19}
"togeLogo"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 84 MovieClip
"loadingInfo"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 92 EditableText
"loadingBar"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 97 MovieClip {AWindyDay_fla.loadingBar_35}
"adArea"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 103 MovieClip {AWindyDay_fla.adArea_37}
"playBtn"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 109 Button
"logo"Symbol 160 MovieClip {screenLoader} Frame 1Symbol 159 MovieClip
"logo"Symbol 171 MovieClip {TogeLogoAnimated} Frame 1Symbol 84 MovieClip
"body"Symbol 200 MovieClip {paperPlane} Frame 1Symbol 192 MovieClip {PhysicBody}
"head"Symbol 200 MovieClip {paperPlane} Frame 1Symbol 192 MovieClip {PhysicBody}
"triangle"Symbol 200 MovieClip {paperPlane} Frame 1Symbol 194 MovieClip {OneSideTriangle}
"body"Symbol 299 MovieClip {bird01} Frame 1Symbol 192 MovieClip {PhysicBody}
"closeButton"Symbol 308 MovieClip {AWindyDay_fla.screenHelp_63} Frame 1Symbol 188 Button
"tutorial"Symbol 308 MovieClip {AWindyDay_fla.screenHelp_63} Frame 1Symbol 307 MovieClip
"menu"Symbol 309 MovieClip {screenHelpAnimated} Frame 1Symbol 308 MovieClip {AWindyDay_fla.screenHelp_63}
"closeButton"Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77} Frame 1Symbol 188 Button
"sunnyDayLink"Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77} Frame 1Symbol 318 Button
"battleShieldLink"Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77} Frame 1Symbol 323 Button
"windyDayLink"Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77} Frame 1Symbol 327 Button
"chromosapienLink"Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77} Frame 1Symbol 332 Button
"menu"Symbol 337 MovieClip {AWindyDay_fla.screenCreditsAnimated_76} Frame 1Symbol 336 MovieClip {AWindyDay_fla.screenCredits_77}
"closeButton"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 188 Button
"medalName"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 339 EditableText
"medalDescription"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 340 EditableText
"medalAchieved"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 341 EditableText
"balloonPopper"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 347 MovieClip {balloonPopperMedal}
"roofLander"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 350 MovieClip {roofLanderMedal}
"traveller"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 353 MovieClip {travellerMedal}
"maximumPower"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 356 MovieClip {maximumPowerMedal}
"acquainted"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 359 MovieClip {acquaintedMedal}
"birdHunter"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 362 MovieClip {birdHunterMedal}
"crashLanding"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 365 MovieClip {crashLandingMedal}
"champion"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 368 MovieClip {championMedal}
"helpingHand"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 371 MovieClip {helpingHandMedal}
"millionaire"Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83} Frame 1Symbol 374 MovieClip {millionaireMedal}
"menu"Symbol 377 MovieClip {AWindyDay_fla.screenMedalsAnimated_82} Frame 1Symbol 376 MovieClip {AWindyDay_fla.screenMedals_83}
"maskLowButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 387 Button
"maskMedButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 387 Button
"maskHighButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 387 Button
"maskOnButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 387 Button
"maskOffButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 387 Button
"closeButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 188 Button
"lowButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 390 Button
"medButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 392 Button
"highButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 394 Button
"onButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 397 Button
"offButton"Symbol 401 MovieClip {AWindyDay_fla.screenOption_98} Frame 1Symbol 399 Button
"menu"Symbol 402 MovieClip {screenOptionAnimated} Frame 1Symbol 401 MovieClip {AWindyDay_fla.screenOption_98}
"kid"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 82 MovieClip {AWindyDay_fla.kid_19}
"optionBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 175 Button
"moreGamesBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 177 Button
"creditsBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 179 Button
"medalsBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 181 Button
"scoreBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 183 Button
"helpBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 185 Button
"playBtn"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 109 Button
"togeLogo"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 84 MovieClip
"screenHelp"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 309 MovieClip {screenHelpAnimated}
"screenCredit"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 337 MovieClip {AWindyDay_fla.screenCreditsAnimated_76}
"screenMedal"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 377 MovieClip {AWindyDay_fla.screenMedalsAnimated_82}
"screenScore"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 386 MovieClip {screenScoreAnimated}
"screenOption"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 402 MovieClip {screenOptionAnimated}
"logo"Symbol 403 MovieClip {screenMainMenu} Frame 1Symbol 159 MovieClip
"balloonHead"Symbol 413 MovieClip {balloonClip} Frame 1Symbol 409 MovieClip {AWindyDay_fla.baloonHead_106}
"head"Symbol 413 MovieClip {balloonClip} Frame 1Symbol 411 MovieClip
"head"Symbol 418 MovieClip {ballClip} Frame 1Symbol 411 MovieClip
"content"Symbol 420 MovieClip {billboard_text} Frame 1Symbol 419 EditableText
"collisionBox"Symbol 431 MovieClip {house01} Frame 1Symbol 428 MovieClip {AWindyDay_fla.collisionBox_114}
"body"Symbol 431 MovieClip {house01} Frame 1Symbol 192 MovieClip {PhysicBody}
"body"Symbol 431 MovieClip {house01} Frame 1Symbol 192 MovieClip {PhysicBody}
"kid"Symbol 431 MovieClip {house01} Frame 1Symbol 82 MovieClip {AWindyDay_fla.kid_19}
"paperPoint"Symbol 431 MovieClip {house01} Frame 1Symbol 200 MovieClip {paperPlane}
"collisionBox"Symbol 434 MovieClip {house02} Frame 1Symbol 428 MovieClip {AWindyDay_fla.collisionBox_114}
"body"Symbol 434 MovieClip {house02} Frame 1Symbol 192 MovieClip {PhysicBody}
"kid"Symbol 434 MovieClip {house02} Frame 1Symbol 82 MovieClip {AWindyDay_fla.kid_19}
"paperPoint"Symbol 434 MovieClip {house02} Frame 1Symbol 200 MovieClip {paperPlane}
"collisionBox"Symbol 437 MovieClip {house03} Frame 1Symbol 428 MovieClip {AWindyDay_fla.collisionBox_114}
"body"Symbol 437 MovieClip {house03} Frame 1Symbol 192 MovieClip {PhysicBody}
"kid"Symbol 437 MovieClip {house03} Frame 1Symbol 82 MovieClip {AWindyDay_fla.kid_19}
"paperPoint"Symbol 437 MovieClip {house03} Frame 1Symbol 200 MovieClip {paperPlane}
"collisionBox"Symbol 440 MovieClip {house04} Frame 1Symbol 428 MovieClip {AWindyDay_fla.collisionBox_114}
"body"Symbol 440 MovieClip {house04} Frame 1Symbol 192 MovieClip {PhysicBody}
"kid"Symbol 440 MovieClip {house04} Frame 1Symbol 82 MovieClip {AWindyDay_fla.kid_19}
"paperPoint"Symbol 440 MovieClip {house04} Frame 1Symbol 200 MovieClip {paperPlane}
"clipHolder"Symbol 447 MovieClip {AWindyDay_fla.medalInfoMenu_120} Frame 1Symbol 444 MovieClip
"medalName"Symbol 447 MovieClip {AWindyDay_fla.medalInfoMenu_120} Frame 1Symbol 445 EditableText
"menu"Symbol 448 MovieClip {medalInfoClip} Frame 1Symbol 447 MovieClip {AWindyDay_fla.medalInfoMenu_120}
"bar"Symbol 452 MovieClip {AWindyDay_fla.windBar_123} Frame 1Symbol 450 MovieClip
"windBar"Symbol 455 MovieClip {menuClip} Frame 1Symbol 452 MovieClip {AWindyDay_fla.windBar_123}
"scoreText"Symbol 455 MovieClip {menuClip} Frame 1Symbol 453 EditableText
"comboText"Symbol 455 MovieClip {menuClip} Frame 1Symbol 454 EditableText
"bonusText"Symbol 471 MovieClip {AWindyDay_fla.Symbol3_129} Frame 1Symbol 470 EditableText
"adBox"Symbol 479 MovieClip {AWindyDay_fla.UIAdvertising_131} Frame 1Symbol 103 MovieClip {AWindyDay_fla.adArea_37}
"scoreText"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 460 EditableText
"distanceText"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 461 EditableText
"retryButton"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 463 Button
"submitButton"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 465 Button
"balloonPoppedText"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 467 EditableText
"triviaText"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 469 EditableText
"bonusClip"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 471 MovieClip {AWindyDay_fla.Symbol3_129}
"menuButton"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 473 Button
"nameText"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 476 EditableText
"adBox"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 479 MovieClip {AWindyDay_fla.UIAdvertising_131}
"logo"Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126} Frame 1Symbol 159 MovieClip
"statusInfo"Symbol 481 MovieClip {scoreGUI} Frame 1Symbol 480 MovieClip {AWindyDay_fla.GUIStatusInfo_126}
"retryButton"Symbol 488 MovieClip {screenPause} Frame 1Symbol 463 Button
"menuButton"Symbol 488 MovieClip {screenPause} Frame 1Symbol 473 Button
"resumeButton"Symbol 488 MovieClip {screenPause} Frame 1Symbol 485 Button
"optionButton"Symbol 488 MovieClip {screenPause} Frame 1Symbol 487 Button
"menu"Symbol 489 MovieClip {screenPauseAnimated} Frame 1Symbol 488 MovieClip {screenPause}
"head"Symbol 494 MovieClip {treeClip} Frame 1Symbol 411 MovieClip
"body"Symbol 494 MovieClip {treeClip} Frame 1Symbol 192 MovieClip {PhysicBody}
"collisionBox"Symbol 494 MovieClip {treeClip} Frame 1Symbol 493 MovieClip {AWindyDay_fla.collisionBoxcopy_137}
"head"Symbol 497 MovieClip {treeClip2} Frame 1Symbol 411 MovieClip
"body"Symbol 497 MovieClip {treeClip2} Frame 1Symbol 192 MovieClip {PhysicBody}
"collisionBox"Symbol 497 MovieClip {treeClip2} Frame 1Symbol 496 MovieClip {AWindyDay_fla.collisionBoxcopy2_139}
"minijuegos"Symbol 545 MovieClip {introSponsor} Frame 1Symbol 544 MovieClip

Special Tags

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

Labels

"spawn"Symbol 82 MovieClip {AWindyDay_fla.kid_19} Frame 1
"throw"Symbol 82 MovieClip {AWindyDay_fla.kid_19} Frame 10
"idle"Symbol 82 MovieClip {AWindyDay_fla.kid_19} Frame 26
"loading"Symbol 160 MovieClip {screenLoader} Frame 1
"main"Symbol 160 MovieClip {screenLoader} Frame 2
"dead"Symbol 200 MovieClip {paperPlane} Frame 58
"in"Symbol 309 MovieClip {screenHelpAnimated} Frame 2
"show"Symbol 309 MovieClip {screenHelpAnimated} Frame 16
"out"Symbol 309 MovieClip {screenHelpAnimated} Frame 17
"in"Symbol 337 MovieClip {AWindyDay_fla.screenCreditsAnimated_76} Frame 2
"show"Symbol 337 MovieClip {AWindyDay_fla.screenCreditsAnimated_76} Frame 16
"out"Symbol 337 MovieClip {AWindyDay_fla.screenCreditsAnimated_76} Frame 17
"locked"Symbol 347 MovieClip {balloonPopperMedal} Frame 1
"unlocked"Symbol 347 MovieClip {balloonPopperMedal} Frame 2
"locked"Symbol 350 MovieClip {roofLanderMedal} Frame 1
"unlocked"Symbol 350 MovieClip {roofLanderMedal} Frame 2
"locked"Symbol 353 MovieClip {travellerMedal} Frame 1
"unlocked"Symbol 353 MovieClip {travellerMedal} Frame 2
"locked"Symbol 356 MovieClip {maximumPowerMedal} Frame 1
"unlocked"Symbol 356 MovieClip {maximumPowerMedal} Frame 2
"locked"Symbol 359 MovieClip {acquaintedMedal} Frame 1
"unlocked"Symbol 359 MovieClip {acquaintedMedal} Frame 2
"locked"Symbol 362 MovieClip {birdHunterMedal} Frame 1
"unlocked"Symbol 362 MovieClip {birdHunterMedal} Frame 2
"locked"Symbol 365 MovieClip {crashLandingMedal} Frame 1
"unlocked"Symbol 365 MovieClip {crashLandingMedal} Frame 2
"locked"Symbol 368 MovieClip {championMedal} Frame 1
"unlocked"Symbol 368 MovieClip {championMedal} Frame 2
"locked"Symbol 371 MovieClip {helpingHandMedal} Frame 1
"unlocked"Symbol 371 MovieClip {helpingHandMedal} Frame 2
"locked"Symbol 374 MovieClip {millionaireMedal} Frame 1
"unlocked"Symbol 374 MovieClip {millionaireMedal} Frame 2
"in"Symbol 377 MovieClip {AWindyDay_fla.screenMedalsAnimated_82} Frame 2
"show"Symbol 377 MovieClip {AWindyDay_fla.screenMedalsAnimated_82} Frame 16
"out"Symbol 377 MovieClip {AWindyDay_fla.screenMedalsAnimated_82} Frame 17
"in"Symbol 386 MovieClip {screenScoreAnimated} Frame 2
"show"Symbol 386 MovieClip {screenScoreAnimated} Frame 16
"out"Symbol 386 MovieClip {screenScoreAnimated} Frame 17
"in"Symbol 402 MovieClip {screenOptionAnimated} Frame 2
"show"Symbol 402 MovieClip {screenOptionAnimated} Frame 16
"out"Symbol 402 MovieClip {screenOptionAnimated} Frame 17
"loading"Symbol 403 MovieClip {screenMainMenu} Frame 1
"main"Symbol 403 MovieClip {screenMainMenu} Frame 2
"in"Symbol 448 MovieClip {medalInfoClip} Frame 2
"show"Symbol 448 MovieClip {medalInfoClip} Frame 16
"out"Symbol 448 MovieClip {medalInfoClip} Frame 17
"in"Symbol 481 MovieClip {scoreGUI} Frame 2
"show"Symbol 481 MovieClip {scoreGUI} Frame 16
"out"Symbol 481 MovieClip {scoreGUI} Frame 17
"in"Symbol 489 MovieClip {screenPauseAnimated} Frame 2
"show"Symbol 489 MovieClip {screenPauseAnimated} Frame 16
"out"Symbol 489 MovieClip {screenPauseAnimated} Frame 17




http://swfchan.com/19/93634/info.shtml
Created: 26/3 -2019 15:09:06 Last modified: 26/3 -2019 15:09:06 Server time: 20/05 -2024 02:25:34