Section 1
//Locale (ascb.util.Locale)
package ascb.util {
import flash.system.*;
public class Locale {
private var _sVariant:String;
private var _sLanguage:String;
public static const GERMAN:String = "de";
public static const CHINESE:String = "zh";
public static const ENGLISH:String = "en";
public static const SPANISH:String = "es";
public static const UK:String = "UK";
public static const US:String = "US";
public static const FRENCH:String = "fr";
public static const JAPANESE:String = "jp";
private static var __sLanguage:String;
private static var __sVariant:String;
public function Locale(_arg1:String=null, _arg2:String=null){
_sLanguage = _arg1;
_sVariant = _arg2;
}
public function set language(_arg1:String):void{
_sLanguage = _arg1;
}
public function get variant():String{
if (_sVariant == null){
if (Locale.svariant == null){
if (Capabilities.language.length > 2){
_sVariant = Capabilities.language.substr(3);
} else {
if (language == ENGLISH){
if (new Date().getTimezoneOffset() > 120){
_sVariant = US;
} else {
_sVariant = UK;
};
} else {
if (language == SPANISH){
if (new Date().getTimezoneOffset() > 120){
_sVariant = "MX";
} else {
_sVariant = "ES";
};
};
};
};
} else {
_sVariant = Locale.svariant;
};
};
return (_sVariant);
}
public function reset():void{
_sLanguage = null;
_sVariant = null;
}
public function set languageVariant(_arg1:String):void{
var _local2:Array = _arg1.split("-");
_sLanguage = _local2[0];
_sVariant = _local2[1];
}
public function set variant(_arg1:String):void{
_sVariant = _arg1;
}
public function get languageVariant():String{
var _local1:String = language;
if (variant != null){
_local1 = (_local1 + ("-" + variant));
};
return (_local1);
}
public function get language():String{
if (_sLanguage == null){
if (Locale.slanguage == null){
_sLanguage = Capabilities.language.substr(0, 2);
} else {
_sLanguage = Locale.slanguage;
};
};
return (_sLanguage);
}
public static function sreset():void{
__sLanguage = null;
__sVariant = null;
}
public static function get slanguage():String{
return (__sLanguage);
}
public static function set slanguage(_arg1:String):void{
__sLanguage = _arg1;
}
public static function set svariant(_arg1:String):void{
__sVariant = _arg1;
}
public static function get svariant():String{
return (__sVariant);
}
public static function get slanguageVariant():String{
var _local1:String = slanguage;
if (svariant != null){
_local1 = (_local1 + ("-" + svariant));
};
return (_local1);
}
public static function set slanguageVariant(_arg1:String):void{
var _local2:Array = _arg1.split("-");
__sLanguage = _local2[0];
__sVariant = _local2[1];
}
}
}//package ascb.util
Section 2
//NumberFormat (ascb.util.NumberFormat)
package ascb.util {
public class NumberFormat {
private var _sMask:String;
public function NumberFormat(_arg1:String=null){
_sMask = _arg1;
}
public function parse(_arg1:String, _arg2:Number, _arg3:Boolean, _arg4:Locale):Number{
if (_arg4 == null){
_arg4 = new Locale();
};
var _local5:Object = getSymbols(_arg3, _arg4);
var _local6:Array = _arg1.split("");
if (isNaN(_arg2)){
if (_local6[0] == "O"){
if (_local6[1] == "x"){
_arg2 = 16;
} else {
_arg2 = 8;
};
} else {
if (_local6[0] == "#"){
_arg2 = 16;
} else {
_arg2 = (isNaN(_arg2)) ? 10 : _arg2;
};
};
};
var _local7:Number = 0;
while (_local7 < _local6.length) {
switch (_local6[_local7]){
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
break;
case _local5.decimal:
_local6[_local7] = ".";
break;
default:
if (_arg2 > 10){
if ((((((_local6[_local7].charCodeAt(0) > 64)) && ((_local6[_local7].charCodeAt(0) < 91)))) || ((((_local6[_local7].charCodeAt(0) > 96)) && ((_local6[_local7].charCodeAt(0) < 123)))))){
break;
};
};
_local6.splice(_local7, 1);
_local7--;
};
_local7++;
};
if (_arg2 == 10){
return (Number(_local6.join("")));
};
return (parseInt(_local6.join(""), _arg2));
}
private function getSymbols(_arg1:Boolean, _arg2:Locale):Object{
var _local3:Object = new Object();
switch (_arg2.languageVariant){
case "en-US":
_local3.currency = "$";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "en-UK":
_local3.currency = "£";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "es-MX":
_local3.currency = "$";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "es-ES":
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = false;
break;
case "fr":
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = false;
break;
case "sv":
_local3.currency = "kr";
_local3.group = (_arg1) ? "," : " ";
_local3.decimal = ".";
_local3.before = false;
break;
case "jp":
_local3.currency = " 5";
_local3.group = ",";
_local3.decimal = ".";
_local3.before = true;
break;
case "nl":
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = true;
break;
default:
_local3.currency = "€";
_local3.group = ".";
_local3.decimal = ",";
_local3.before = true;
break;
};
return (_local3);
}
public function format(_arg1:Number, _arg2:Object=null, _arg3:Object=null):String{
var _local4:String;
var _local10:Number;
var _local11:String;
var _local12:Object;
var _local13:Locale;
var _local14:Locale;
var _local15:Number;
var _local16:Number;
var _local17:Array;
var _local18:Array;
var _local19:Array;
var _local20:Number;
var _local21:Number;
var _local22:Boolean;
var _local23:Array;
var _local24:Number;
if (typeof(_arg2) == "number"){
_local10 = Number(_arg2);
_local4 = _arg1.toString(_local10);
_local11 = "";
if (_local10 == 16){
_local11 = "0x";
};
if (_local10 == 8){
_local11 = "0";
};
if (_arg3 != null){
_local11 = String(_arg3);
};
return ((_local11 + _local4.toUpperCase()));
};
var _local5 = ",";
var _local6 = ".";
if (((!((_arg2 == null))) && (_arg2.hasOwnProperty("group")))){
_local12 = _arg2;
} else {
_local13 = Locale(_arg2);
if (_local13 == null){
_local13 = new Locale();
};
_local14 = Locale(_local13);
_local12 = getSymbols(false, _local14);
};
_local5 = _local12.decimal;
_local6 = _local12.group;
var _local7:Array = String(_arg1).split(".");
var _local8:Array = _local7[0].split("");
var _local9:Array = ((_local7.length)>1) ? _local7[1].split("") : new Array();
if (_sMask == null){
_local15 = 1;
_local8.reverse();
_local16 = 0;
while (_local16 < _local8.length) {
if (_local15 > 3){
_local15 = 0;
_local8.splice(_local16, 0, _local6);
};
_local15++;
_local16++;
};
_local8.reverse();
_local4 = _local8.join("");
if (_local7[1] != null){
_local4 = (_local4 + (_local5 + _local7[1]));
};
} else {
_local17 = _sMask.split("");
_local16 = 0;
while (_local16 < _local17.length) {
if (((((!((_local17[_local16] == "0"))) && (!((_local17[_local16] == "#"))))) && (!((_local17[_local16] == "."))))){
_local17.splice(_local16, 1);
_local16--;
};
_local16++;
};
_local17 = _local17.join("").split(".");
_local18 = _local17[0].split("");
_local19 = ((_local17.length)>1) ? _local17[1].split("") : new Array();
_local15 = _local18.length;
_local20 = 0;
_local21 = 0;
_local4 = "";
if (_local15 < _local8.length){
_local16 = 0;
while (_local16 < (_local8.length - _local15)) {
_local4 = (_local4 + _local8[_local16]);
_local20++;
_local16++;
};
} else {
if (_local15 > _local8.length){
_local16 = 0;
while (_local16 < (_local15 - _local8.length)) {
if (_local18[_local16] == "0"){
_local4 = (_local4 + "0");
} else {
if (_local18[_local16] == "#"){
_local4 = (_local4 + " ");
};
};
_local21++;
_local16++;
};
};
};
_local22 = false;
_local16 = _local21;
while (_local16 < _local18.length) {
if ((((_local18[_local16] == "0")) || ((_local18[_local16] == "#")))){
_local4 = (_local4 + ((_local8[_local20])==undefined) ? "" : _local8[_local20]);
_local20++;
};
_local16++;
};
_local17 = _sMask.split(".");
_local17 = _local17[0].split("");
_local23 = _local4.split("");
_local22 = false;
_local16 = 0;
while (_local16 < _local17.length) {
if (((((!((_local17[_local16] == "0"))) && (!((_local17[_local16] == "#"))))) && (!((_local17[_local16] == "."))))){
if (_local22){
_local23.splice(_local16, 0, _local6);
} else {
_local23.splice(_local16, 0, " ");
};
};
if (((!((_local23[_local16] == " "))) && (!((_local23[_local16] == "0"))))){
_local22 = true;
};
_local16++;
};
_local4 = _local23.join("");
if (_local19.length > 0){
_local4 = (_local4 + _local5);
};
_local16 = 0;
while (_local16 < _local19.length) {
if (_local9[_local16] == null){
if (_local19[_local16] == "0"){
_local4 = (_local4 + "0");
} else {
if (_local19[_local16] == "#"){
_local4 = (_local4 + " ");
};
};
} else {
_local24 = Number(((_local9[_local16] + "") + _local9[(_local16 + 1)]));
if ((((_local16 == (_local19.length - 1))) && (!(isNaN(_local24))))){
_local4 = (_local4 + String(Math.round((_local24 / 10))));
} else {
_local4 = (_local4 + _local9[_local16]);
};
};
_local16++;
};
};
return (_local4);
}
public function set mask(_arg1:String):void{
_sMask = _arg1;
}
public function currencyFormat(_arg1:Number, _arg2:Object=null):String{
var _local15:Object;
var _local16:Number;
var _local4:Locale = ((arguments[1] is Locale)) ? arguments[1] : new Locale();
if (((!((_arg2 == null))) && (_arg2.hasOwnProperty("group")))){
_local15 = _arg2;
} else {
_local15 = getSymbols(true, _local4);
};
var _local5:String = _local15.currency;
var _local6:String = _local15.group;
var _local7:String = _local15.decimal;
var _local8:String = _sMask;
_sMask = null;
var _local9:Locale = new Locale();
_local9.language = "en";
_local9.variant = "US";
var _local10:String = format(_arg1, _local9);
_sMask = _local8;
var _local11:Array = _local10.split(".");
if (_local11[1] == undefined){
_local11[1] = "00";
} else {
_local11[1] = Number(_local11[1]);
_local16 = String(_local11[1]).length;
if (_local16 > 2){
_local11[1] = (_local11[1] / Math.pow(10, (_local16 - 2)));
_local11[1] = Math.round(_local11[1]);
};
};
_local10 = _local11.join(".");
var _local12:Array = _local10.split("");
var _local13:Number = 0;
while (_local13 < _local12.length) {
if (_local12[_local13] == ","){
_local12[_local13] = _local6;
} else {
if (_local12[_local13] == "."){
_local12[_local13] = _local7;
};
};
_local13++;
};
var _local14:String = (((_local15.before) ? _local5 : "" + _local12.join("")) + (_local15.before) ? "" : _local5);
return (_local14);
}
public function get mask():String{
return (_sMask);
}
}
}//package ascb.util
Section 3
//b2CircleDef (Box2D.Collision.Shapes.b2CircleDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2CircleDef extends b2ShapeDef {
public var radius:Number;
public var localPosition:b2Vec2;
public function b2CircleDef(){
localPosition = new b2Vec2(0, 0);
super();
type = b2Shape.e_circleShape;
radius = 1;
}
}
}//package Box2D.Collision.Shapes
Section 4
//b2CircleShape (Box2D.Collision.Shapes.b2CircleShape)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Common.*;
public class b2CircleShape extends b2Shape {
public var m_localPosition:b2Vec2;
public var m_radius:Number;
public function b2CircleShape(_arg1:b2ShapeDef){
m_localPosition = new b2Vec2();
super(_arg1);
var _local2:b2CircleDef = (_arg1 as b2CircleDef);
m_type = e_circleShape;
m_localPosition.SetV(_local2.localPosition);
m_radius = _local2.radius;
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local10:Number;
var _local6:b2Mat22 = _arg1.R;
var _local7:Number = (_arg1.position.x + ((_local6.col1.x * m_localPosition.x) + (_local6.col2.x * m_localPosition.y)));
var _local8:Number = (_arg1.position.x + ((_local6.col1.y * m_localPosition.x) + (_local6.col2.y * m_localPosition.y)));
var _local9:Number = (_arg4.p1.x - _local7);
_local10 = (_arg4.p1.y - _local8);
var _local11:Number = (((_local9 * _local9) + (_local10 * _local10)) - (m_radius * m_radius));
if (_local11 < 0){
return (false);
};
var _local12:Number = (_arg4.p2.x - _arg4.p1.x);
var _local13:Number = (_arg4.p2.y - _arg4.p1.y);
var _local14:Number = ((_local9 * _local12) + (_local10 * _local13));
var _local15:Number = ((_local12 * _local12) + (_local13 * _local13));
var _local16:Number = ((_local14 * _local14) - (_local15 * _local11));
if ((((_local16 < 0)) || ((_local15 < Number.MIN_VALUE)))){
return (false);
};
var _local17:Number = -((_local14 + Math.sqrt(_local16)));
if ((((0 <= _local17)) && ((_local17 <= (_arg5 * _local15))))){
_local17 = (_local17 / _local15);
_arg2[0] = _local17;
_arg3.x = (_local9 + (_local17 * _local12));
_arg3.y = (_local10 + (_local17 * _local13));
_arg3.Normalize();
return (true);
};
return (false);
}
override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{
var _local5:b2Vec2 = b2Math.b2MulX(_arg3, m_localPosition);
var _local6:Number = -((b2Math.b2Dot(_arg1, _local5) - _arg2));
if (_local6 < (-(m_radius) + Number.MIN_VALUE)){
return (0);
};
if (_local6 > m_radius){
_arg4.SetV(_local5);
return (((b2Settings.b2_pi * m_radius) * m_radius));
};
var _local7:Number = (m_radius * m_radius);
var _local8:Number = (_local6 * _local6);
var _local9:Number = ((_local7 * (Math.asin((_local6 / m_radius)) + (b2Settings.b2_pi / 2))) + (_local6 * Math.sqrt((_local7 - _local8))));
var _local10:Number = (((-2 / 3) * Math.pow((_local7 - _local8), 1.5)) / _local9);
_arg4.x = (_local5.x + (_arg1.x * _local10));
_arg4.y = (_local5.y + (_arg1.y * _local10));
return (_local9);
}
public function GetLocalPosition():b2Vec2{
return (m_localPosition);
}
public function GetRadius():Number{
return (m_radius);
}
override public function ComputeMass(_arg1:b2MassData):void{
_arg1.mass = (((m_density * b2Settings.b2_pi) * m_radius) * m_radius);
_arg1.center.SetV(m_localPosition);
_arg1.I = (_arg1.mass * (((0.5 * m_radius) * m_radius) + ((m_localPosition.x * m_localPosition.x) + (m_localPosition.y * m_localPosition.y))));
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
var _local4:b2Mat22;
_local4 = _arg2.R;
var _local5:Number = (_arg2.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
var _local6:Number = (_arg2.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
_local4 = _arg3.R;
var _local7:Number = (_arg3.position.x + ((_local4.col1.x * m_localPosition.x) + (_local4.col2.x * m_localPosition.y)));
var _local8:Number = (_arg3.position.y + ((_local4.col1.y * m_localPosition.x) + (_local4.col2.y * m_localPosition.y)));
_arg1.lowerBound.Set((((_local5 < _local7)) ? _local5 : _local7 - m_radius), (((_local6 < _local8)) ? _local6 : _local8 - m_radius));
_arg1.upperBound.Set((((_local5 > _local7)) ? _local5 : _local7 + m_radius), (((_local6 > _local8)) ? _local6 : _local8 + m_radius));
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:Number = (m_localPosition.x - _arg1.x);
var _local3:Number = (m_localPosition.y - _arg1.y);
_local2 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
m_sweepRadius = ((_local2 + m_radius) - b2Settings.b2_toiSlop);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
var _local3:b2Mat22 = _arg2.R;
var _local4:Number = (_arg2.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
var _local5:Number = (_arg2.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
_arg1.lowerBound.Set((_local4 - m_radius), (_local5 - m_radius));
_arg1.upperBound.Set((_local4 + m_radius), (_local5 + m_radius));
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local3:b2Mat22 = _arg1.R;
var _local4:Number = (_arg1.position.x + ((_local3.col1.x * m_localPosition.x) + (_local3.col2.x * m_localPosition.y)));
var _local5:Number = (_arg1.position.y + ((_local3.col1.y * m_localPosition.x) + (_local3.col2.y * m_localPosition.y)));
_local4 = (_arg2.x - _local4);
_local5 = (_arg2.y - _local5);
return ((((_local4 * _local4) + (_local5 * _local5)) <= (m_radius * m_radius)));
}
}
}//package Box2D.Collision.Shapes
Section 5
//b2FilterData (Box2D.Collision.Shapes.b2FilterData)
package Box2D.Collision.Shapes {
public class b2FilterData {
public var maskBits:uint;// = 0xFFFF
public var groupIndex:int;// = 0
public var categoryBits:uint;// = 1
public function Copy():b2FilterData{
var _local1:b2FilterData = new b2FilterData();
_local1.categoryBits = categoryBits;
_local1.maskBits = maskBits;
_local1.groupIndex = groupIndex;
return (_local1);
}
}
}//package Box2D.Collision.Shapes
Section 6
//b2MassData (Box2D.Collision.Shapes.b2MassData)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
public class b2MassData {
public var mass:Number;// = 0
public var center:b2Vec2;
public var I:Number;// = 0
public function b2MassData(){
center = new b2Vec2(0, 0);
super();
}
}
}//package Box2D.Collision.Shapes
Section 7
//b2PolygonDef (Box2D.Collision.Shapes.b2PolygonDef)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PolygonDef extends b2ShapeDef {
public var vertices:Array;
public var vertexCount:int;
private static var s_mat:b2Mat22 = new b2Mat22();
public function b2PolygonDef(){
vertices = new Array(b2Settings.b2_maxPolygonVertices);
super();
type = b2Shape.e_polygonShape;
vertexCount = 0;
var _local1:int;
while (_local1 < b2Settings.b2_maxPolygonVertices) {
vertices[_local1] = new b2Vec2();
_local1++;
};
}
public function SetAsOrientedBox(_arg1:Number, _arg2:Number, _arg3:b2Vec2=null, _arg4:Number=0):void{
var _local5:b2Vec2;
var _local6:b2Mat22;
var _local7:int;
vertexCount = 4;
vertices[0].Set(-(_arg1), -(_arg2));
vertices[1].Set(_arg1, -(_arg2));
vertices[2].Set(_arg1, _arg2);
vertices[3].Set(-(_arg1), _arg2);
if (_arg3){
_local5 = _arg3;
_local6 = s_mat;
_local6.Set(_arg4);
_local7 = 0;
while (_local7 < vertexCount) {
_arg3 = vertices[_local7];
_arg1 = (_local5.x + ((_local6.col1.x * _arg3.x) + (_local6.col2.x * _arg3.y)));
_arg3.y = (_local5.y + ((_local6.col1.y * _arg3.x) + (_local6.col2.y * _arg3.y)));
_arg3.x = _arg1;
_local7++;
};
};
}
public function SetAsBox(_arg1:Number, _arg2:Number):void{
vertexCount = 4;
vertices[0].Set(-(_arg1), -(_arg2));
vertices[1].Set(_arg1, -(_arg2));
vertices[2].Set(_arg1, _arg2);
vertices[3].Set(-(_arg1), _arg2);
}
}
}//package Box2D.Collision.Shapes
Section 8
//b2PolygonShape (Box2D.Collision.Shapes.b2PolygonShape)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Common.*;
public class b2PolygonShape extends b2Shape {
public var m_coreVertices:Array;
public var m_vertices:Array;
private var s_supportVec:b2Vec2;
public var m_centroid:b2Vec2;
public var m_normals:Array;
public var m_obb:b2OBB;
public var m_vertexCount:int;
private static var s_computeMat:b2Mat22 = new b2Mat22();
private static var s_sweptAABB1:b2AABB = new b2AABB();
private static var s_sweptAABB2:b2AABB = new b2AABB();
public function b2PolygonShape(_arg1:b2ShapeDef){
var _local3:int;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
s_supportVec = new b2Vec2();
m_obb = new b2OBB();
m_vertices = new Array(b2Settings.b2_maxPolygonVertices);
m_normals = new Array(b2Settings.b2_maxPolygonVertices);
m_coreVertices = new Array(b2Settings.b2_maxPolygonVertices);
super(_arg1);
m_type = e_polygonShape;
var _local2:b2PolygonDef = (_arg1 as b2PolygonDef);
m_vertexCount = _local2.vertexCount;
var _local4:int = _local3;
var _local5:int = _local3;
_local3 = 0;
while (_local3 < m_vertexCount) {
m_vertices[_local3] = _local2.vertices[_local3].Copy();
_local3++;
};
_local3 = 0;
while (_local3 < m_vertexCount) {
_local4 = _local3;
_local5 = (((_local3 + 1) < m_vertexCount)) ? (_local3 + 1) : 0;
_local6 = (m_vertices[_local5].x - m_vertices[_local4].x);
_local7 = (m_vertices[_local5].y - m_vertices[_local4].y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
m_normals[_local3] = new b2Vec2((_local7 / _local8), (-(_local6) / _local8));
_local3++;
};
m_centroid = ComputeCentroid(_local2.vertices, _local2.vertexCount);
ComputeOBB(m_obb, m_vertices, m_vertexCount);
_local3 = 0;
while (_local3 < m_vertexCount) {
_local4 = (((_local3 - 1) >= 0)) ? (_local3 - 1) : (m_vertexCount - 1);
_local5 = _local3;
_local9 = m_normals[_local4].x;
_local10 = m_normals[_local4].y;
_local11 = m_normals[_local5].x;
_local12 = m_normals[_local5].y;
_local13 = (m_vertices[_local3].x - m_centroid.x);
_local14 = (m_vertices[_local3].y - m_centroid.y);
_local15 = (((_local9 * _local13) + (_local10 * _local14)) - b2Settings.b2_toiSlop);
_local16 = (((_local11 * _local13) + (_local12 * _local14)) - b2Settings.b2_toiSlop);
_local17 = (1 / ((_local9 * _local12) - (_local10 * _local11)));
m_coreVertices[_local3] = new b2Vec2(((_local17 * ((_local12 * _local15) - (_local10 * _local16))) + m_centroid.x), ((_local17 * ((_local9 * _local16) - (_local11 * _local15))) + m_centroid.y));
_local3++;
};
}
override public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{
var _local13:int;
var _local22:b2Vec2;
var _local24:Boolean;
var _local25:b2MassData;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local5:b2Vec2 = b2Math.b2MulTMV(_arg3.R, _arg1);
var _local6:Number = (_arg2 - b2Math.b2Dot(_arg1, _arg3.position));
var _local7:Array = [];
var _local8:int;
var _local9 = -1;
var _local10 = -1;
var _local11:b2Vec2;
var _local12:Boolean;
_local13 = 0;
while (_local13 < m_vertexCount) {
_local11 = m_vertices[_local13];
_local7[_local13] = (((_local5.x * _local11.x) + (_local5.y * _local11.y)) - _local6);
_local24 = (_local7[_local13] < -(Number.MIN_VALUE));
if (_local13 > 0){
if (_local24){
if (!_local12){
_local9 = (_local13 - 1);
_local8++;
};
} else {
if (_local12){
_local10 = (_local13 - 1);
_local8++;
};
};
};
_local12 = _local24;
_local13++;
};
switch (_local8){
case 0:
if (_local12){
_local25 = new b2MassData();
ComputeMass(_local25);
_arg4.SetV(b2Math.b2MulX(_arg3, _local25.center));
return ((_local25.mass / m_density));
};
return (0);
case 1:
if (_local9 == -1){
_local9 = (m_vertexCount - 1);
} else {
_local10 = (m_vertexCount - 1);
};
break;
};
var _local14:int = ((_local9 + 1) % m_vertexCount);
var _local15:int = ((_local10 + 1) % m_vertexCount);
var _local16:Number = ((0 - _local7[_local9]) / (_local7[_local14] - _local7[_local9]));
var _local17:Number = ((0 - _local7[_local10]) / (_local7[_local15] - _local7[_local10]));
var _local18:b2Vec2 = new b2Vec2(((m_vertices[_local9].x * (1 - _local16)) + (m_vertices[_local14].x * _local16)), ((m_vertices[_local9].y * (1 - _local16)) + (m_vertices[_local14].y * _local16)));
var _local19:b2Vec2 = new b2Vec2(((m_vertices[_local10].x * (1 - _local17)) + (m_vertices[_local15].x * _local17)), ((m_vertices[_local10].y * (1 - _local17)) + (m_vertices[_local15].y * _local17)));
var _local20:Number = 0;
_arg4.Set(0, 0);
var _local21:b2Vec2 = m_vertices[_local14];
var _local23:Number = (1 / 3);
_local13 = _local14;
while (_local13 != _local15) {
_local13 = ((_local13 + 1) % m_vertexCount);
if (_local13 == _local15){
_local22 = _local19;
} else {
_local22 = m_vertices[_local13];
};
_local26 = (_local21.x - _local18.x);
_local27 = (_local21.y - _local18.y);
_local28 = (_local22.x - _local18.x);
_local29 = (_local22.y - _local18.y);
_local30 = ((_local26 * _local29) - (_local27 * _local28));
_local31 = (0.5 * _local30);
_local20 = (_local20 + _local31);
_arg4.x = (_arg4.x + ((_local31 * _local23) * ((_local18.x + _local21.x) + _local22.x)));
_arg4.y = (_arg4.y + ((_local31 * _local23) * ((_local18.y + _local21.y) + _local22.y)));
_local21 = _local22;
};
_arg4.x = (_arg4.x / _local20);
_arg4.y = (_arg4.y / _local20);
_arg4.SetV(b2Math.b2MulX(_arg3, _arg4));
return (_local20);
}
override public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
var _local4:b2AABB = s_sweptAABB1;
var _local5:b2AABB = s_sweptAABB2;
ComputeAABB(_local4, _arg2);
ComputeAABB(_local5, _arg3);
_arg1.lowerBound.Set(((_local4.lowerBound.x < _local5.lowerBound.x)) ? _local4.lowerBound.x : _local5.lowerBound.x, ((_local4.lowerBound.y < _local5.lowerBound.y)) ? _local4.lowerBound.y : _local5.lowerBound.y);
_arg1.upperBound.Set(((_local4.upperBound.x > _local5.upperBound.x)) ? _local4.upperBound.x : _local5.upperBound.x, ((_local4.upperBound.y > _local5.upperBound.y)) ? _local4.upperBound.y : _local5.upperBound.y);
}
public function GetVertices():Array{
return (m_vertices);
}
public function GetCoreVertices():Array{
return (m_coreVertices);
}
public function GetCentroid():b2Vec2{
return (m_centroid);
}
public function GetOBB():b2OBB{
return (m_obb);
}
public function GetFirstVertex(_arg1:b2XForm):b2Vec2{
return (b2Math.b2MulX(_arg1, m_coreVertices[0]));
}
public function Centroid(_arg1:b2XForm):b2Vec2{
return (b2Math.b2MulX(_arg1, m_centroid));
}
override public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
var _local8:Number;
var _local9:Number;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local20:Number;
var _local21:Number;
var _local6:Number = 0;
var _local7:Number = _arg5;
_local8 = (_arg4.p1.x - _arg1.position.x);
_local9 = (_arg4.p1.y - _arg1.position.y);
_local10 = _arg1.R;
var _local12:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
var _local13:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
_local8 = (_arg4.p2.x - _arg1.position.x);
_local9 = (_arg4.p2.y - _arg1.position.y);
_local10 = _arg1.R;
var _local14:Number = ((_local8 * _local10.col1.x) + (_local9 * _local10.col1.y));
var _local15:Number = ((_local8 * _local10.col2.x) + (_local9 * _local10.col2.y));
var _local16:Number = (_local14 - _local12);
var _local17:Number = (_local15 - _local13);
var _local18 = -1;
var _local19:int;
while (_local19 < m_vertexCount) {
_local11 = m_vertices[_local19];
_local8 = (_local11.x - _local12);
_local9 = (_local11.y - _local13);
_local11 = m_normals[_local19];
_local20 = ((_local11.x * _local8) + (_local11.y * _local9));
_local21 = ((_local11.x * _local16) + (_local11.y * _local17));
if ((((_local21 < 0)) && ((_local20 < (_local6 * _local21))))){
_local6 = (_local20 / _local21);
_local18 = _local19;
} else {
if ((((_local21 > 0)) && ((_local20 < (_local7 * _local21))))){
_local7 = (_local20 / _local21);
};
};
if (_local7 < _local6){
return (false);
};
_local19++;
};
if (_local18 >= 0){
_arg2[0] = _local6;
_local10 = _arg1.R;
_local11 = m_normals[_local18];
_arg3.x = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_arg3.y = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
return (true);
};
return (false);
}
override public function ComputeMass(_arg1:b2MassData):void{
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local2:Number = 0;
var _local3:Number = 0;
var _local4:Number = 0;
var _local5:Number = 0;
var _local6:Number = 0;
var _local7:Number = 0;
var _local8:Number = (1 / 3);
var _local9:int;
while (_local9 < m_vertexCount) {
_local10 = m_vertices[_local9];
_local11 = (((_local9 + 1) < m_vertexCount)) ? m_vertices[int((_local9 + 1))] : m_vertices[0];
_local12 = (_local10.x - _local6);
_local13 = (_local10.y - _local7);
_local14 = (_local11.x - _local6);
_local15 = (_local11.y - _local7);
_local16 = ((_local12 * _local15) - (_local13 * _local14));
_local17 = (0.5 * _local16);
_local4 = (_local4 + _local17);
_local2 = (_local2 + ((_local17 * _local8) * ((_local6 + _local10.x) + _local11.x)));
_local3 = (_local3 + ((_local17 * _local8) * ((_local7 + _local10.y) + _local11.y)));
_local18 = _local6;
_local19 = _local7;
_local20 = _local12;
_local21 = _local13;
_local22 = _local14;
_local23 = _local15;
_local24 = ((_local8 * ((0.25 * (((_local20 * _local20) + (_local22 * _local20)) + (_local22 * _local22))) + ((_local18 * _local20) + (_local18 * _local22)))) + ((0.5 * _local18) * _local18));
_local25 = ((_local8 * ((0.25 * (((_local21 * _local21) + (_local23 * _local21)) + (_local23 * _local23))) + ((_local19 * _local21) + (_local19 * _local23)))) + ((0.5 * _local19) * _local19));
_local5 = (_local5 + (_local16 * (_local24 + _local25)));
_local9++;
};
_arg1.mass = (m_density * _local4);
_local2 = (_local2 * (1 / _local4));
_local3 = (_local3 * (1 / _local4));
_arg1.center.Set(_local2, _local3);
_arg1.I = (m_density * _local5);
}
public function GetNormals():Array{
return (m_normals);
}
public function Support(_arg1:b2XForm, _arg2:Number, _arg3:Number):b2Vec2{
var _local4:b2Vec2;
var _local5:b2Mat22;
var _local11:Number;
_local5 = _arg1.R;
var _local6:Number = ((_arg2 * _local5.col1.x) + (_arg3 * _local5.col1.y));
var _local7:Number = ((_arg2 * _local5.col2.x) + (_arg3 * _local5.col2.y));
var _local8:int;
_local4 = m_coreVertices[0];
var _local9:Number = ((_local4.x * _local6) + (_local4.y * _local7));
var _local10 = 1;
while (_local10 < m_vertexCount) {
_local4 = m_coreVertices[_local10];
_local11 = ((_local4.x * _local6) + (_local4.y * _local7));
if (_local11 > _local9){
_local8 = _local10;
_local9 = _local11;
};
_local10++;
};
_local5 = _arg1.R;
_local4 = m_coreVertices[_local8];
s_supportVec.x = (_arg1.position.x + ((_local5.col1.x * _local4.x) + (_local5.col2.x * _local4.y)));
s_supportVec.y = (_arg1.position.y + ((_local5.col1.y * _local4.x) + (_local5.col2.y * _local4.y)));
return (s_supportVec);
}
public function GetVertexCount():int{
return (m_vertexCount);
}
override public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
var _local3:b2Mat22;
var _local4:b2Vec2;
var _local5:b2Mat22 = s_computeMat;
_local3 = _arg2.R;
_local4 = m_obb.R.col1;
_local5.col1.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
_local5.col1.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
_local4 = m_obb.R.col2;
_local5.col2.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
_local5.col2.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
_local5.Abs();
var _local6:b2Mat22 = _local5;
_local4 = m_obb.extents;
var _local7:Number = ((_local6.col1.x * _local4.x) + (_local6.col2.x * _local4.y));
var _local8:Number = ((_local6.col1.y * _local4.x) + (_local6.col2.y * _local4.y));
_local3 = _arg2.R;
_local4 = m_obb.center;
var _local9:Number = (_arg2.position.x + ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y)));
var _local10:Number = (_arg2.position.y + ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y)));
_arg1.lowerBound.Set((_local9 - _local7), (_local10 - _local8));
_arg1.upperBound.Set((_local9 + _local7), (_local10 + _local8));
}
override public function UpdateSweepRadius(_arg1:b2Vec2):void{
var _local2:b2Vec2;
var _local4:Number;
var _local5:Number;
m_sweepRadius = 0;
var _local3:int;
while (_local3 < m_vertexCount) {
_local2 = m_coreVertices[_local3];
_local4 = (_local2.x - _arg1.x);
_local5 = (_local2.y - _arg1.y);
_local4 = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
if (_local4 > m_sweepRadius){
m_sweepRadius = _local4;
};
_local3++;
};
}
override public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
var _local3:b2Vec2;
var _local10:Number;
var _local4:b2Mat22 = _arg1.R;
var _local5:Number = (_arg2.x - _arg1.position.x);
var _local6:Number = (_arg2.y - _arg1.position.y);
var _local7:Number = ((_local5 * _local4.col1.x) + (_local6 * _local4.col1.y));
var _local8:Number = ((_local5 * _local4.col2.x) + (_local6 * _local4.col2.y));
var _local9:int;
while (_local9 < m_vertexCount) {
_local3 = m_vertices[_local9];
_local5 = (_local7 - _local3.x);
_local6 = (_local8 - _local3.y);
_local3 = m_normals[_local9];
_local10 = ((_local3.x * _local5) + (_local3.y * _local6));
if (_local10 > 0){
return (false);
};
_local9++;
};
return (true);
}
public static function ComputeCentroid(_arg1:Array, _arg2:int):b2Vec2{
var _local3:b2Vec2;
var _local7:Number;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
_local3 = new b2Vec2();
var _local4:Number = 0;
var _local5:Number = 0;
var _local6:Number = 0;
_local7 = (1 / 3);
var _local8:int;
while (_local8 < _arg2) {
_local9 = _arg1[_local8];
_local10 = (((_local8 + 1) < _arg2)) ? _arg1[int((_local8 + 1))] : _arg1[0];
_local11 = (_local9.x - _local5);
_local12 = (_local9.y - _local6);
_local13 = (_local10.x - _local5);
_local14 = (_local10.y - _local6);
_local15 = ((_local11 * _local14) - (_local12 * _local13));
_local16 = (0.5 * _local15);
_local4 = (_local4 + _local16);
_local3.x = (_local3.x + ((_local16 * _local7) * ((_local5 + _local9.x) + _local10.x)));
_local3.y = (_local3.y + ((_local16 * _local7) * ((_local6 + _local9.y) + _local10.y)));
_local8++;
};
_local3.x = (_local3.x * (1 / _local4));
_local3.y = (_local3.y * (1 / _local4));
return (_local3);
}
public static function ComputeOBB(_arg1:b2OBB, _arg2:Array, _arg3:int):void{
var _local4:int;
var _local7:b2Vec2;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:int;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:b2Mat22;
var _local5:Array = new Array((b2Settings.b2_maxPolygonVertices + 1));
_local4 = 0;
while (_local4 < _arg3) {
_local5[_local4] = _arg2[_local4];
_local4++;
};
_local5[_arg3] = _local5[0];
var _local6:Number = Number.MAX_VALUE;
_local4 = 1;
while (_local4 <= _arg3) {
_local7 = _local5[int((_local4 - 1))];
_local8 = (_local5[_local4].x - _local7.x);
_local9 = (_local5[_local4].y - _local7.y);
_local10 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
_local8 = (_local8 / _local10);
_local9 = (_local9 / _local10);
_local11 = -(_local9);
_local12 = _local8;
_local13 = Number.MAX_VALUE;
_local14 = Number.MAX_VALUE;
_local15 = -(Number.MAX_VALUE);
_local16 = -(Number.MAX_VALUE);
_local17 = 0;
while (_local17 < _arg3) {
_local19 = (_local5[_local17].x - _local7.x);
_local20 = (_local5[_local17].y - _local7.y);
_local21 = ((_local8 * _local19) + (_local9 * _local20));
_local22 = ((_local11 * _local19) + (_local12 * _local20));
if (_local21 < _local13){
_local13 = _local21;
};
if (_local22 < _local14){
_local14 = _local22;
};
if (_local21 > _local15){
_local15 = _local21;
};
if (_local22 > _local16){
_local16 = _local22;
};
_local17++;
};
_local18 = ((_local15 - _local13) * (_local16 - _local14));
if (_local18 < (0.95 * _local6)){
_local6 = _local18;
_arg1.R.col1.x = _local8;
_arg1.R.col1.y = _local9;
_arg1.R.col2.x = _local11;
_arg1.R.col2.y = _local12;
_local23 = (0.5 * (_local13 + _local15));
_local24 = (0.5 * (_local14 + _local16));
_local25 = _arg1.R;
_arg1.center.x = (_local7.x + ((_local25.col1.x * _local23) + (_local25.col2.x * _local24)));
_arg1.center.y = (_local7.y + ((_local25.col1.y * _local23) + (_local25.col2.y * _local24)));
_arg1.extents.x = (0.5 * (_local15 - _local13));
_arg1.extents.y = (0.5 * (_local16 - _local14));
};
_local4++;
};
}
}
}//package Box2D.Collision.Shapes
Section 9
//b2Shape (Box2D.Collision.Shapes.b2Shape)
package Box2D.Collision.Shapes {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
public class b2Shape {
public var m_next:b2Shape;
public var m_type:int;
public var m_sweepRadius:Number;
public var m_density:Number;
public var m_filter:b2FilterData;
public var m_friction:Number;
public var m_isSensor:Boolean;
public var m_restitution:Number;
public var m_userData;
public var m_proxyId:uint;
public var m_body:b2Body;
public static const e_polygonShape:int = 1;
public static const e_unknownShape:int = -1;
public static const e_circleShape:int = 0;
public static const e_shapeTypeCount:int = 2;
private static var s_resetAABB:b2AABB = new b2AABB();
private static var s_syncAABB:b2AABB = new b2AABB();
private static var s_proxyAABB:b2AABB = new b2AABB();
public function b2Shape(_arg1:b2ShapeDef){
m_userData = _arg1.userData;
m_friction = _arg1.friction;
m_restitution = _arg1.restitution;
m_density = _arg1.density;
m_body = null;
m_sweepRadius = 0;
m_next = null;
m_proxyId = b2Pair.b2_nullProxy;
m_filter = _arg1.filter.Copy();
m_isSensor = _arg1.isSensor;
}
public function ComputeSubmergedArea(_arg1:b2Vec2, _arg2:Number, _arg3:b2XForm, _arg4:b2Vec2):Number{
return (0);
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetSweepRadius():Number{
return (m_sweepRadius);
}
public function GetNext():b2Shape{
return (m_next);
}
public function ComputeSweptAABB(_arg1:b2AABB, _arg2:b2XForm, _arg3:b2XForm):void{
}
public function GetType():int{
return (m_type);
}
public function GetRestitution():Number{
return (m_restitution);
}
public function GetFriction():Number{
return (m_friction);
}
public function GetFilterData():b2FilterData{
return (m_filter.Copy());
}
public function TestSegment(_arg1:b2XForm, _arg2:Array, _arg3:b2Vec2, _arg4:b2Segment, _arg5:Number):Boolean{
return (false);
}
public function RefilterProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
if (m_proxyId == b2Pair.b2_nullProxy){
return;
};
_arg1.DestroyProxy(m_proxyId);
var _local3:b2AABB = s_resetAABB;
ComputeAABB(_local3, _arg2);
var _local4:Boolean = _arg1.InRange(_local3);
if (_local4){
m_proxyId = _arg1.CreateProxy(_local3, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function SetFilterData(_arg1:b2FilterData):void{
m_filter = _arg1.Copy();
}
public function GetUserData(){
return (m_userData);
}
public function Synchronize(_arg1:b2BroadPhase, _arg2:b2XForm, _arg3:b2XForm):Boolean{
if (m_proxyId == b2Pair.b2_nullProxy){
return (false);
};
var _local4:b2AABB = s_syncAABB;
ComputeSweptAABB(_local4, _arg2, _arg3);
if (_arg1.InRange(_local4)){
_arg1.MoveProxy(m_proxyId, _local4);
return (true);
};
return (false);
}
public function ComputeMass(_arg1:b2MassData):void{
}
public function IsSensor():Boolean{
return (m_isSensor);
}
public function DestroyProxy(_arg1:b2BroadPhase):void{
if (m_proxyId != b2Pair.b2_nullProxy){
_arg1.DestroyProxy(m_proxyId);
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function UpdateSweepRadius(_arg1:b2Vec2):void{
}
public function ComputeAABB(_arg1:b2AABB, _arg2:b2XForm):void{
}
public function GetBody():b2Body{
return (m_body);
}
public function CreateProxy(_arg1:b2BroadPhase, _arg2:b2XForm):void{
var _local3:b2AABB = s_proxyAABB;
ComputeAABB(_local3, _arg2);
var _local4:Boolean = _arg1.InRange(_local3);
if (_local4){
m_proxyId = _arg1.CreateProxy(_local3, this);
} else {
m_proxyId = b2Pair.b2_nullProxy;
};
}
public function TestPoint(_arg1:b2XForm, _arg2:b2Vec2):Boolean{
return (false);
}
public static function Destroy(_arg1:b2Shape, _arg2):void{
}
public static function Create(_arg1:b2ShapeDef, _arg2):b2Shape{
switch (_arg1.type){
case e_circleShape:
return (new b2CircleShape(_arg1));
case e_polygonShape:
return (new b2PolygonShape(_arg1));
default:
return (null);
};
}
}
}//package Box2D.Collision.Shapes
Section 10
//b2ShapeDef (Box2D.Collision.Shapes.b2ShapeDef)
package Box2D.Collision.Shapes {
public class b2ShapeDef {
public var friction:Number;// = 0.2
public var isSensor:Boolean;// = false
public var density:Number;// = 0
public var restitution:Number;// = 0
public var userData;// = null
public var filter:b2FilterData;
public var type:int;// = -1
public function b2ShapeDef(){
filter = new b2FilterData();
super();
}
}
}//package Box2D.Collision.Shapes
Section 11
//b2AABB (Box2D.Collision.b2AABB)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class b2AABB {
public var upperBound:b2Vec2;
public var lowerBound:b2Vec2;
public function b2AABB(){
lowerBound = new b2Vec2();
upperBound = new b2Vec2();
super();
}
public function IsValid():Boolean{
var _local1:Number = (upperBound.x - lowerBound.x);
var _local2:Number = (upperBound.y - lowerBound.y);
var _local3:Boolean = (((_local1 >= 0)) && ((_local2 >= 0)));
_local3 = ((((_local3) && (lowerBound.IsValid()))) && (upperBound.IsValid()));
return (_local3);
}
}
}//package Box2D.Collision
Section 12
//b2Bound (Box2D.Collision.b2Bound)
package Box2D.Collision {
public class b2Bound {
public var value:uint;
public var proxyId:uint;
public var stabbingCount:uint;
public function Swap(_arg1:b2Bound):void{
var _local2:uint = value;
var _local3:uint = proxyId;
var _local4:uint = stabbingCount;
value = _arg1.value;
proxyId = _arg1.proxyId;
stabbingCount = _arg1.stabbingCount;
_arg1.value = _local2;
_arg1.proxyId = _local3;
_arg1.stabbingCount = _local4;
}
public function IsLower():Boolean{
return (((value & 1) == 0));
}
public function IsUpper():Boolean{
return (((value & 1) == 1));
}
}
}//package Box2D.Collision
Section 13
//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 14
//b2BroadPhase (Box2D.Collision.b2BroadPhase)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2BroadPhase {
public var m_bounds:Array;
public var m_quantizationFactor:b2Vec2;
public var m_worldAABB:b2AABB;
public var m_freeProxy:uint;
public var m_proxyCount:int;
public var m_proxyPool:Array;
public var m_queryResultCount:int;
public var m_pairManager:b2PairManager;
public var m_timeStamp:uint;
public var m_queryResults:Array;
public static const b2_nullEdge:uint = b2Settings.USHRT_MAX;
public static const b2_invalid:uint = b2Settings.USHRT_MAX;
public static var s_validate:Boolean = false;
public function b2BroadPhase(_arg1:b2AABB, _arg2:b2PairCallback){
var _local3:int;
var _local5:Number;
var _local6:b2Proxy;
var _local7:int;
m_pairManager = new b2PairManager();
m_proxyPool = new Array(b2Settings.b2_maxPairs);
m_bounds = new Array((2 * b2Settings.b2_maxProxies));
m_queryResults = new Array(b2Settings.b2_maxProxies);
m_quantizationFactor = new b2Vec2();
super();
m_pairManager.Initialize(this, _arg2);
m_worldAABB = _arg1;
m_proxyCount = 0;
_local3 = 0;
while (_local3 < b2Settings.b2_maxProxies) {
m_queryResults[_local3] = 0;
_local3++;
};
m_bounds = new Array(2);
_local3 = 0;
while (_local3 < 2) {
m_bounds[_local3] = new Array((2 * b2Settings.b2_maxProxies));
_local7 = 0;
while (_local7 < (2 * b2Settings.b2_maxProxies)) {
m_bounds[_local3][_local7] = new b2Bound();
_local7++;
};
_local3++;
};
var _local4:Number = (_arg1.upperBound.x - _arg1.lowerBound.x);
_local5 = (_arg1.upperBound.y - _arg1.lowerBound.y);
m_quantizationFactor.x = (b2Settings.USHRT_MAX / _local4);
m_quantizationFactor.y = (b2Settings.USHRT_MAX / _local5);
_local3 = 0;
while (_local3 < (b2Settings.b2_maxProxies - 1)) {
_local6 = new b2Proxy();
m_proxyPool[_local3] = _local6;
_local6.SetNext((_local3 + 1));
_local6.timeStamp = 0;
_local6.overlapCount = b2_invalid;
_local6.userData = null;
_local3++;
};
_local6 = new b2Proxy();
m_proxyPool[int((b2Settings.b2_maxProxies - 1))] = _local6;
_local6.SetNext(b2Pair.b2_nullProxy);
_local6.timeStamp = 0;
_local6.overlapCount = b2_invalid;
_local6.userData = null;
m_freeProxy = 0;
m_timeStamp = 1;
m_queryResultCount = 0;
}
public function QueryAABB(_arg1:b2AABB, _arg2, _arg3:int):int{
var _local6:uint;
var _local7:uint;
var _local12:b2Proxy;
var _local4:Array = new Array();
var _local5:Array = new Array();
ComputeBounds(_local4, _local5, _arg1);
var _local8:Array = [_local6];
var _local9:Array = [_local7];
Query(_local8, _local9, _local4[0], _local5[0], m_bounds[0], (2 * m_proxyCount), 0);
Query(_local8, _local9, _local4[1], _local5[1], m_bounds[1], (2 * m_proxyCount), 1);
var _local10:int;
var _local11:int;
while ((((_local11 < m_queryResultCount)) && ((_local10 < _arg3)))) {
_local12 = m_proxyPool[m_queryResults[_local11]];
_arg2[_local11] = _local12.userData;
_local11++;
_local10++;
};
m_queryResultCount = 0;
IncrementTimeStamp();
return (_local10);
}
public function Commit():void{
m_pairManager.Commit();
}
public function GetProxy(_arg1:int):b2Proxy{
var _local2:b2Proxy = m_proxyPool[_arg1];
if ((((_arg1 == b2Pair.b2_nullProxy)) || ((_local2.IsValid() == false)))){
return (null);
};
return (_local2);
}
private function IncrementTimeStamp():void{
var _local1:uint;
if (m_timeStamp == b2Settings.USHRT_MAX){
_local1 = 0;
while (_local1 < b2Settings.b2_maxProxies) {
(m_proxyPool[_local1] as b2Proxy).timeStamp = 0;
_local1++;
};
m_timeStamp = 1;
} else {
m_timeStamp++;
};
}
private function Query(_arg1:Array, _arg2:Array, _arg3:uint, _arg4:uint, _arg5:Array, _arg6:uint, _arg7:int):void{
var _local10:b2Bound;
var _local12:int;
var _local13:int;
var _local14:b2Proxy;
var _local8:uint = BinarySearch(_arg5, _arg6, _arg3);
var _local9:uint = BinarySearch(_arg5, _arg6, _arg4);
var _local11:uint = _local8;
while (_local11 < _local9) {
_local10 = _arg5[_local11];
if (_local10.IsLower()){
IncrementOverlapCount(_local10.proxyId);
};
_local11++;
};
if (_local8 > 0){
_local12 = (_local8 - 1);
_local10 = _arg5[_local12];
_local13 = _local10.stabbingCount;
while (_local13) {
_local10 = _arg5[_local12];
if (_local10.IsLower()){
_local14 = m_proxyPool[_local10.proxyId];
if (_local8 <= _local14.upperBounds[_arg7]){
IncrementOverlapCount(_local10.proxyId);
_local13--;
};
};
_local12--;
};
};
_arg1[0] = _local8;
_arg2[0] = _local9;
}
private function TestOverlapValidate(_arg1:b2Proxy, _arg2:b2Proxy):Boolean{
var _local4:Array;
var _local5:b2Bound;
var _local6:b2Bound;
var _local3:int;
while (_local3 < 2) {
_local4 = m_bounds[_local3];
_local5 = _local4[_arg1.lowerBounds[_local3]];
_local6 = _local4[_arg2.upperBounds[_local3]];
if (_local5.value > _local6.value){
return (false);
};
_local5 = _local4[_arg1.upperBounds[_local3]];
_local6 = _local4[_arg2.lowerBounds[_local3]];
if (_local5.value < _local6.value){
return (false);
};
_local3++;
};
return (true);
}
private function ComputeBounds(_arg1:Array, _arg2:Array, _arg3:b2AABB):void{
var _local4:Number = _arg3.lowerBound.x;
var _local5:Number = _arg3.lowerBound.y;
_local4 = b2Math.b2Min(_local4, m_worldAABB.upperBound.x);
_local5 = b2Math.b2Min(_local5, m_worldAABB.upperBound.y);
_local4 = b2Math.b2Max(_local4, m_worldAABB.lowerBound.x);
_local5 = b2Math.b2Max(_local5, m_worldAABB.lowerBound.y);
var _local6:Number = _arg3.upperBound.x;
var _local7:Number = _arg3.upperBound.y;
_local6 = b2Math.b2Min(_local6, m_worldAABB.upperBound.x);
_local7 = b2Math.b2Min(_local7, m_worldAABB.upperBound.y);
_local6 = b2Math.b2Max(_local6, m_worldAABB.lowerBound.x);
_local7 = b2Math.b2Max(_local7, m_worldAABB.lowerBound.y);
_arg1[0] = (uint((m_quantizationFactor.x * (_local4 - m_worldAABB.lowerBound.x))) & (b2Settings.USHRT_MAX - 1));
_arg2[0] = ((uint((m_quantizationFactor.x * (_local6 - m_worldAABB.lowerBound.x))) & 0xFFFF) | 1);
_arg1[1] = (uint((m_quantizationFactor.y * (_local5 - m_worldAABB.lowerBound.y))) & (b2Settings.USHRT_MAX - 1));
_arg2[1] = ((uint((m_quantizationFactor.y * (_local7 - m_worldAABB.lowerBound.y))) & 0xFFFF) | 1);
}
public function CreateProxy(_arg1:b2AABB, _arg2):uint{
var _local3:uint;
var _local4:b2Proxy;
var _local11:Array;
var _local12:uint;
var _local13:uint;
var _local14:Array;
var _local15:Array;
var _local16:Array;
var _local17:int;
var _local18:int;
var _local19:b2Bound;
var _local20:b2Bound;
var _local21:b2Bound;
var _local22:int;
var _local23:b2Proxy;
var _local5:uint = m_freeProxy;
_local4 = m_proxyPool[_local5];
m_freeProxy = _local4.GetNext();
_local4.overlapCount = 0;
_local4.userData = _arg2;
var _local6:uint = (2 * m_proxyCount);
var _local7:Array = new Array();
var _local8:Array = new Array();
ComputeBounds(_local7, _local8, _arg1);
var _local9:int;
while (_local9 < 2) {
_local11 = m_bounds[_local9];
_local14 = [_local12];
_local15 = [_local13];
Query(_local14, _local15, _local7[_local9], _local8[_local9], _local11, _local6, _local9);
_local12 = _local14[0];
_local13 = _local15[0];
_local16 = new Array();
_local18 = (_local6 - _local13);
_local17 = 0;
while (_local17 < _local18) {
_local16[_local17] = new b2Bound();
_local19 = _local16[_local17];
_local20 = _local11[int((_local13 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local18 = _local16.length;
_local22 = (_local13 + 2);
_local17 = 0;
while (_local17 < _local18) {
_local20 = _local16[_local17];
_local19 = _local11[int((_local22 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local16 = new Array();
_local18 = (_local13 - _local12);
_local17 = 0;
while (_local17 < _local18) {
_local16[_local17] = new b2Bound();
_local19 = _local16[_local17];
_local20 = _local11[int((_local12 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local18 = _local16.length;
_local22 = (_local12 + 1);
_local17 = 0;
while (_local17 < _local18) {
_local20 = _local16[_local17];
_local19 = _local11[int((_local22 + _local17))];
_local19.value = _local20.value;
_local19.proxyId = _local20.proxyId;
_local19.stabbingCount = _local20.stabbingCount;
_local17++;
};
_local13++;
_local19 = _local11[_local12];
_local20 = _local11[_local13];
_local19.value = _local7[_local9];
_local19.proxyId = _local5;
_local20.value = _local8[_local9];
_local20.proxyId = _local5;
_local21 = _local11[int((_local12 - 1))];
_local19.stabbingCount = ((_local12 == 0)) ? 0 : _local21.stabbingCount;
_local21 = _local11[int((_local13 - 1))];
_local20.stabbingCount = _local21.stabbingCount;
_local3 = _local12;
while (_local3 < _local13) {
_local21 = _local11[_local3];
_local21.stabbingCount++;
_local3++;
};
_local3 = _local12;
while (_local3 < (_local6 + 2)) {
_local19 = _local11[_local3];
_local23 = m_proxyPool[_local19.proxyId];
if (_local19.IsLower()){
_local23.lowerBounds[_local9] = _local3;
} else {
_local23.upperBounds[_local9] = _local3;
};
_local3++;
};
_local9++;
};
m_proxyCount++;
var _local10:int;
while (_local10 < m_queryResultCount) {
m_pairManager.AddBufferedPair(_local5, m_queryResults[_local10]);
_local10++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
return (_local5);
}
public function DestroyProxy(_arg1:uint):void{
var _local2:b2Bound;
var _local3:b2Bound;
var _local8:Array;
var _local9:uint;
var _local10:uint;
var _local11:uint;
var _local12:uint;
var _local13:Array;
var _local14:int;
var _local15:int;
var _local16:int;
var _local17:uint;
var _local18:int;
var _local19:b2Proxy;
var _local4:b2Proxy = m_proxyPool[_arg1];
var _local5:int = (2 * m_proxyCount);
var _local6:int;
while (_local6 < 2) {
_local8 = m_bounds[_local6];
_local9 = _local4.lowerBounds[_local6];
_local10 = _local4.upperBounds[_local6];
_local2 = _local8[_local9];
_local11 = _local2.value;
_local3 = _local8[_local10];
_local12 = _local3.value;
_local13 = new Array();
_local15 = ((_local10 - _local9) - 1);
_local14 = 0;
while (_local14 < _local15) {
_local13[_local14] = new b2Bound();
_local2 = _local13[_local14];
_local3 = _local8[int(((_local9 + 1) + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = _local13.length;
_local16 = _local9;
_local14 = 0;
while (_local14 < _local15) {
_local3 = _local13[_local14];
_local2 = _local8[int((_local16 + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local13 = new Array();
_local15 = ((_local5 - _local10) - 1);
_local14 = 0;
while (_local14 < _local15) {
_local13[_local14] = new b2Bound();
_local2 = _local13[_local14];
_local3 = _local8[int(((_local10 + 1) + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = _local13.length;
_local16 = (_local10 - 1);
_local14 = 0;
while (_local14 < _local15) {
_local3 = _local13[_local14];
_local2 = _local8[int((_local16 + _local14))];
_local2.value = _local3.value;
_local2.proxyId = _local3.proxyId;
_local2.stabbingCount = _local3.stabbingCount;
_local14++;
};
_local15 = (_local5 - 2);
_local17 = _local9;
while (_local17 < _local15) {
_local2 = _local8[_local17];
_local19 = m_proxyPool[_local2.proxyId];
if (_local2.IsLower()){
_local19.lowerBounds[_local6] = _local17;
} else {
_local19.upperBounds[_local6] = _local17;
};
_local17++;
};
_local15 = (_local10 - 1);
_local18 = _local9;
while (_local18 < _local15) {
_local2 = _local8[_local18];
_local2.stabbingCount--;
_local18++;
};
Query([0], [0], _local11, _local12, _local8, (_local5 - 2), _local6);
_local6++;
};
var _local7:int;
while (_local7 < m_queryResultCount) {
m_pairManager.RemoveBufferedPair(_arg1, m_queryResults[_local7]);
_local7++;
};
m_pairManager.Commit();
m_queryResultCount = 0;
IncrementTimeStamp();
_local4.userData = null;
_local4.overlapCount = b2_invalid;
_local4.lowerBounds[0] = b2_invalid;
_local4.lowerBounds[1] = b2_invalid;
_local4.upperBounds[0] = b2_invalid;
_local4.upperBounds[1] = b2_invalid;
_local4.SetNext(m_freeProxy);
m_freeProxy = _arg1;
m_proxyCount--;
}
public function TestOverlap(_arg1:b2BoundValues, _arg2:b2Proxy):Boolean{
var _local4:Array;
var _local5:b2Bound;
var _local3:int;
while (_local3 < 2) {
_local4 = m_bounds[_local3];
_local5 = _local4[_arg2.upperBounds[_local3]];
if (_arg1.lowerValues[_local3] > _local5.value){
return (false);
};
_local5 = _local4[_arg2.lowerBounds[_local3]];
if (_arg1.upperValues[_local3] < _local5.value){
return (false);
};
_local3++;
};
return (true);
}
public function Validate():void{
var _local1:b2Pair;
var _local2:b2Proxy;
var _local3:b2Proxy;
var _local4:Boolean;
var _local6:b2Bound;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local10:b2Bound;
var _local5:int;
while (_local5 < 2) {
_local6 = m_bounds[_local5];
_local7 = (2 * m_proxyCount);
_local8 = 0;
_local9 = 0;
while (_local9 < _local7) {
_local10 = _local6[_local9];
if (_local10.IsLower() == true){
_local8++;
} else {
_local8--;
};
_local9++;
};
_local5++;
};
}
private function IncrementOverlapCount(_arg1:uint):void{
var _local2:b2Proxy = m_proxyPool[_arg1];
if (_local2.timeStamp < m_timeStamp){
_local2.timeStamp = m_timeStamp;
_local2.overlapCount = 1;
} else {
_local2.overlapCount = 2;
m_queryResults[m_queryResultCount] = _arg1;
m_queryResultCount++;
};
}
public function InRange(_arg1:b2AABB):Boolean{
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local2 = _arg1.lowerBound.x;
_local3 = _arg1.lowerBound.y;
_local2 = (_local2 - m_worldAABB.upperBound.x);
_local3 = (_local3 - m_worldAABB.upperBound.y);
_local4 = m_worldAABB.lowerBound.x;
_local5 = m_worldAABB.lowerBound.y;
_local4 = (_local4 - _arg1.upperBound.x);
_local5 = (_local5 - _arg1.upperBound.y);
_local2 = b2Math.b2Max(_local2, _local4);
_local3 = b2Math.b2Max(_local3, _local5);
return ((b2Math.b2Max(_local2, _local3) < 0));
}
public function MoveProxy(_arg1:uint, _arg2:b2AABB):void{
var _local3:Array;
var _local4:int;
var _local5:uint;
var _local6:uint;
var _local7:b2Bound;
var _local8:b2Bound;
var _local9:b2Bound;
var _local10:uint;
var _local11:b2Proxy;
var _local16:Array;
var _local17:uint;
var _local18:uint;
var _local19:uint;
var _local20:uint;
var _local21:int;
var _local22:int;
var _local23:uint;
var _local24:b2Proxy;
if ((((_arg1 == b2Pair.b2_nullProxy)) || ((b2Settings.b2_maxProxies <= _arg1)))){
return;
};
if (_arg2.IsValid() == false){
return;
};
var _local12:uint = (2 * m_proxyCount);
var _local13:b2Proxy = m_proxyPool[_arg1];
var _local14:b2BoundValues = new b2BoundValues();
ComputeBounds(_local14.lowerValues, _local14.upperValues, _arg2);
var _local15:b2BoundValues = new b2BoundValues();
_local5 = 0;
while (_local5 < 2) {
_local7 = m_bounds[_local5][_local13.lowerBounds[_local5]];
_local15.lowerValues[_local5] = _local7.value;
_local7 = m_bounds[_local5][_local13.upperBounds[_local5]];
_local15.upperValues[_local5] = _local7.value;
_local5++;
};
_local5 = 0;
while (_local5 < 2) {
_local16 = m_bounds[_local5];
_local17 = _local13.lowerBounds[_local5];
_local18 = _local13.upperBounds[_local5];
_local19 = _local14.lowerValues[_local5];
_local20 = _local14.upperValues[_local5];
_local7 = _local16[_local17];
_local21 = (_local19 - _local7.value);
_local7.value = _local19;
_local7 = _local16[_local18];
_local22 = (_local20 - _local7.value);
_local7.value = _local20;
if (_local21 < 0){
_local6 = _local17;
while ((((_local6 > 0)) && ((_local19 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
_local7 = _local16[_local6];
_local8 = _local16[int((_local6 - 1))];
_local23 = _local8.proxyId;
_local24 = m_proxyPool[_local8.proxyId];
_local8.stabbingCount++;
if (_local8.IsUpper() == true){
if (TestOverlap(_local14, _local24)){
m_pairManager.AddBufferedPair(_arg1, _local23);
};
_local3 = _local24.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount++;
} else {
_local3 = _local24.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount--;
};
_local3 = _local13.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.Swap(_local8);
_local6--;
};
};
if (_local22 > 0){
_local6 = _local18;
while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local20)))) {
_local7 = _local16[_local6];
_local9 = _local16[int((_local6 + 1))];
_local10 = _local9.proxyId;
_local11 = m_proxyPool[_local10];
_local9.stabbingCount++;
if (_local9.IsLower() == true){
if (TestOverlap(_local14, _local11)){
m_pairManager.AddBufferedPair(_arg1, _local10);
};
_local3 = _local11.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount++;
} else {
_local3 = _local11.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount--;
};
_local3 = _local13.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.Swap(_local9);
_local6++;
};
};
if (_local21 > 0){
_local6 = _local17;
while ((((_local6 < (_local12 - 1))) && (((_local16[int((_local6 + 1))] as b2Bound).value <= _local19)))) {
_local7 = _local16[_local6];
_local9 = _local16[int((_local6 + 1))];
_local10 = _local9.proxyId;
_local11 = m_proxyPool[_local10];
_local9.stabbingCount--;
if (_local9.IsUpper()){
if (TestOverlap(_local15, _local11)){
m_pairManager.RemoveBufferedPair(_arg1, _local10);
};
_local3 = _local11.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount--;
} else {
_local3 = _local11.lowerBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.stabbingCount++;
};
_local3 = _local13.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.Swap(_local9);
_local6++;
};
};
if (_local22 < 0){
_local6 = _local18;
while ((((_local6 > 0)) && ((_local20 < (_local16[int((_local6 - 1))] as b2Bound).value)))) {
_local7 = _local16[_local6];
_local8 = _local16[int((_local6 - 1))];
_local23 = _local8.proxyId;
_local24 = m_proxyPool[_local23];
_local8.stabbingCount--;
if (_local8.IsLower() == true){
if (TestOverlap(_local15, _local24)){
m_pairManager.RemoveBufferedPair(_arg1, _local23);
};
_local3 = _local24.lowerBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount--;
} else {
_local3 = _local24.upperBounds;
_local4 = _local3[_local5];
_local4++;
_local3[_local5] = _local4;
_local7.stabbingCount++;
};
_local3 = _local13.upperBounds;
_local4 = _local3[_local5];
_local4--;
_local3[_local5] = _local4;
_local7.Swap(_local8);
_local6--;
};
};
_local5++;
};
}
public static function BinarySearch(_arg1:Array, _arg2:int, _arg3:uint):uint{
var _local6:int;
var _local7:b2Bound;
var _local4:int;
var _local5:int = (_arg2 - 1);
while (_local4 <= _local5) {
_local6 = ((_local4 + _local5) / 2);
_local7 = _arg1[_local6];
if (_local7.value > _arg3){
_local5 = (_local6 - 1);
} else {
if (_local7.value < _arg3){
_local4 = (_local6 + 1);
} else {
return (uint(_local6));
};
};
};
return (uint(_local4));
}
}
}//package Box2D.Collision
Section 15
//b2BufferedPair (Box2D.Collision.b2BufferedPair)
package Box2D.Collision {
public class b2BufferedPair {
public var proxyId1:uint;
public var proxyId2:uint;
}
}//package Box2D.Collision
Section 16
//b2Collision (Box2D.Collision.b2Collision)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Collision {
public static const b2_nullFeature:uint = 0xFF;
private static var b2CollidePolyTempVec:b2Vec2 = new b2Vec2();
public static function EdgeSeparation(_arg1:b2PolygonShape, _arg2:b2XForm, _arg3:int, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
var _local11:b2Mat22;
var _local12:b2Vec2;
var _local25:Number;
var _local6:int = _arg1.m_vertexCount;
var _local7:Array = _arg1.m_vertices;
var _local8:Array = _arg1.m_normals;
var _local9:int = _arg4.m_vertexCount;
var _local10:Array = _arg4.m_vertices;
_local11 = _arg2.R;
_local12 = _local8[_arg3];
var _local13:Number = ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y));
var _local14:Number = ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y));
_local11 = _arg5.R;
var _local15:Number = ((_local11.col1.x * _local13) + (_local11.col1.y * _local14));
var _local16:Number = ((_local11.col2.x * _local13) + (_local11.col2.y * _local14));
var _local17:int;
var _local18:Number = Number.MAX_VALUE;
var _local19:int;
while (_local19 < _local9) {
_local12 = _local10[_local19];
_local25 = ((_local12.x * _local15) + (_local12.y * _local16));
if (_local25 < _local18){
_local18 = _local25;
_local17 = _local19;
};
_local19++;
};
_local12 = _local7[_arg3];
_local11 = _arg2.R;
var _local20:Number = (_arg2.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
var _local21:Number = (_arg2.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
_local12 = _local10[_local17];
_local11 = _arg5.R;
var _local22:Number = (_arg5.position.x + ((_local11.col1.x * _local12.x) + (_local11.col2.x * _local12.y)));
var _local23:Number = (_arg5.position.y + ((_local11.col1.y * _local12.x) + (_local11.col2.y * _local12.y)));
_local22 = (_local22 - _local20);
_local23 = (_local23 - _local21);
var _local24:Number = ((_local22 * _local13) + (_local23 * _local14));
return (_local24);
}
public static function b2TestOverlap(_arg1:b2AABB, _arg2:b2AABB):Boolean{
var _local3:b2Vec2 = _arg2.lowerBound;
var _local4:b2Vec2 = _arg1.upperBound;
var _local5:Number = (_local3.x - _local4.x);
var _local6:Number = (_local3.y - _local4.y);
_local3 = _arg1.lowerBound;
_local4 = _arg2.upperBound;
var _local7:Number = (_local3.x - _local4.x);
var _local8:Number = (_local3.y - _local4.y);
if ((((_local5 > 0)) || ((_local6 > 0)))){
return (false);
};
if ((((_local7 > 0)) || ((_local8 > 0)))){
return (false);
};
return (true);
}
public static function FindIncidentEdge(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:int, _arg5:b2PolygonShape, _arg6:b2XForm):void{
var _local12:b2Mat22;
var _local13:b2Vec2;
var _local20:ClipVertex;
var _local23:Number;
var _local7:int = _arg2.m_vertexCount;
var _local8:Array = _arg2.m_normals;
var _local9:int = _arg5.m_vertexCount;
var _local10:Array = _arg5.m_vertices;
var _local11:Array = _arg5.m_normals;
_local12 = _arg3.R;
_local13 = _local8[_arg4];
var _local14:Number = ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y));
var _local15:Number = ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y));
_local12 = _arg6.R;
var _local16:Number = ((_local12.col1.x * _local14) + (_local12.col1.y * _local15));
_local15 = ((_local12.col2.x * _local14) + (_local12.col2.y * _local15));
_local14 = _local16;
var _local17:int;
var _local18:Number = Number.MAX_VALUE;
var _local19:int;
while (_local19 < _local9) {
_local13 = _local11[_local19];
_local23 = ((_local14 * _local13.x) + (_local15 * _local13.y));
if (_local23 < _local18){
_local18 = _local23;
_local17 = _local19;
};
_local19++;
};
var _local21:int = _local17;
var _local22:int = (((_local21 + 1) < _local9)) ? (_local21 + 1) : 0;
_local20 = _arg1[0];
_local13 = _local10[_local21];
_local12 = _arg6.R;
_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
_local20.id.features.referenceEdge = _arg4;
_local20.id.features.incidentEdge = _local21;
_local20.id.features.incidentVertex = 0;
_local20 = _arg1[1];
_local13 = _local10[_local22];
_local12 = _arg6.R;
_local20.v.x = (_arg6.position.x + ((_local12.col1.x * _local13.x) + (_local12.col2.x * _local13.y)));
_local20.v.y = (_arg6.position.y + ((_local12.col1.y * _local13.x) + (_local12.col2.y * _local13.y)));
_local20.id.features.referenceEdge = _arg4;
_local20.id.features.incidentEdge = _local22;
_local20.id.features.incidentVertex = 1;
}
public static function b2CollidePolygons(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):void{
var _local6:ClipVertex;
var _local13:b2PolygonShape;
var _local14:b2PolygonShape;
var _local17:int;
var _local18:uint;
var _local34:int;
var _local37:b2Vec2;
var _local38:Number;
var _local39:b2ManifoldPoint;
_arg1.pointCount = 0;
var _local7:int;
var _local8:Array = [_local7];
var _local9:Number = FindMaxSeparation(_local8, _arg2, _arg3, _arg4, _arg5);
_local7 = _local8[0];
if (_local9 > 0){
return;
};
var _local10:int;
var _local11:Array = [_local10];
var _local12:Number = FindMaxSeparation(_local11, _arg4, _arg5, _arg2, _arg3);
_local10 = _local11[0];
if (_local12 > 0){
return;
};
var _local15:b2XForm = new b2XForm();
var _local16:b2XForm = new b2XForm();
var _local19:Number = 0.98;
var _local20:Number = 0.001;
if (_local12 > ((_local19 * _local9) + _local20)){
_local13 = _arg4;
_local14 = _arg2;
_local15.Set(_arg5);
_local16.Set(_arg3);
_local17 = _local10;
_local18 = 1;
} else {
_local13 = _arg2;
_local14 = _arg4;
_local15.Set(_arg3);
_local16.Set(_arg5);
_local17 = _local7;
_local18 = 0;
};
var _local21:Array = [new ClipVertex(), new ClipVertex()];
FindIncidentEdge(_local21, _local13, _local15, _local17, _local14, _local16);
var _local22:int = _local13.m_vertexCount;
var _local23:Array = _local13.m_vertices;
var _local24:b2Vec2 = _local23[_local17];
var _local25:b2Vec2 = _local24.Copy();
if ((_local17 + 1) < _local22){
_local24 = _local23[int((_local17 + 1))];
_local37 = _local24.Copy();
} else {
_local24 = _local23[0];
_local37 = _local24.Copy();
};
var _local26:b2Vec2 = b2Math.SubtractVV(_local37, _local25);
var _local27:b2Vec2 = b2Math.b2MulMV(_local15.R, b2Math.SubtractVV(_local37, _local25));
_local27.Normalize();
var _local28:b2Vec2 = b2Math.b2CrossVF(_local27, 1);
_local25 = b2Math.b2MulX(_local15, _local25);
_local37 = b2Math.b2MulX(_local15, _local37);
var _local29:Number = b2Math.b2Dot(_local28, _local25);
var _local30:Number = -(b2Math.b2Dot(_local27, _local25));
var _local31:Number = b2Math.b2Dot(_local27, _local37);
var _local32:Array = [new ClipVertex(), new ClipVertex()];
var _local33:Array = [new ClipVertex(), new ClipVertex()];
_local34 = ClipSegmentToLine(_local32, _local21, _local27.Negative(), _local30);
if (_local34 < 2){
return;
};
_local34 = ClipSegmentToLine(_local33, _local32, _local27, _local31);
if (_local34 < 2){
return;
};
_arg1.normal = (_local18) ? _local28.Negative() : _local28.Copy();
var _local35:int;
var _local36:int;
while (_local36 < b2Settings.b2_maxManifoldPoints) {
_local6 = _local33[_local36];
_local38 = (b2Math.b2Dot(_local28, _local6.v) - _local29);
if (_local38 <= 0){
_local39 = _arg1.points[_local35];
_local39.separation = _local38;
_local39.localPoint1 = b2Math.b2MulXT(_arg3, _local6.v);
_local39.localPoint2 = b2Math.b2MulXT(_arg5, _local6.v);
_local39.id.key = _local6.id._key;
_local39.id.features.flip = _local18;
_local35++;
};
_local36++;
};
_arg1.pointCount = _local35;
}
public static function FindMaxSeparation(_arg1:Array, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2PolygonShape, _arg5:b2XForm):Number{
var _local8:b2Vec2;
var _local9:b2Mat22;
var _local22:int;
var _local23:Number;
var _local24:int;
var _local25:Number;
var _local6:int = _arg2.m_vertexCount;
var _local7:Array = _arg2.m_normals;
_local9 = _arg5.R;
_local8 = _arg4.m_centroid;
var _local10:Number = (_arg5.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y)));
var _local11:Number = (_arg5.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y)));
_local9 = _arg3.R;
_local8 = _arg2.m_centroid;
_local10 = (_local10 - (_arg3.position.x + ((_local9.col1.x * _local8.x) + (_local9.col2.x * _local8.y))));
_local11 = (_local11 - (_arg3.position.y + ((_local9.col1.y * _local8.x) + (_local9.col2.y * _local8.y))));
var _local12:Number = ((_local10 * _arg3.R.col1.x) + (_local11 * _arg3.R.col1.y));
var _local13:Number = ((_local10 * _arg3.R.col2.x) + (_local11 * _arg3.R.col2.y));
var _local14:int;
var _local15:Number = -(Number.MAX_VALUE);
var _local16:int;
while (_local16 < _local6) {
_local8 = _local7[_local16];
_local25 = ((_local8.x * _local12) + (_local8.y * _local13));
if (_local25 > _local15){
_local15 = _local25;
_local14 = _local16;
};
_local16++;
};
var _local17:Number = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
if (_local17 > 0){
return (_local17);
};
var _local18:int = (((_local14 - 1) >= 0)) ? (_local14 - 1) : (_local6 - 1);
var _local19:Number = EdgeSeparation(_arg2, _arg3, _local18, _arg4, _arg5);
if (_local19 > 0){
return (_local19);
};
var _local20:int = (((_local14 + 1) < _local6)) ? (_local14 + 1) : 0;
var _local21:Number = EdgeSeparation(_arg2, _arg3, _local20, _arg4, _arg5);
if (_local21 > 0){
return (_local21);
};
if ((((_local19 > _local17)) && ((_local19 > _local21)))){
_local24 = -1;
_local22 = _local18;
_local23 = _local19;
} else {
if (_local21 > _local17){
_local24 = 1;
_local22 = _local20;
_local23 = _local21;
} else {
_arg1[0] = _local14;
return (_local17);
};
};
while (true) {
if (_local24 == -1){
_local14 = (((_local22 - 1) >= 0)) ? (_local22 - 1) : (_local6 - 1);
} else {
_local14 = (((_local22 + 1) < _local6)) ? (_local22 + 1) : 0;
};
_local17 = EdgeSeparation(_arg2, _arg3, _local14, _arg4, _arg5);
if (_local17 > 0){
return (_local17);
};
if (_local17 > _local23){
_local22 = _local14;
_local23 = _local17;
} else {
break;
};
};
_arg1[0] = _local22;
return (_local23);
}
public static function ClipSegmentToLine(_arg1:Array, _arg2:Array, _arg3:b2Vec2, _arg4:Number):int{
var _local5:ClipVertex;
var _local6:int;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:Number;
var _local11:Number;
var _local12:b2Vec2;
var _local13:ClipVertex;
_local6 = 0;
_local5 = _arg2[0];
_local7 = _local5.v;
_local5 = _arg2[1];
_local8 = _local5.v;
_local9 = (b2Math.b2Dot(_arg3, _local7) - _arg4);
var _local10:Number = (b2Math.b2Dot(_arg3, _local8) - _arg4);
if (_local9 <= 0){
var _temp1 = _local6;
_local6 = (_local6 + 1);
var _local14 = _temp1;
_arg1[_local14] = _arg2[0];
};
if (_local10 <= 0){
var _temp2 = _local6;
_local6 = (_local6 + 1);
_local14 = _temp2;
_arg1[_local14] = _arg2[1];
};
if ((_local9 * _local10) < 0){
_local11 = (_local9 / (_local9 - _local10));
_local5 = _arg1[_local6];
_local12 = _local5.v;
_local12.x = (_local7.x + (_local11 * (_local8.x - _local7.x)));
_local12.y = (_local7.y + (_local11 * (_local8.y - _local7.y)));
_local5 = _arg1[_local6];
if (_local9 > 0){
_local13 = _arg2[0];
_local5.id = _local13.id;
} else {
_local13 = _arg2[1];
_local5.id = _local13.id;
};
_local6++;
};
return (_local6);
}
public static function b2CollideCircles(_arg1:b2Manifold, _arg2:b2CircleShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:b2Mat22;
var _local7:b2Vec2;
var _local18:Number;
var _local24:Number;
var _local25:Number;
_arg1.pointCount = 0;
_local6 = _arg3.R;
_local7 = _arg2.m_localPosition;
var _local8:Number = (_arg3.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
var _local9:Number = (_arg3.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
_local6 = _arg5.R;
_local7 = _arg4.m_localPosition;
var _local10:Number = (_arg5.position.x + ((_local6.col1.x * _local7.x) + (_local6.col2.x * _local7.y)));
var _local11:Number = (_arg5.position.y + ((_local6.col1.y * _local7.x) + (_local6.col2.y * _local7.y)));
var _local12:Number = (_local10 - _local8);
var _local13:Number = (_local11 - _local9);
var _local14:Number = ((_local12 * _local12) + (_local13 * _local13));
var _local15:Number = _arg2.m_radius;
var _local16:Number = _arg4.m_radius;
var _local17:Number = (_local15 + _local16);
if (_local14 > (_local17 * _local17)){
return;
};
if (_local14 < Number.MIN_VALUE){
_local18 = -(_local17);
_arg1.normal.Set(0, 1);
} else {
_local24 = Math.sqrt(_local14);
_local18 = (_local24 - _local17);
_local25 = (1 / _local24);
_arg1.normal.x = (_local25 * _local12);
_arg1.normal.y = (_local25 * _local13);
};
_arg1.pointCount = 1;
var _local19:b2ManifoldPoint = _arg1.points[0];
_local19.id.key = 0;
_local19.separation = _local18;
_local8 = (_local8 + (_local15 * _arg1.normal.x));
_local9 = (_local9 + (_local15 * _arg1.normal.y));
_local10 = (_local10 - (_local16 * _arg1.normal.x));
_local11 = (_local11 - (_local16 * _arg1.normal.y));
var _local20:Number = (0.5 * (_local8 + _local10));
var _local21:Number = (0.5 * (_local9 + _local11));
var _local22:Number = (_local20 - _arg3.position.x);
var _local23:Number = (_local21 - _arg3.position.y);
_local19.localPoint1.x = ((_local22 * _arg3.R.col1.x) + (_local23 * _arg3.R.col1.y));
_local19.localPoint1.y = ((_local22 * _arg3.R.col2.x) + (_local23 * _arg3.R.col2.y));
_local22 = (_local20 - _arg5.position.x);
_local23 = (_local21 - _arg5.position.y);
_local19.localPoint2.x = ((_local22 * _arg5.R.col1.x) + (_local23 * _arg5.R.col1.y));
_local19.localPoint2.y = ((_local22 * _arg5.R.col2.x) + (_local23 * _arg5.R.col2.y));
}
public static function b2CollidePolygonAndCircle(_arg1:b2Manifold, _arg2:b2PolygonShape, _arg3:b2XForm, _arg4:b2CircleShape, _arg5:b2XForm):void{
var _local6:b2ManifoldPoint;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:b2Vec2;
var _local12:b2Mat22;
var _local17:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
_arg1.pointCount = 0;
_local12 = _arg5.R;
_local11 = _arg4.m_localPosition;
var _local13:Number = (_arg5.position.x + ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y)));
var _local14:Number = (_arg5.position.y + ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y)));
_local7 = (_local13 - _arg3.position.x);
_local8 = (_local14 - _arg3.position.y);
_local12 = _arg3.R;
var _local15:Number = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
var _local16:Number = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
var _local18:int;
var _local19:Number = -(Number.MAX_VALUE);
var _local20:Number = _arg4.m_radius;
var _local21:int = _arg2.m_vertexCount;
var _local22:Array = _arg2.m_vertices;
var _local23:Array = _arg2.m_normals;
var _local24:int;
while (_local24 < _local21) {
_local11 = _local22[_local24];
_local7 = (_local15 - _local11.x);
_local8 = (_local16 - _local11.y);
_local11 = _local23[_local24];
_local34 = ((_local11.x * _local7) + (_local11.y * _local8));
if (_local34 > _local20){
return;
};
if (_local34 > _local19){
_local19 = _local34;
_local18 = _local24;
};
_local24++;
};
if (_local19 < Number.MIN_VALUE){
_arg1.pointCount = 1;
_local11 = _local23[_local18];
_local12 = _arg3.R;
_arg1.normal.x = ((_local12.col1.x * _local11.x) + (_local12.col2.x * _local11.y));
_arg1.normal.y = ((_local12.col1.y * _local11.x) + (_local12.col2.y * _local11.y));
_local6 = _arg1.points[0];
_local6.id.features.incidentEdge = _local18;
_local6.id.features.incidentVertex = b2_nullFeature;
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
_local9 = (_local13 - (_local20 * _arg1.normal.x));
_local10 = (_local14 - (_local20 * _arg1.normal.y));
_local7 = (_local9 - _arg3.position.x);
_local8 = (_local10 - _arg3.position.y);
_local12 = _arg3.R;
_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local7 = (_local9 - _arg5.position.x);
_local8 = (_local10 - _arg5.position.y);
_local12 = _arg5.R;
_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local6.separation = (_local19 - _local20);
return;
};
var _local25:int = _local18;
var _local26:int = (((_local25 + 1) < _local21)) ? (_local25 + 1) : 0;
_local11 = _local22[_local25];
var _local27:b2Vec2 = _local22[_local26];
var _local28:Number = (_local27.x - _local11.x);
var _local29:Number = (_local27.y - _local11.y);
var _local30:Number = Math.sqrt(((_local28 * _local28) + (_local29 * _local29)));
_local28 = (_local28 / _local30);
_local29 = (_local29 / _local30);
_local7 = (_local15 - _local11.x);
_local8 = (_local16 - _local11.y);
var _local31:Number = ((_local7 * _local28) + (_local8 * _local29));
_local6 = _arg1.points[0];
if (_local31 <= 0){
_local32 = _local11.x;
_local33 = _local11.y;
_local6.id.features.incidentEdge = b2_nullFeature;
_local6.id.features.incidentVertex = _local25;
} else {
if (_local31 >= _local30){
_local32 = _local27.x;
_local33 = _local27.y;
_local6.id.features.incidentEdge = b2_nullFeature;
_local6.id.features.incidentVertex = _local26;
} else {
_local32 = ((_local28 * _local31) + _local11.x);
_local33 = ((_local29 * _local31) + _local11.y);
_local6.id.features.incidentEdge = _local18;
_local6.id.features.incidentVertex = b2_nullFeature;
};
};
_local7 = (_local15 - _local32);
_local8 = (_local16 - _local33);
_local17 = Math.sqrt(((_local7 * _local7) + (_local8 * _local8)));
_local7 = (_local7 / _local17);
_local8 = (_local8 / _local17);
if (_local17 > _local20){
return;
};
_arg1.pointCount = 1;
_local12 = _arg3.R;
_arg1.normal.x = ((_local12.col1.x * _local7) + (_local12.col2.x * _local8));
_arg1.normal.y = ((_local12.col1.y * _local7) + (_local12.col2.y * _local8));
_local9 = (_local13 - (_local20 * _arg1.normal.x));
_local10 = (_local14 - (_local20 * _arg1.normal.y));
_local7 = (_local9 - _arg3.position.x);
_local8 = (_local10 - _arg3.position.y);
_local12 = _arg3.R;
_local6.localPoint1.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint1.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local7 = (_local9 - _arg5.position.x);
_local8 = (_local10 - _arg5.position.y);
_local12 = _arg5.R;
_local6.localPoint2.x = ((_local7 * _local12.col1.x) + (_local8 * _local12.col1.y));
_local6.localPoint2.y = ((_local7 * _local12.col2.x) + (_local8 * _local12.col2.y));
_local6.separation = (_local17 - _local20);
_local6.id.features.referenceEdge = 0;
_local6.id.features.flip = 0;
}
}
}//package Box2D.Collision
Section 17
//b2ContactID (Box2D.Collision.b2ContactID)
package Box2D.Collision {
public class b2ContactID {
public var _key:uint;
public var features:Features;
public function b2ContactID(){
features = new Features();
super();
features._m_id = this;
}
public function Set(_arg1:b2ContactID):void{
key = _arg1._key;
}
public function Copy():b2ContactID{
var _local1:b2ContactID = new b2ContactID();
_local1.key = key;
return (_local1);
}
public function set key(_arg1:uint):void{
_key = _arg1;
features._referenceEdge = (_key & 0xFF);
features._incidentEdge = (((_key & 0xFF00) >> 8) & 0xFF);
features._incidentVertex = (((_key & 0xFF0000) >> 16) & 0xFF);
features._flip = (((_key & 4278190080) >> 24) & 0xFF);
}
public function get key():uint{
return (_key);
}
}
}//package Box2D.Collision
Section 18
//b2ContactPoint (Box2D.Collision.b2ContactPoint)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2ContactPoint {
public var friction:Number;
public var separation:Number;
public var normal:b2Vec2;
public var position:b2Vec2;
public var restitution:Number;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var id:b2ContactID;
public var velocity:b2Vec2;
public function b2ContactPoint(){
position = new b2Vec2();
velocity = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 19
//b2Distance (Box2D.Collision.b2Distance)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Distance {
private static var s_p2s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var s_p1s:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var s_points:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2()];
private static var gPoint:b2Point = new b2Point();
public static var g_GJK_Iterations:int = 0;
public static function InPoints(_arg1:b2Vec2, _arg2:Array, _arg3:int):Boolean{
var _local6:b2Vec2;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local4:Number = (100 * Number.MIN_VALUE);
var _local5:int;
while (_local5 < _arg3) {
_local6 = _arg2[_local5];
_local7 = Math.abs((_arg1.x - _local6.x));
_local8 = Math.abs((_arg1.y - _local6.y));
_local9 = Math.max(Math.abs(_arg1.x), Math.abs(_local6.x));
_local10 = Math.max(Math.abs(_arg1.y), Math.abs(_local6.y));
if ((((_local7 < (_local4 * (_local9 + 1)))) && ((_local8 < (_local4 * (_local10 + 1)))))){
return (true);
};
_local5++;
};
return (false);
}
public static function DistanceGeneric(_arg1:b2Vec2, _arg2:b2Vec2, _arg3, _arg4:b2XForm, _arg5, _arg6:b2XForm):Number{
var _local7:b2Vec2;
var _local15:Number;
var _local16:Number;
var _local17:b2Vec2;
var _local18:b2Vec2;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:int;
var _local8:Array = s_p1s;
var _local9:Array = s_p2s;
var _local10:Array = s_points;
var _local11:int;
_arg1.SetV(_arg3.GetFirstVertex(_arg4));
_arg2.SetV(_arg5.GetFirstVertex(_arg6));
var _local12:Number = 0;
var _local13 = 20;
var _local14:int;
while (_local14 < _local13) {
_local15 = (_arg2.x - _arg1.x);
_local16 = (_arg2.y - _arg1.y);
_local17 = _arg3.Support(_arg4, _local15, _local16);
_local18 = _arg5.Support(_arg6, -(_local15), -(_local16));
_local12 = ((_local15 * _local15) + (_local16 * _local16));
_local19 = (_local18.x - _local17.x);
_local20 = (_local18.y - _local17.y);
_local21 = ((_local15 * _local19) + (_local16 * _local20));
if ((_local12 - _local21) <= (0.01 * _local12)){
if (_local11 == 0){
_arg1.SetV(_local17);
_arg2.SetV(_local18);
};
g_GJK_Iterations = _local14;
return (Math.sqrt(_local12));
};
switch (_local11){
case 0:
_local7 = _local8[0];
_local7.SetV(_local17);
_local7 = _local9[0];
_local7.SetV(_local18);
_local7 = _local10[0];
_local7.x = _local19;
_local7.y = _local20;
_arg1.SetV(_local8[0]);
_arg2.SetV(_local9[0]);
_local11++;
break;
case 1:
_local7 = _local8[1];
_local7.SetV(_local17);
_local7 = _local9[1];
_local7.SetV(_local18);
_local7 = _local10[1];
_local7.x = _local19;
_local7.y = _local20;
_local11 = ProcessTwo(_arg1, _arg2, _local8, _local9, _local10);
break;
case 2:
_local7 = _local8[2];
_local7.SetV(_local17);
_local7 = _local9[2];
_local7.SetV(_local18);
_local7 = _local10[2];
_local7.x = _local19;
_local7.y = _local20;
_local11 = ProcessThree(_arg1, _arg2, _local8, _local9, _local10);
break;
};
if (_local11 == 3){
g_GJK_Iterations = _local14;
return (0);
};
_local22 = -(Number.MAX_VALUE);
_local23 = 0;
while (_local23 < _local11) {
_local7 = _local10[_local23];
_local22 = b2Math.b2Max(_local22, ((_local7.x * _local7.x) + (_local7.y * _local7.y)));
_local23++;
};
if ((((_local11 == 3)) || ((_local12 <= ((100 * Number.MIN_VALUE) * _local22))))){
g_GJK_Iterations = _local14;
_local15 = (_arg2.x - _arg1.x);
_local16 = (_arg2.y - _arg1.y);
_local12 = ((_local15 * _local15) + (_local16 * _local16));
return (Math.sqrt(_local12));
};
_local14++;
};
g_GJK_Iterations = _local13;
return (Math.sqrt(_local12));
}
public static function DistanceCC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2CircleShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local19:Number;
var _local20:Number;
_local7 = _arg4.R;
_local8 = _arg3.m_localPosition;
var _local9:Number = (_arg4.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
var _local10:Number = (_arg4.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
_local7 = _arg6.R;
_local8 = _arg5.m_localPosition;
var _local11:Number = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
var _local12:Number = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local13:Number = (_local11 - _local9);
var _local14:Number = (_local12 - _local10);
var _local15:Number = ((_local13 * _local13) + (_local14 * _local14));
var _local16:Number = (_arg3.m_radius - b2Settings.b2_toiSlop);
var _local17:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
var _local18:Number = (_local16 + _local17);
if (_local15 > (_local18 * _local18)){
_local19 = Math.sqrt(_local15);
_local13 = (_local13 / _local19);
_local14 = (_local14 / _local19);
_local20 = (_local19 - _local18);
_arg1.x = (_local9 + (_local16 * _local13));
_arg1.y = (_local10 + (_local16 * _local14));
_arg2.x = (_local11 - (_local17 * _local13));
_arg2.y = (_local12 - (_local17 * _local14));
return (_local20);
};
if (_local15 > (Number.MIN_VALUE * Number.MIN_VALUE)){
_local19 = Math.sqrt(_local15);
_local13 = (_local13 / _local19);
_local14 = (_local14 / _local19);
_arg1.x = (_local9 + (_local16 * _local13));
_arg1.y = (_local10 + (_local16 * _local14));
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
return (0);
};
_arg1.x = _local9;
_arg1.y = _local10;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
return (0);
}
public static function ProcessThree(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
var _local6:b2Vec2;
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:b2Vec2;
var _local13:b2Vec2;
var _local35:Number;
_local6 = _arg5[0];
_local7 = _arg5[1];
_local8 = _arg5[2];
_local9 = _arg3[0];
_local10 = _arg3[1];
_local11 = _arg3[2];
_local12 = _arg4[0];
_local13 = _arg4[1];
var _local14:b2Vec2 = _arg4[2];
var _local15:Number = _local6.x;
var _local16:Number = _local6.y;
var _local17:Number = _local7.x;
var _local18:Number = _local7.y;
var _local19:Number = _local8.x;
var _local20:Number = _local8.y;
var _local21:Number = (_local17 - _local15);
var _local22:Number = (_local18 - _local16);
var _local23:Number = (_local19 - _local15);
var _local24:Number = (_local20 - _local16);
var _local25:Number = (_local19 - _local17);
var _local26:Number = (_local20 - _local18);
var _local27:Number = -(((_local15 * _local21) + (_local16 * _local22)));
var _local28:Number = ((_local17 * _local21) + (_local18 * _local22));
var _local29:Number = -(((_local15 * _local23) + (_local16 * _local24)));
var _local30:Number = ((_local19 * _local23) + (_local20 * _local24));
var _local31:Number = -(((_local17 * _local25) + (_local18 * _local26)));
var _local32:Number = ((_local19 * _local25) + (_local20 * _local26));
if ((((_local30 <= 0)) && ((_local32 <= 0)))){
_arg1.SetV(_local11);
_arg2.SetV(_local14);
_local9.SetV(_local11);
_local12.SetV(_local14);
_local6.SetV(_local8);
return (1);
};
var _local33:Number = ((_local21 * _local24) - (_local22 * _local23));
var _local34:Number = (_local33 * ((_local15 * _local18) - (_local16 * _local17)));
var _local36:Number = (_local33 * ((_local17 * _local20) - (_local18 * _local19)));
if ((((((((_local36 <= 0)) && ((_local31 >= 0)))) && ((_local32 >= 0)))) && (((_local31 + _local32) > 0)))){
_local35 = (_local31 / (_local31 + _local32));
_arg1.x = (_local10.x + (_local35 * (_local11.x - _local10.x)));
_arg1.y = (_local10.y + (_local35 * (_local11.y - _local10.y)));
_arg2.x = (_local13.x + (_local35 * (_local14.x - _local13.x)));
_arg2.y = (_local13.y + (_local35 * (_local14.y - _local13.y)));
_local9.SetV(_local11);
_local12.SetV(_local14);
_local6.SetV(_local8);
return (2);
};
var _local37:Number = (_local33 * ((_local19 * _local16) - (_local20 * _local15)));
if ((((((((_local37 <= 0)) && ((_local29 >= 0)))) && ((_local30 >= 0)))) && (((_local29 + _local30) > 0)))){
_local35 = (_local29 / (_local29 + _local30));
_arg1.x = (_local9.x + (_local35 * (_local11.x - _local9.x)));
_arg1.y = (_local9.y + (_local35 * (_local11.y - _local9.y)));
_arg2.x = (_local12.x + (_local35 * (_local14.x - _local12.x)));
_arg2.y = (_local12.y + (_local35 * (_local14.y - _local12.y)));
_local10.SetV(_local11);
_local13.SetV(_local14);
_local7.SetV(_local8);
return (2);
};
var _local38:Number = ((_local36 + _local37) + _local34);
_local38 = (1 / _local38);
var _local39:Number = (_local36 * _local38);
var _local40:Number = (_local37 * _local38);
var _local41:Number = ((1 - _local39) - _local40);
_arg1.x = (((_local39 * _local9.x) + (_local40 * _local10.x)) + (_local41 * _local11.x));
_arg1.y = (((_local39 * _local9.y) + (_local40 * _local10.y)) + (_local41 * _local11.y));
_arg2.x = (((_local39 * _local12.x) + (_local40 * _local13.x)) + (_local41 * _local14.x));
_arg2.y = (((_local39 * _local12.y) + (_local40 * _local13.y)) + (_local41 * _local14.y));
return (3);
}
public static function DistancePC(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2PolygonShape, _arg4:b2XForm, _arg5:b2CircleShape, _arg6:b2XForm):Number{
var _local7:b2Mat22;
var _local8:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local9:b2Point = gPoint;
_local8 = _arg5.m_localPosition;
_local7 = _arg6.R;
_local9.p.x = (_arg6.position.x + ((_local7.col1.x * _local8.x) + (_local7.col2.x * _local8.y)));
_local9.p.y = (_arg6.position.y + ((_local7.col1.y * _local8.x) + (_local7.col2.y * _local8.y)));
var _local10:Number = DistanceGeneric(_arg1, _arg2, _arg3, _arg4, _local9, b2Math.b2XForm_identity);
var _local11:Number = (_arg5.m_radius - b2Settings.b2_toiSlop);
if (_local10 > _local11){
_local10 = (_local10 - _local11);
_local12 = (_arg2.x - _arg1.x);
_local13 = (_arg2.y - _arg1.y);
_local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13)));
_local12 = (_local12 / _local14);
_local13 = (_local13 / _local14);
_arg2.x = (_arg2.x - (_local11 * _local12));
_arg2.y = (_arg2.y - (_local11 * _local13));
} else {
_local10 = 0;
_arg2.x = _arg1.x;
_arg2.y = _arg1.y;
};
return (_local10);
}
public static function Distance(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Shape, _arg4:b2XForm, _arg5:b2Shape, _arg6:b2XForm):Number{
var _local7:int = _arg3.m_type;
var _local8:int = _arg5.m_type;
if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_circleShape)))){
return (DistanceCC(_arg1, _arg2, (_arg3 as b2CircleShape), _arg4, (_arg5 as b2CircleShape), _arg6));
};
if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_circleShape)))){
return (DistancePC(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2CircleShape), _arg6));
};
if ((((_local7 == b2Shape.e_circleShape)) && ((_local8 == b2Shape.e_polygonShape)))){
return (DistancePC(_arg2, _arg1, (_arg5 as b2PolygonShape), _arg6, (_arg3 as b2CircleShape), _arg4));
};
if ((((_local7 == b2Shape.e_polygonShape)) && ((_local8 == b2Shape.e_polygonShape)))){
return (DistanceGeneric(_arg1, _arg2, (_arg3 as b2PolygonShape), _arg4, (_arg5 as b2PolygonShape), _arg6));
};
return (0);
}
public static function ProcessTwo(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:Array, _arg4:Array, _arg5:Array):int{
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local17:Number;
var _local6:b2Vec2 = _arg5[0];
var _local7:b2Vec2 = _arg5[1];
var _local8:b2Vec2 = _arg3[0];
_local9 = _arg3[1];
_local10 = _arg4[0];
_local11 = _arg4[1];
var _local12:Number = -(_local7.x);
var _local13:Number = -(_local7.y);
var _local14:Number = (_local6.x - _local7.x);
var _local15:Number = (_local6.y - _local7.y);
var _local16:Number = Math.sqrt(((_local14 * _local14) + (_local15 * _local15)));
_local14 = (_local14 / _local16);
_local15 = (_local15 / _local16);
_local17 = ((_local12 * _local14) + (_local13 * _local15));
if ((((_local17 <= 0)) || ((_local16 < Number.MIN_VALUE)))){
_arg1.SetV(_local9);
_arg2.SetV(_local11);
_local8.SetV(_local9);
_local10.SetV(_local11);
_local6.SetV(_local7);
return (1);
};
_local17 = (_local17 / _local16);
_arg1.x = (_local9.x + (_local17 * (_local8.x - _local9.x)));
_arg1.y = (_local9.y + (_local17 * (_local8.y - _local9.y)));
_arg2.x = (_local11.x + (_local17 * (_local10.x - _local11.x)));
_arg2.y = (_local11.y + (_local17 * (_local10.y - _local11.y)));
return (2);
}
}
}//package Box2D.Collision
Section 20
//b2Manifold (Box2D.Collision.b2Manifold)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Manifold {
public var pointCount:int;// = 0
public var normal:b2Vec2;
public var points:Array;
public function b2Manifold(){
points = new Array(b2Settings.b2_maxManifoldPoints);
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
points[_local1] = new b2ManifoldPoint();
_local1++;
};
normal = new b2Vec2();
}
public function Set(_arg1:b2Manifold):void{
pointCount = _arg1.pointCount;
var _local2:int;
while (_local2 < b2Settings.b2_maxManifoldPoints) {
(points[_local2] as b2ManifoldPoint).Set(_arg1.points[_local2]);
_local2++;
};
normal.SetV(_arg1.normal);
}
public function Reset():void{
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
(points[_local1] as b2ManifoldPoint).Reset();
_local1++;
};
normal.SetZero();
pointCount = 0;
}
}
}//package Box2D.Collision
Section 21
//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 22
//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 23
//b2Pair (Box2D.Collision.b2Pair)
package Box2D.Collision {
import Box2D.Common.*;
public class b2Pair {
public var proxyId1:uint;
public var userData;// = null
public var proxyId2:uint;
public var status:uint;
public var next:uint;
public static var e_pairFinal:uint = 4;
public static var b2_tableMask:int = (b2_tableCapacity - 1);
public static var e_pairRemoved:uint = 2;
public static var b2_nullPair:uint = b2Settings.USHRT_MAX;
public static var e_pairBuffered:uint = 1;
public static var b2_nullProxy:uint = b2Settings.USHRT_MAX;
public static var b2_tableCapacity:int = b2Settings.b2_maxPairs;
public function SetBuffered():void{
status = (status | e_pairBuffered);
}
public function IsBuffered():Boolean{
return (((status & e_pairBuffered) == e_pairBuffered));
}
public function IsFinal():Boolean{
return (((status & e_pairFinal) == e_pairFinal));
}
public function ClearRemoved():void{
status = (status & ~(e_pairRemoved));
}
public function SetFinal():void{
status = (status | e_pairFinal);
}
public function IsRemoved():Boolean{
return (((status & e_pairRemoved) == e_pairRemoved));
}
public function ClearBuffered():void{
status = (status & ~(e_pairBuffered));
}
public function SetRemoved():void{
status = (status | e_pairRemoved);
}
}
}//package Box2D.Collision
Section 24
//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 25
//b2PairManager (Box2D.Collision.b2PairManager)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2PairManager {
public var m_pairCount:int;
public var m_pairBuffer:Array;
public var m_hashTable:Array;
public var m_callback:b2PairCallback;
public var m_pairs:Array;
public var m_pairBufferCount:int;
public var m_broadPhase:b2BroadPhase;
public var m_freePair:uint;
public function b2PairManager(){
var _local1:uint;
super();
m_hashTable = new Array(b2Pair.b2_tableCapacity);
_local1 = 0;
while (_local1 < b2Pair.b2_tableCapacity) {
m_hashTable[_local1] = b2Pair.b2_nullPair;
_local1++;
};
m_pairs = new Array(b2Settings.b2_maxPairs);
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairs[_local1] = new b2Pair();
_local1++;
};
m_pairBuffer = new Array(b2Settings.b2_maxPairs);
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairBuffer[_local1] = new b2BufferedPair();
_local1++;
};
_local1 = 0;
while (_local1 < b2Settings.b2_maxPairs) {
m_pairs[_local1].proxyId1 = b2Pair.b2_nullProxy;
m_pairs[_local1].proxyId2 = b2Pair.b2_nullProxy;
m_pairs[_local1].userData = null;
m_pairs[_local1].status = 0;
m_pairs[_local1].next = (_local1 + 1);
_local1++;
};
m_pairs[int((b2Settings.b2_maxPairs - 1))].next = b2Pair.b2_nullPair;
m_pairCount = 0;
m_pairBufferCount = 0;
}
private function FindHash(_arg1:uint, _arg2:uint, _arg3:uint):b2Pair{
var _local4:b2Pair;
var _local5:uint = m_hashTable[_arg3];
_local4 = m_pairs[_local5];
while (((!((_local5 == b2Pair.b2_nullPair))) && ((Equals(_local4, _arg1, _arg2) == false)))) {
_local5 = _local4.next;
_local4 = m_pairs[_local5];
};
if (_local5 == b2Pair.b2_nullPair){
return (null);
};
return (_local4);
}
private function Find(_arg1:uint, _arg2:uint):b2Pair{
var _local4:uint;
if (_arg1 > _arg2){
_local4 = _arg1;
_arg1 = _arg2;
_arg2 = _local4;
};
var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
return (FindHash(_arg1, _arg2, _local3));
}
private function ValidateBuffer():void{
}
public function Commit():void{
var _local1:b2BufferedPair;
var _local2:int;
var _local5:b2Pair;
var _local6:b2Proxy;
var _local7:b2Proxy;
var _local3:int;
var _local4:Array = m_broadPhase.m_proxyPool;
_local2 = 0;
while (_local2 < m_pairBufferCount) {
_local1 = m_pairBuffer[_local2];
_local5 = Find(_local1.proxyId1, _local1.proxyId2);
_local5.ClearBuffered();
_local6 = _local4[_local5.proxyId1];
_local7 = _local4[_local5.proxyId2];
if (_local5.IsRemoved()){
if (_local5.IsFinal() == true){
m_callback.PairRemoved(_local6.userData, _local7.userData, _local5.userData);
};
_local1 = m_pairBuffer[_local3];
_local1.proxyId1 = _local5.proxyId1;
_local1.proxyId2 = _local5.proxyId2;
_local3++;
} else {
if (_local5.IsFinal() == false){
_local5.userData = m_callback.PairAdded(_local6.userData, _local7.userData);
_local5.SetFinal();
};
};
_local2++;
};
_local2 = 0;
while (_local2 < _local3) {
_local1 = m_pairBuffer[_local2];
RemovePair(_local1.proxyId1, _local1.proxyId2);
_local2++;
};
m_pairBufferCount = 0;
if (b2BroadPhase.s_validate){
ValidateTable();
};
}
public function RemoveBufferedPair(_arg1:int, _arg2:int):void{
var _local3:b2BufferedPair;
var _local4:b2Pair = Find(_arg1, _arg2);
if (_local4 == null){
return;
};
if (_local4.IsBuffered() == false){
_local4.SetBuffered();
_local3 = m_pairBuffer[m_pairBufferCount];
_local3.proxyId1 = _local4.proxyId1;
_local3.proxyId2 = _local4.proxyId2;
m_pairBufferCount++;
};
_local4.SetRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function RemovePair(_arg1:uint, _arg2:uint){
var _local3:b2Pair;
var _local7:uint;
var _local8:uint;
var _local9:*;
if (_arg1 > _arg2){
_local7 = _arg1;
_arg1 = _arg2;
_arg2 = _local7;
};
var _local4:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
var _local5:uint = m_hashTable[_local4];
var _local6:b2Pair;
while (_local5 != b2Pair.b2_nullPair) {
if (Equals(m_pairs[_local5], _arg1, _arg2)){
_local8 = _local5;
_local3 = m_pairs[_local5];
if (_local6){
_local6.next = _local3.next;
} else {
m_hashTable[_local4] = _local3.next;
};
_local3 = m_pairs[_local8];
_local9 = _local3.userData;
_local3.next = m_freePair;
_local3.proxyId1 = b2Pair.b2_nullProxy;
_local3.proxyId2 = b2Pair.b2_nullProxy;
_local3.userData = null;
_local3.status = 0;
m_freePair = _local8;
m_pairCount--;
return (_local9);
} else {
_local6 = m_pairs[_local5];
_local5 = _local6.next;
};
};
return (null);
}
public function Initialize(_arg1:b2BroadPhase, _arg2:b2PairCallback):void{
m_broadPhase = _arg1;
m_callback = _arg2;
}
public function AddBufferedPair(_arg1:int, _arg2:int):void{
var _local3:b2BufferedPair;
var _local4:b2Pair = AddPair(_arg1, _arg2);
if (_local4.IsBuffered() == false){
_local4.SetBuffered();
_local3 = m_pairBuffer[m_pairBufferCount];
_local3.proxyId1 = _local4.proxyId1;
_local3.proxyId2 = _local4.proxyId2;
m_pairBufferCount++;
};
_local4.ClearRemoved();
if (b2BroadPhase.s_validate){
ValidateBuffer();
};
}
private function AddPair(_arg1:uint, _arg2:uint):b2Pair{
var _local6:uint;
if (_arg1 > _arg2){
_local6 = _arg1;
_arg1 = _arg2;
_arg2 = _local6;
};
var _local3:uint = (Hash(_arg1, _arg2) & b2Pair.b2_tableMask);
var _local4 = FindHash(_arg1, _arg2, _local3);
if (_local4 != null){
return (_local4);
};
var _local5:uint = m_freePair;
_local4 = m_pairs[_local5];
m_freePair = _local4.next;
_local4.proxyId1 = _arg1;
_local4.proxyId2 = _arg2;
_local4.status = 0;
_local4.userData = null;
_local4.next = m_hashTable[_local3];
m_hashTable[_local3] = _local5;
m_pairCount++;
return (_local4);
}
private function ValidateTable():void{
}
public static function EqualsPair(_arg1:b2BufferedPair, _arg2:b2BufferedPair):Boolean{
return ((((_arg1.proxyId1 == _arg2.proxyId1)) && ((_arg1.proxyId2 == _arg2.proxyId2))));
}
public static function Hash(_arg1:uint, _arg2:uint):uint{
var _local3:uint = (((_arg2 << 16) & 4294901760) | _arg1);
_local3 = (~(_local3) + ((_local3 << 15) & 4294934528));
_local3 = (_local3 ^ ((_local3 >> 12) & 1048575));
_local3 = (_local3 + ((_local3 << 2) & 4294967292));
_local3 = (_local3 ^ ((_local3 >> 4) & 268435455));
_local3 = (_local3 * 2057);
_local3 = (_local3 ^ ((_local3 >> 16) & 0xFFFF));
return (_local3);
}
public static function Equals(_arg1:b2Pair, _arg2:uint, _arg3:uint):Boolean{
return ((((_arg1.proxyId1 == _arg2)) && ((_arg1.proxyId2 == _arg3))));
}
}
}//package Box2D.Collision
Section 26
//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 27
//b2Proxy (Box2D.Collision.b2Proxy)
package Box2D.Collision {
public class b2Proxy {
public var overlapCount:uint;
public var userData;// = null
public var lowerBounds:Array;
public var upperBounds:Array;
public var timeStamp:uint;
public function b2Proxy(){
lowerBounds = [uint(0), uint(0)];
upperBounds = [uint(0), uint(0)];
super();
}
public function GetNext():uint{
return (lowerBounds[0]);
}
public function IsValid():Boolean{
return (!((overlapCount == b2BroadPhase.b2_invalid)));
}
public function SetNext(_arg1:uint):void{
lowerBounds[0] = (_arg1 & 0xFFFF);
}
}
}//package Box2D.Collision
Section 28
//b2Segment (Box2D.Collision.b2Segment)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Common.*;
public class b2Segment {
public var p1:b2Vec2;
public var p2:b2Vec2;
public function b2Segment(){
p1 = new b2Vec2();
p2 = new b2Vec2();
super();
}
public function TestSegment(_arg1:Array, _arg2:b2Vec2, _arg3:b2Segment, _arg4:Number):Boolean{
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local5:b2Vec2 = _arg3.p1;
var _local6:Number = (_arg3.p2.x - _local5.x);
var _local7:Number = (_arg3.p2.y - _local5.y);
var _local8:Number = (p2.x - p1.x);
var _local9:Number = (p2.y - p1.y);
var _local10:Number = _local9;
var _local11:Number = -(_local8);
var _local12:Number = (100 * Number.MIN_VALUE);
var _local13:Number = -(((_local6 * _local10) + (_local7 * _local11)));
if (_local13 > _local12){
_local14 = (_local5.x - p1.x);
_local15 = (_local5.y - p1.y);
_local16 = ((_local14 * _local10) + (_local15 * _local11));
if ((((0 <= _local16)) && ((_local16 <= (_arg4 * _local13))))){
_local17 = ((-(_local6) * _local15) + (_local7 * _local14));
if (((((-(_local12) * _local13) <= _local17)) && ((_local17 <= (_local13 * (1 + _local12)))))){
_local16 = (_local16 / _local13);
_local18 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local18);
_local11 = (_local11 / _local18);
_arg1[0] = _local16;
_arg2.Set(_local10, _local11);
return (true);
};
};
};
return (false);
}
}
}//package Box2D.Collision
Section 29
//b2TimeOfImpact (Box2D.Collision.b2TimeOfImpact)
package Box2D.Collision {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2TimeOfImpact {
public static var s_xf1:b2XForm = new b2XForm();
public static var s_xf2:b2XForm = new b2XForm();
public static var s_p1:b2Vec2 = new b2Vec2();
public static var s_p2:b2Vec2 = new b2Vec2();
public static function TimeOfImpact(_arg1:b2Shape, _arg2:b2Sweep, _arg3:b2Shape, _arg4:b2Sweep):Number{
var _local5:Number;
var _local6:Number;
var _local25:Number;
var _local26:b2XForm;
var _local27:b2XForm;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local7:Number = _arg1.m_sweepRadius;
var _local8:Number = _arg3.m_sweepRadius;
var _local9:Number = _arg2.t0;
var _local10:Number = (_arg2.c.x - _arg2.c0.x);
var _local11:Number = (_arg2.c.y - _arg2.c0.y);
var _local12:Number = (_arg4.c.x - _arg4.c0.x);
var _local13:Number = (_arg4.c.y - _arg4.c0.y);
var _local14:Number = (_arg2.a - _arg2.a0);
var _local15:Number = (_arg4.a - _arg4.a0);
var _local16:Number = 0;
var _local17:b2Vec2 = s_p1;
var _local18:b2Vec2 = s_p2;
var _local19 = 20;
var _local20:int;
var _local21:Number = 0;
var _local22:Number = 0;
var _local23:Number = 0;
var _local24:Number = 0;
while (true) {
_local25 = (((1 - _local16) * _local9) + _local16);
_local26 = s_xf1;
_local27 = s_xf2;
_arg2.GetXForm(_local26, _local25);
_arg4.GetXForm(_local27, _local25);
_local23 = b2Distance.Distance(_local17, _local18, _arg1, _local26, _arg3, _local27);
if (_local20 == 0){
if (_local23 > (2 * b2Settings.b2_toiSlop)){
_local24 = (1.5 * b2Settings.b2_toiSlop);
} else {
_local5 = (0.05 * b2Settings.b2_toiSlop);
_local6 = (_local23 - (0.5 * b2Settings.b2_toiSlop));
_local24 = ((_local5 > _local6)) ? _local5 : _local6;
};
};
if (((((_local23 - _local24) < (0.05 * b2Settings.b2_toiSlop))) || ((_local20 == _local19)))){
break;
};
_local21 = (_local18.x - _local17.x);
_local22 = (_local18.y - _local17.y);
_local28 = Math.sqrt(((_local21 * _local21) + (_local22 * _local22)));
_local21 = (_local21 / _local28);
_local22 = (_local22 / _local28);
_local29 = ((((_local21 * (_local10 - _local12)) + (_local22 * (_local11 - _local13))) + (((_local14 < 0)) ? -(_local14) : _local14 * _local7)) + (((_local15 < 0)) ? -(_local15) : _local15 * _local8));
if (_local29 == 0){
_local16 = 1;
break;
};
_local30 = ((_local23 - _local24) / _local29);
_local31 = (_local16 + _local30);
if ((((_local31 < 0)) || ((1 < _local31)))){
_local16 = 1;
break;
};
if (_local31 < ((1 + (100 * Number.MIN_VALUE)) * _local16)){
break;
};
_local16 = _local31;
_local20++;
};
return (_local16);
}
}
}//package Box2D.Collision
Section 30
//ClipVertex (Box2D.Collision.ClipVertex)
package Box2D.Collision {
import Box2D.Common.Math.*;
public class ClipVertex {
public var id:b2ContactID;
public var v:b2Vec2;
public function ClipVertex(){
v = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Collision
Section 31
//Features (Box2D.Collision.Features)
package Box2D.Collision {
public class Features {
public var _referenceEdge:int;
public var _incidentEdge:int;
public var _flip:int;
public var _incidentVertex:int;
public var _m_id:b2ContactID;
public function get referenceEdge():int{
return (_referenceEdge);
}
public function set incidentVertex(_arg1:int):void{
_incidentVertex = _arg1;
_m_id._key = ((_m_id._key & 4278255615) | ((_incidentVertex << 16) & 0xFF0000));
}
public function get flip():int{
return (_flip);
}
public function get incidentEdge():int{
return (_incidentEdge);
}
public function set referenceEdge(_arg1:int):void{
_referenceEdge = _arg1;
_m_id._key = ((_m_id._key & 4294967040) | (_referenceEdge & 0xFF));
}
public function get incidentVertex():int{
return (_incidentVertex);
}
public function set flip(_arg1:int):void{
_flip = _arg1;
_m_id._key = ((_m_id._key & 0xFFFFFF) | ((_flip << 24) & 4278190080));
}
public function set incidentEdge(_arg1:int):void{
_incidentEdge = _arg1;
_m_id._key = ((_m_id._key & 4294902015) | ((_incidentEdge << 8) & 0xFF00));
}
}
}//package Box2D.Collision
Section 32
//b2Mat22 (Box2D.Common.Math.b2Mat22)
package Box2D.Common.Math {
public class b2Mat22 {
public var col1:b2Vec2;
public var col2:b2Vec2;
public function b2Mat22(_arg1:Number=0, _arg2:b2Vec2=null, _arg3:b2Vec2=null){
var _local4:Number;
var _local5:Number;
col1 = new b2Vec2();
col2 = new b2Vec2();
super();
if (((!((_arg2 == null))) && (!((_arg3 == null))))){
col1.SetV(_arg2);
col2.SetV(_arg3);
} else {
_local4 = Math.cos(_arg1);
_local5 = Math.sin(_arg1);
col1.x = _local4;
col2.x = -(_local5);
col1.y = _local5;
col2.y = _local4;
};
}
public function SetIdentity():void{
col1.x = 1;
col2.x = 0;
col1.y = 0;
col2.y = 1;
}
public function SetVV(_arg1:b2Vec2, _arg2:b2Vec2):void{
col1.SetV(_arg1);
col2.SetV(_arg2);
}
public function Set(_arg1:Number):void{
var _local2:Number;
_local2 = Math.cos(_arg1);
var _local3:Number = Math.sin(_arg1);
col1.x = _local2;
col2.x = -(_local3);
col1.y = _local3;
col2.y = _local2;
}
public function SetZero():void{
col1.x = 0;
col2.x = 0;
col1.y = 0;
col2.y = 0;
}
public function SetM(_arg1:b2Mat22):void{
col1.SetV(_arg1.col1);
col2.SetV(_arg1.col2);
}
public function AddM(_arg1:b2Mat22):void{
col1.x = (col1.x + _arg1.col1.x);
col1.y = (col1.y + _arg1.col1.y);
col2.x = (col2.x + _arg1.col2.x);
col2.y = (col2.y + _arg1.col2.y);
}
public function Abs():void{
col1.Abs();
col2.Abs();
}
public function Copy():b2Mat22{
return (new b2Mat22(0, col1, col2));
}
public function Invert(_arg1:b2Mat22):b2Mat22{
var _local2:Number;
var _local4:Number;
var _local6:Number;
_local2 = col1.x;
var _local3:Number = col2.x;
_local4 = col1.y;
var _local5:Number = col2.y;
_local6 = ((_local2 * _local5) - (_local3 * _local4));
_local6 = (1 / _local6);
_arg1.col1.x = (_local6 * _local5);
_arg1.col2.x = (-(_local6) * _local3);
_arg1.col1.y = (-(_local6) * _local4);
_arg1.col2.y = (_local6 * _local2);
return (_arg1);
}
public function GetAngle():Number{
return (Math.atan2(col1.y, col1.x));
}
public function Solve(_arg1:b2Vec2, _arg2:Number, _arg3:Number):b2Vec2{
var _local4:Number = col1.x;
var _local5:Number = col2.x;
var _local6:Number = col1.y;
var _local7:Number = col2.y;
var _local8:Number = ((_local4 * _local7) - (_local5 * _local6));
_local8 = (1 / _local8);
_arg1.x = (_local8 * ((_local7 * _arg2) - (_local5 * _arg3)));
_arg1.y = (_local8 * ((_local4 * _arg3) - (_local6 * _arg2)));
return (_arg1);
}
}
}//package Box2D.Common.Math
Section 33
//b2Math (Box2D.Common.Math.b2Math)
package Box2D.Common.Math {
public class b2Math {
public static const b2Mat22_identity:b2Mat22 = new b2Mat22(0, new b2Vec2(1, 0), new b2Vec2(0, 1));
public static const b2XForm_identity:b2XForm = new b2XForm(b2Vec2_zero, b2Mat22_identity);
public static const b2Vec2_zero:b2Vec2 = new b2Vec2(0, 0);
public static function b2CrossVF(_arg1:b2Vec2, _arg2:Number):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg2 * _arg1.y), (-(_arg2) * _arg1.x));
return (_local3);
}
public static function AddVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1.x + _arg2.x), (_arg1.y + _arg2.y));
return (_local3);
}
public static function b2IsValid(_arg1:Number):Boolean{
return (isFinite(_arg1));
}
public static function b2MinV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Min(_arg1.x, _arg2.x), b2Min(_arg1.y, _arg2.y));
return (_local3);
}
public static function b2MulX(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2;
_local3 = b2MulMV(_arg1.R, _arg2);
_local3.x = (_local3.x + _arg1.position.x);
_local3.y = (_local3.y + _arg1.position.y);
return (_local3);
}
public static function b2DistanceSquared(_arg1:b2Vec2, _arg2:b2Vec2):Number{
var _local3:Number = (_arg1.x - _arg2.x);
var _local4:Number = (_arg1.y - _arg2.y);
return (((_local3 * _local3) + (_local4 * _local4)));
}
public static function b2Swap(_arg1:Array, _arg2:Array):void{
var _local3:* = _arg1[0];
_arg1[0] = _arg2[0];
_arg2[0] = _local3;
}
public static function b2AbsM(_arg1:b2Mat22):b2Mat22{
var _local2:b2Mat22 = new b2Mat22(0, b2AbsV(_arg1.col1), b2AbsV(_arg1.col2));
return (_local2);
}
public static function SubtractVV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1.x - _arg2.x), (_arg1.y - _arg2.y));
return (_local3);
}
public static function b2MulXT(_arg1:b2XForm, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2;
var _local4:Number;
_local3 = SubtractVV(_arg2, _arg1.position);
_local4 = ((_local3.x * _arg1.R.col1.x) + (_local3.y * _arg1.R.col1.y));
_local3.y = ((_local3.x * _arg1.R.col2.x) + (_local3.y * _arg1.R.col2.y));
_local3.x = _local4;
return (_local3);
}
public static function b2Abs(_arg1:Number):Number{
return (((_arg1 > 0)) ? _arg1 : -(_arg1));
}
public static function b2Clamp(_arg1:Number, _arg2:Number, _arg3:Number):Number{
return (b2Max(_arg2, b2Min(_arg1, _arg3)));
}
public static function b2AbsV(_arg1:b2Vec2):b2Vec2{
var _local2:b2Vec2 = new b2Vec2(b2Abs(_arg1.x), b2Abs(_arg1.y));
return (_local2);
}
public static function MulFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((_arg1 * _arg2.x), (_arg1 * _arg2.y));
return (_local3);
}
public static function b2CrossVV(_arg1:b2Vec2, _arg2:b2Vec2):Number{
return (((_arg1.x * _arg2.y) - (_arg1.y * _arg2.x)));
}
public static function b2Dot(_arg1:b2Vec2, _arg2:b2Vec2):Number{
return (((_arg1.x * _arg2.x) + (_arg1.y * _arg2.y)));
}
public static function b2CrossFV(_arg1:Number, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2((-(_arg1) * _arg2.y), (_arg1 * _arg2.x));
return (_local3);
}
public static function AddMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Mat22 = new b2Mat22(0, AddVV(_arg1.col1, _arg2.col1), AddVV(_arg1.col2, _arg2.col2));
return (_local3);
}
public static function b2Distance(_arg1:b2Vec2, _arg2:b2Vec2):Number{
var _local3:Number = (_arg1.x - _arg2.x);
var _local4:Number = (_arg1.y - _arg2.y);
return (Math.sqrt(((_local3 * _local3) + (_local4 * _local4))));
}
public static function b2MulTMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col1), b2Dot(_arg1.col2, _arg2.col1));
var _local4:b2Vec2 = new b2Vec2(b2Dot(_arg1.col1, _arg2.col2), b2Dot(_arg1.col2, _arg2.col2));
var _local5:b2Mat22 = new b2Mat22(0, _local3, _local4);
return (_local5);
}
public static function b2MaxV(_arg1:b2Vec2, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Max(_arg1.x, _arg2.x), b2Max(_arg1.y, _arg2.y));
return (_local3);
}
public static function b2IsPowerOfTwo(_arg1:uint):Boolean{
var _local2:Boolean = (((_arg1 > 0)) && (((_arg1 & (_arg1 - 1)) == 0)));
return (_local2);
}
public static function b2ClampV(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Vec2):b2Vec2{
return (b2MaxV(_arg2, b2MinV(_arg1, _arg3)));
}
public static function b2RandomRange(_arg1:Number, _arg2:Number):Number{
var _local3:Number = Math.random();
_local3 = (((_arg2 - _arg1) * _local3) + _arg1);
return (_local3);
}
public static function b2MulTMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(b2Dot(_arg2, _arg1.col1), b2Dot(_arg2, _arg1.col2));
return (_local3);
}
public static function b2Min(_arg1:Number, _arg2:Number):Number{
return (((_arg1 < _arg2)) ? _arg1 : _arg2);
}
public static function b2Random():Number{
return (((Math.random() * 2) - 1));
}
public static function b2MulMM(_arg1:b2Mat22, _arg2:b2Mat22):b2Mat22{
var _local3:b2Mat22 = new b2Mat22(0, b2MulMV(_arg1, _arg2.col1), b2MulMV(_arg1, _arg2.col2));
return (_local3);
}
public static function b2NextPowerOfTwo(_arg1:uint):uint{
_arg1 = (_arg1 | ((_arg1 >> 1) & 2147483647));
_arg1 = (_arg1 | ((_arg1 >> 2) & 1073741823));
_arg1 = (_arg1 | ((_arg1 >> 4) & 268435455));
_arg1 = (_arg1 | ((_arg1 >> 8) & 0xFFFFFF));
_arg1 = (_arg1 | ((_arg1 >> 16) & 0xFFFF));
return ((_arg1 + 1));
}
public static function b2Max(_arg1:Number, _arg2:Number):Number{
return (((_arg1 > _arg2)) ? _arg1 : _arg2);
}
public static function b2MulMV(_arg1:b2Mat22, _arg2:b2Vec2):b2Vec2{
var _local3:b2Vec2 = new b2Vec2(((_arg1.col1.x * _arg2.x) + (_arg1.col2.x * _arg2.y)), ((_arg1.col1.y * _arg2.x) + (_arg1.col2.y * _arg2.y)));
return (_local3);
}
}
}//package Box2D.Common.Math
Section 34
//b2Sweep (Box2D.Common.Math.b2Sweep)
package Box2D.Common.Math {
public class b2Sweep {
public var localCenter:b2Vec2;
public var a:Number;
public var c:b2Vec2;
public var a0:Number;
public var c0:b2Vec2;
public var t0:Number;
public function b2Sweep(){
localCenter = new b2Vec2();
c0 = new b2Vec2();
c = new b2Vec2();
super();
}
public function Advance(_arg1:Number):void{
var _local2:Number;
if ((((t0 < _arg1)) && (((1 - t0) > Number.MIN_VALUE)))){
_local2 = ((_arg1 - t0) / (1 - t0));
c0.x = (((1 - _local2) * c0.x) + (_local2 * c.x));
c0.y = (((1 - _local2) * c0.y) + (_local2 * c.y));
a0 = (((1 - _local2) * a0) + (_local2 * a));
t0 = _arg1;
};
}
public function GetXForm(_arg1:b2XForm, _arg2:Number):void{
var _local4:Number;
var _local5:Number;
if ((1 - t0) > Number.MIN_VALUE){
_local4 = ((_arg2 - t0) / (1 - t0));
_arg1.position.x = (((1 - _local4) * c0.x) + (_local4 * c.x));
_arg1.position.y = (((1 - _local4) * c0.y) + (_local4 * c.y));
_local5 = (((1 - _local4) * a0) + (_local4 * a));
_arg1.R.Set(_local5);
} else {
_arg1.position.SetV(c);
_arg1.R.Set(a);
};
var _local3:b2Mat22 = _arg1.R;
_arg1.position.x = (_arg1.position.x - ((_local3.col1.x * localCenter.x) + (_local3.col2.x * localCenter.y)));
_arg1.position.y = (_arg1.position.y - ((_local3.col1.y * localCenter.x) + (_local3.col2.y * localCenter.y)));
}
}
}//package Box2D.Common.Math
Section 35
//b2Vec2 (Box2D.Common.Math.b2Vec2)
package Box2D.Common.Math {
public class b2Vec2 {
public var y:Number;
public var x:Number;
public function b2Vec2(_arg1:Number=0, _arg2:Number=0):void{
x = _arg1;
y = _arg2;
}
public function Add(_arg1:b2Vec2):void{
x = (x + _arg1.x);
y = (y + _arg1.y);
}
public function Set(_arg1:Number=0, _arg2:Number=0):void{
x = _arg1;
y = _arg2;
}
public function Multiply(_arg1:Number):void{
x = (x * _arg1);
y = (y * _arg1);
}
public function Length():Number{
return (Math.sqrt(((x * x) + (y * y))));
}
public function LengthSquared():Number{
return (((x * x) + (y * y)));
}
public function MulM(_arg1:b2Mat22):void{
var _local2:Number = x;
x = ((_arg1.col1.x * _local2) + (_arg1.col2.x * y));
y = ((_arg1.col1.y * _local2) + (_arg1.col2.y * y));
}
public function SetZero():void{
x = 0;
y = 0;
}
public function MinV(_arg1:b2Vec2):void{
x = ((x < _arg1.x)) ? x : _arg1.x;
y = ((y < _arg1.y)) ? y : _arg1.y;
}
public function Normalize():Number{
var _local1:Number = Math.sqrt(((x * x) + (y * y)));
if (_local1 < Number.MIN_VALUE){
return (0);
};
var _local2:Number = (1 / _local1);
x = (x * _local2);
y = (y * _local2);
return (_local1);
}
public function CrossVF(_arg1:Number):void{
var _local2:Number = x;
x = (_arg1 * y);
y = (-(_arg1) * _local2);
}
public function MaxV(_arg1:b2Vec2):void{
x = ((x > _arg1.x)) ? x : _arg1.x;
y = ((y > _arg1.y)) ? y : _arg1.y;
}
public function SetV(_arg1:b2Vec2):void{
x = _arg1.x;
y = _arg1.y;
}
public function Negative():b2Vec2{
return (new b2Vec2(-(x), -(y)));
}
public function CrossFV(_arg1:Number):void{
var _local2:Number = x;
x = (-(_arg1) * y);
y = (_arg1 * _local2);
}
public function Abs():void{
if (x < 0){
x = -(x);
};
if (y < 0){
y = -(y);
};
}
public function Subtract(_arg1:b2Vec2):void{
x = (x - _arg1.x);
y = (y - _arg1.y);
}
public function Copy():b2Vec2{
return (new b2Vec2(x, y));
}
public function MulTM(_arg1:b2Mat22):void{
var _local2:Number = b2Math.b2Dot(this, _arg1.col1);
y = b2Math.b2Dot(this, _arg1.col2);
x = _local2;
}
public function IsValid():Boolean{
return (((b2Math.b2IsValid(x)) && (b2Math.b2IsValid(y))));
}
public static function Make(_arg1:Number, _arg2:Number):b2Vec2{
return (new b2Vec2(_arg1, _arg2));
}
}
}//package Box2D.Common.Math
Section 36
//b2XForm (Box2D.Common.Math.b2XForm)
package Box2D.Common.Math {
public class b2XForm {
public var position:b2Vec2;
public var R:b2Mat22;
public function b2XForm(_arg1:b2Vec2=null, _arg2:b2Mat22=null):void{
position = new b2Vec2();
R = new b2Mat22();
super();
if (_arg1){
position.SetV(_arg1);
R.SetM(_arg2);
};
}
public function Initialize(_arg1:b2Vec2, _arg2:b2Mat22):void{
position.SetV(_arg1);
R.SetM(_arg2);
}
public function Set(_arg1:b2XForm):void{
position.SetV(_arg1.position);
R.SetM(_arg1.R);
}
public function SetIdentity():void{
position.SetZero();
R.SetIdentity();
}
}
}//package Box2D.Common.Math
Section 37
//b2Color (Box2D.Common.b2Color)
package Box2D.Common {
import Box2D.Common.Math.*;
public class b2Color {
private var _r:uint;// = 0
private var _g:uint;// = 0
private var _b:uint;// = 0
public function b2Color(_arg1:Number, _arg2:Number, _arg3:Number){
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
}
public function Set(_arg1:Number, _arg2:Number, _arg3:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
_g = uint((0xFF * b2Math.b2Clamp(_arg2, 0, 1)));
_b = uint((0xFF * b2Math.b2Clamp(_arg3, 0, 1)));
}
public function set b(_arg1:Number):void{
_b = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
public function get color():uint{
return ((((_r << 16) | (_g << 8)) | _b));
}
public function set r(_arg1:Number):void{
_r = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
public function set g(_arg1:Number):void{
_g = uint((0xFF * b2Math.b2Clamp(_arg1, 0, 1)));
}
}
}//package Box2D.Common
Section 38
//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 = 20;
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 39
//b2CircleContact (Box2D.Dynamics.Contacts.b2CircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2CircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2CircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local8:b2ManifoldPoint;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollideCircles(m_manifold, (m_shape1 as b2CircleShape), _local5.m_xf, (m_shape2 as b2CircleShape), _local6.m_xf);
var _local7:b2ContactPoint = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
m_manifoldCount = 1;
_local8 = m_manifold.points[0];
if (m0.pointCount == 0){
_local8.normalImpulse = 0;
_local8.tangentImpulse = 0;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Add(_local7);
};
} else {
_local4 = m0.points[0];
_local8.normalImpulse = _local4.normalImpulse;
_local8.tangentImpulse = _local4.tangentImpulse;
if (_arg1){
_local7.position = _local5.GetWorldPoint(_local8.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local8.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local8.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local8.separation;
_local7.id.key = _local8.id._key;
_arg1.Persist(_local7);
};
};
} else {
m_manifoldCount = 0;
if ((((m0.pointCount > 0)) && (_arg1))){
_local4 = m0.points[0];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function 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 40
//b2Contact (Box2D.Dynamics.Contacts.b2Contact)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2Contact {
public var m_shape1:b2Shape;
public var m_shape2:b2Shape;
public var m_prev:b2Contact;
public var m_toi:Number;
public var m_next:b2Contact;
public var m_friction:Number;
public var m_manifoldCount:int;
public var m_node1:b2ContactEdge;
public var m_node2:b2ContactEdge;
public var m_restitution:Number;
public var m_flags:uint;
public static var e_toiFlag:uint = 8;
public static var e_nonSolidFlag:uint = 1;
public static var e_slowFlag:uint = 2;
public static var e_islandFlag:uint = 4;
public static var s_registers:Array;
public static var s_initialized:Boolean = false;
public function b2Contact(_arg1:b2Shape=null, _arg2:b2Shape=null){
m_node1 = new b2ContactEdge();
m_node2 = new b2ContactEdge();
super();
m_flags = 0;
if (((!(_arg1)) || (!(_arg2)))){
m_shape1 = null;
m_shape2 = null;
return;
};
if (((_arg1.IsSensor()) || (_arg2.IsSensor()))){
m_flags = (m_flags | e_nonSolidFlag);
};
m_shape1 = _arg1;
m_shape2 = _arg2;
m_manifoldCount = 0;
m_friction = Math.sqrt((m_shape1.m_friction * m_shape2.m_friction));
m_restitution = b2Math.b2Max(m_shape1.m_restitution, m_shape2.m_restitution);
m_prev = null;
m_next = null;
m_node1.contact = null;
m_node1.prev = null;
m_node1.next = null;
m_node1.other = null;
m_node2.contact = null;
m_node2.prev = null;
m_node2.next = null;
m_node2.other = null;
}
public function IsSolid():Boolean{
return (((m_flags & e_nonSolidFlag) == 0));
}
public function GetShape1():b2Shape{
return (m_shape1);
}
public function GetShape2():b2Shape{
return (m_shape2);
}
public function GetNext():b2Contact{
return (m_next);
}
public function GetManifoldCount():int{
return (m_manifoldCount);
}
public function GetManifolds():Array{
return (null);
}
public function Update(_arg1:b2ContactListener):void{
var _local2:int = m_manifoldCount;
Evaluate(_arg1);
var _local3:int = m_manifoldCount;
var _local4:b2Body = m_shape1.m_body;
var _local5:b2Body = m_shape2.m_body;
if ((((_local3 == 0)) && ((_local2 > 0)))){
_local4.WakeUp();
_local5.WakeUp();
};
if (((((((_local4.IsStatic()) || (_local4.IsBullet()))) || (_local5.IsStatic()))) || (_local5.IsBullet()))){
m_flags = (m_flags & ~(e_slowFlag));
} else {
m_flags = (m_flags | e_slowFlag);
};
}
public function Evaluate(_arg1:b2ContactListener):void{
}
public static function InitializeRegisters():void{
var _local2:int;
s_registers = new Array(b2Shape.e_shapeTypeCount);
var _local1:int;
while (_local1 < b2Shape.e_shapeTypeCount) {
s_registers[_local1] = new Array(b2Shape.e_shapeTypeCount);
_local2 = 0;
while (_local2 < b2Shape.e_shapeTypeCount) {
s_registers[_local1][_local2] = new b2ContactRegister();
_local2++;
};
_local1++;
};
AddType(b2CircleContact.Create, b2CircleContact.Destroy, b2Shape.e_circleShape, b2Shape.e_circleShape);
AddType(b2PolyAndCircleContact.Create, b2PolyAndCircleContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_circleShape);
AddType(b2PolygonContact.Create, b2PolygonContact.Destroy, b2Shape.e_polygonShape, b2Shape.e_polygonShape);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
if (_arg1.m_manifoldCount > 0){
_arg1.m_shape1.m_body.WakeUp();
_arg1.m_shape2.m_body.WakeUp();
};
var _local3:int = _arg1.m_shape1.m_type;
var _local4:int = _arg1.m_shape2.m_type;
var _local5:b2ContactRegister = s_registers[_local3][_local4];
var _local6:Function = _local5.destroyFcn;
_local6(_arg1, _arg2);
}
public static function AddType(_arg1:Function, _arg2:Function, _arg3:int, _arg4:int):void{
s_registers[_arg3][_arg4].createFcn = _arg1;
s_registers[_arg3][_arg4].destroyFcn = _arg2;
s_registers[_arg3][_arg4].primary = true;
if (_arg3 != _arg4){
s_registers[_arg4][_arg3].createFcn = _arg1;
s_registers[_arg4][_arg3].destroyFcn = _arg2;
s_registers[_arg4][_arg3].primary = false;
};
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
var _local8:b2Contact;
var _local9:int;
var _local10:b2Manifold;
if (s_initialized == false){
InitializeRegisters();
s_initialized = true;
};
var _local4:int = _arg1.m_type;
var _local5:int = _arg2.m_type;
var _local6:b2ContactRegister = s_registers[_local4][_local5];
var _local7:Function = _local6.createFcn;
if (_local7 != null){
if (_local6.primary){
return (_local7(_arg1, _arg2, _arg3));
};
_local8 = _local7(_arg2, _arg1, _arg3);
_local9 = 0;
while (_local9 < _local8.m_manifoldCount) {
_local10 = _local8.GetManifolds()[_local9];
_local8.GetManifolds()[_local9].normal = _local10.normal.Negative();
_local9++;
};
return (_local8);
//unresolved jump
};
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 41
//b2ContactConstraint (Box2D.Dynamics.Contacts.b2ContactConstraint)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Common.*;
public class b2ContactConstraint {
public var points:Array;
public var normal:b2Vec2;
public var restitution:Number;
public var body1:b2Body;
public var manifold:b2Manifold;
public var body2:b2Body;
public var friction:Number;
public var pointCount:int;
public function b2ContactConstraint(){
normal = new b2Vec2();
super();
points = new Array(b2Settings.b2_maxManifoldPoints);
var _local1:int;
while (_local1 < b2Settings.b2_maxManifoldPoints) {
points[_local1] = new b2ContactConstraintPoint();
_local1++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 42
//b2ContactConstraintPoint (Box2D.Dynamics.Contacts.b2ContactConstraintPoint)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
public class b2ContactConstraintPoint {
public var r2:b2Vec2;
public var separation:Number;
public var positionImpulse:Number;
public var normalImpulse:Number;
public var tangentMass:Number;
public var equalizedMass:Number;
public var tangentImpulse:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var normalMass:Number;
public var velocityBias:Number;
public var r1:b2Vec2;
public function b2ContactConstraintPoint(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
r1 = new b2Vec2();
r2 = new b2Vec2();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 43
//b2ContactEdge (Box2D.Dynamics.Contacts.b2ContactEdge)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2ContactEdge {
public var other:b2Body;
public var prev:b2ContactEdge;
public var contact:b2Contact;
public var next:b2ContactEdge;
}
}//package Box2D.Dynamics.Contacts
Section 44
//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 45
//b2ContactResult (Box2D.Dynamics.Contacts.b2ContactResult)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
public class b2ContactResult {
public var position:b2Vec2;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var normalImpulse:Number;
public var normal:b2Vec2;
public var tangentImpulse:Number;
public var id:b2ContactID;
public function b2ContactResult(){
position = new b2Vec2();
normal = new b2Vec2();
id = new b2ContactID();
super();
}
}
}//package Box2D.Dynamics.Contacts
Section 46
//b2ContactSolver (Box2D.Dynamics.Contacts.b2ContactSolver)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Common.*;
public class b2ContactSolver {
public var m_constraintCount:int;
public var m_constraints:Array;
public var m_allocator;
public var m_step:b2TimeStep;
public function b2ContactSolver(_arg1:b2TimeStep, _arg2:Array, _arg3:int, _arg4){
var _local5:b2Contact;
var _local6:int;
var _local7:b2Vec2;
var _local8:b2Mat22;
var _local10:b2Body;
var _local11:b2Body;
var _local12:int;
var _local13:Array;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:int;
var _local23:b2Manifold;
var _local24:Number;
var _local25:Number;
var _local26:b2ContactConstraint;
var _local27:uint;
var _local28:b2ManifoldPoint;
var _local29:b2ContactConstraintPoint;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local39:Number;
var _local40:Number;
var _local41:Number;
var _local42:Number;
var _local43:Number;
var _local44:Number;
var _local45:Number;
var _local46:Number;
var _local47:Number;
m_step = new b2TimeStep();
m_constraints = new Array();
super();
m_step.dt = _arg1.dt;
m_step.inv_dt = _arg1.inv_dt;
m_step.maxIterations = _arg1.maxIterations;
m_allocator = _arg4;
m_constraintCount = 0;
_local6 = 0;
while (_local6 < _arg3) {
_local5 = _arg2[_local6];
m_constraintCount = (m_constraintCount + _local5.m_manifoldCount);
_local6++;
};
_local6 = 0;
while (_local6 < m_constraintCount) {
m_constraints[_local6] = new b2ContactConstraint();
_local6++;
};
var _local9:int;
_local6 = 0;
while (_local6 < _arg3) {
_local5 = _arg2[_local6];
_local10 = _local5.m_shape1.m_body;
_local11 = _local5.m_shape2.m_body;
_local12 = _local5.m_manifoldCount;
_local13 = _local5.GetManifolds();
_local14 = _local5.m_friction;
_local15 = _local5.m_restitution;
_local16 = _local10.m_linearVelocity.x;
_local17 = _local10.m_linearVelocity.y;
_local18 = _local11.m_linearVelocity.x;
_local19 = _local11.m_linearVelocity.y;
_local20 = _local10.m_angularVelocity;
_local21 = _local11.m_angularVelocity;
_local22 = 0;
while (_local22 < _local12) {
_local23 = _local13[_local22];
_local24 = _local23.normal.x;
_local25 = _local23.normal.y;
_local26 = m_constraints[_local9];
_local26.body1 = _local10;
_local26.body2 = _local11;
_local26.manifold = _local23;
_local26.normal.x = _local24;
_local26.normal.y = _local25;
_local26.pointCount = _local23.pointCount;
_local26.friction = _local14;
_local26.restitution = _local15;
_local27 = 0;
while (_local27 < _local26.pointCount) {
_local28 = _local23.points[_local27];
_local29 = _local26.points[_local27];
_local29.normalImpulse = _local28.normalImpulse;
_local29.tangentImpulse = _local28.tangentImpulse;
_local29.separation = _local28.separation;
_local29.positionImpulse = 0;
_local29.localAnchor1.SetV(_local28.localPoint1);
_local29.localAnchor2.SetV(_local28.localPoint2);
_local8 = _local10.m_xf.R;
_local32 = (_local28.localPoint1.x - _local10.m_sweep.localCenter.x);
_local33 = (_local28.localPoint1.y - _local10.m_sweep.localCenter.y);
_local30 = ((_local8.col1.x * _local32) + (_local8.col2.x * _local33));
_local33 = ((_local8.col1.y * _local32) + (_local8.col2.y * _local33));
_local32 = _local30;
_local29.r1.Set(_local32, _local33);
_local8 = _local11.m_xf.R;
_local34 = (_local28.localPoint2.x - _local11.m_sweep.localCenter.x);
_local35 = (_local28.localPoint2.y - _local11.m_sweep.localCenter.y);
_local30 = ((_local8.col1.x * _local34) + (_local8.col2.x * _local35));
_local35 = ((_local8.col1.y * _local34) + (_local8.col2.y * _local35));
_local34 = _local30;
_local29.r2.Set(_local34, _local35);
_local36 = ((_local32 * _local32) + (_local33 * _local33));
_local37 = ((_local34 * _local34) + (_local35 * _local35));
_local38 = ((_local32 * _local24) + (_local33 * _local25));
_local39 = ((_local34 * _local24) + (_local35 * _local25));
_local40 = (_local10.m_invMass + _local11.m_invMass);
_local40 = (_local40 + ((_local10.m_invI * (_local36 - (_local38 * _local38))) + (_local11.m_invI * (_local37 - (_local39 * _local39)))));
_local29.normalMass = (1 / _local40);
_local41 = ((_local10.m_mass * _local10.m_invMass) + (_local11.m_mass * _local11.m_invMass));
_local41 = (_local41 + (((_local10.m_mass * _local10.m_invI) * (_local36 - (_local38 * _local38))) + ((_local11.m_mass * _local11.m_invI) * (_local37 - (_local39 * _local39)))));
_local29.equalizedMass = (1 / _local41);
_local42 = _local25;
_local43 = -(_local24);
_local44 = ((_local32 * _local42) + (_local33 * _local43));
_local45 = ((_local34 * _local42) + (_local35 * _local43));
_local46 = (_local10.m_invMass + _local11.m_invMass);
_local46 = (_local46 + ((_local10.m_invI * (_local36 - (_local44 * _local44))) + (_local11.m_invI * (_local37 - (_local45 * _local45)))));
_local29.tangentMass = (1 / _local46);
_local29.velocityBias = 0;
if (_local29.separation > 0){
_local29.velocityBias = (-60 * _local29.separation);
};
_local30 = (((_local18 + (-(_local21) * _local35)) - _local16) - (-(_local20) * _local33));
_local31 = (((_local19 + (_local21 * _local34)) - _local17) - (_local20 * _local32));
_local47 = ((_local26.normal.x * _local30) + (_local26.normal.y * _local31));
if (_local47 < -(b2Settings.b2_velocityThreshold)){
_local29.velocityBias = (_local29.velocityBias + (-(_local26.restitution) * _local47));
};
_local27++;
};
_local9++;
_local22++;
};
_local6++;
};
}
public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2Mat22;
var _local6:b2ContactConstraint;
var _local7:b2Body;
var _local8:b2Body;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:int;
var _local19:int;
var _local20:b2ContactConstraintPoint;
var _local21:Number;
var _local22:Number;
var _local23:b2ContactConstraintPoint;
var _local5:int;
while (_local5 < m_constraintCount) {
_local6 = m_constraints[_local5];
_local7 = _local6.body1;
_local8 = _local6.body2;
_local9 = _local7.m_invMass;
_local10 = _local7.m_invI;
_local11 = _local8.m_invMass;
_local12 = _local8.m_invI;
_local13 = _local6.normal.x;
_local14 = _local6.normal.y;
_local15 = _local14;
_local16 = -(_local13);
if (_arg1.warmStarting){
_local19 = _local6.pointCount;
_local18 = 0;
while (_local18 < _local19) {
_local20 = _local6.points[_local18];
_local6.points[_local18].normalImpulse = (_local20.normalImpulse * _arg1.dtRatio);
_local20.tangentImpulse = (_local20.tangentImpulse * _arg1.dtRatio);
_local21 = ((_local20.normalImpulse * _local13) + (_local20.tangentImpulse * _local15));
_local22 = ((_local20.normalImpulse * _local14) + (_local20.tangentImpulse * _local16));
_local7.m_angularVelocity = (_local7.m_angularVelocity - (_local10 * ((_local20.r1.x * _local22) - (_local20.r1.y * _local21))));
_local7.m_linearVelocity.x = (_local7.m_linearVelocity.x - (_local9 * _local21));
_local7.m_linearVelocity.y = (_local7.m_linearVelocity.y - (_local9 * _local22));
_local8.m_angularVelocity = (_local8.m_angularVelocity + (_local12 * ((_local20.r2.x * _local22) - (_local20.r2.y * _local21))));
_local8.m_linearVelocity.x = (_local8.m_linearVelocity.x + (_local11 * _local21));
_local8.m_linearVelocity.y = (_local8.m_linearVelocity.y + (_local11 * _local22));
_local18++;
};
} else {
_local19 = _local6.pointCount;
_local18 = 0;
while (_local18 < _local19) {
_local23 = _local6.points[_local18];
_local23.normalImpulse = 0;
_local23.tangentImpulse = 0;
_local18++;
};
};
_local5++;
};
}
public function SolvePositionConstraints(_arg1:Number):Boolean{
var _local3:b2Mat22;
var _local4:b2Vec2;
var _local6:b2ContactConstraint;
var _local7:b2Body;
var _local8:b2Body;
var _local9:b2Vec2;
var _local10:Number;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:int;
var _local20:int;
var _local21:b2ContactConstraintPoint;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:Number;
var _local38:Number;
var _local2:Number = 0;
var _local5:int;
while (_local5 < m_constraintCount) {
_local6 = m_constraints[_local5];
_local7 = _local6.body1;
_local8 = _local6.body2;
_local9 = _local7.m_sweep.c;
_local10 = _local7.m_sweep.a;
_local11 = _local8.m_sweep.c;
_local12 = _local8.m_sweep.a;
_local13 = (_local7.m_mass * _local7.m_invMass);
_local14 = (_local7.m_mass * _local7.m_invI);
_local15 = (_local8.m_mass * _local8.m_invMass);
_local16 = (_local8.m_mass * _local8.m_invI);
_local17 = _local6.normal.x;
_local18 = _local6.normal.y;
_local19 = _local6.pointCount;
_local20 = 0;
while (_local20 < _local19) {
_local21 = _local6.points[_local20];
_local3 = _local7.m_xf.R;
_local4 = _local7.m_sweep.localCenter;
_local22 = (_local21.localAnchor1.x - _local4.x);
_local23 = (_local21.localAnchor1.y - _local4.y);
_local26 = ((_local3.col1.x * _local22) + (_local3.col2.x * _local23));
_local23 = ((_local3.col1.y * _local22) + (_local3.col2.y * _local23));
_local22 = _local26;
_local3 = _local8.m_xf.R;
_local4 = _local8.m_sweep.localCenter;
_local24 = (_local21.localAnchor2.x - _local4.x);
_local25 = (_local21.localAnchor2.y - _local4.y);
_local26 = ((_local3.col1.x * _local24) + (_local3.col2.x * _local25));
_local25 = ((_local3.col1.y * _local24) + (_local3.col2.y * _local25));
_local24 = _local26;
_local27 = (_local9.x + _local22);
_local28 = (_local9.y + _local23);
_local29 = (_local11.x + _local24);
_local30 = (_local11.y + _local25);
_local31 = (_local29 - _local27);
_local32 = (_local30 - _local28);
_local33 = (((_local31 * _local17) + (_local32 * _local18)) + _local21.separation);
_local2 = b2Math.b2Min(_local2, _local33);
_local34 = (_arg1 * b2Math.b2Clamp((_local33 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0));
_local35 = (-(_local21.equalizedMass) * _local34);
_local36 = _local21.positionImpulse;
_local21.positionImpulse = b2Math.b2Max((_local36 + _local35), 0);
_local35 = (_local21.positionImpulse - _local36);
_local37 = (_local35 * _local17);
_local38 = (_local35 * _local18);
_local9.x = (_local9.x - (_local13 * _local37));
_local9.y = (_local9.y - (_local13 * _local38));
_local10 = (_local10 - (_local14 * ((_local22 * _local38) - (_local23 * _local37))));
_local7.m_sweep.a = _local10;
_local7.SynchronizeTransform();
_local11.x = (_local11.x + (_local15 * _local37));
_local11.y = (_local11.y + (_local15 * _local38));
_local12 = (_local12 + (_local16 * ((_local24 * _local38) - (_local25 * _local37))));
_local8.m_sweep.a = _local12;
_local8.SynchronizeTransform();
_local20++;
};
_local5++;
};
return ((_local2 >= (-1.5 * b2Settings.b2_linearSlop)));
}
public function SolveVelocityConstraints():void{
var _local1:int;
var _local2:b2ContactConstraintPoint;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:b2Mat22;
var _local18:b2Vec2;
var _local20:b2ContactConstraint;
var _local21:b2Body;
var _local22:b2Body;
var _local23:Number;
var _local24:Number;
var _local25:b2Vec2;
var _local26:b2Vec2;
var _local27:Number;
var _local28:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local33:Number;
var _local34:Number;
var _local35:Number;
var _local36:Number;
var _local37:int;
var _local38:Number;
var _local19:int;
while (_local19 < m_constraintCount) {
_local20 = m_constraints[_local19];
_local21 = _local20.body1;
_local22 = _local20.body2;
_local23 = _local21.m_angularVelocity;
_local24 = _local22.m_angularVelocity;
_local25 = _local21.m_linearVelocity;
_local26 = _local22.m_linearVelocity;
_local27 = _local21.m_invMass;
_local28 = _local21.m_invI;
_local29 = _local22.m_invMass;
_local30 = _local22.m_invI;
_local31 = _local20.normal.x;
_local32 = _local20.normal.y;
_local33 = _local32;
_local34 = -(_local31);
_local35 = _local20.friction;
_local37 = _local20.pointCount;
_local1 = 0;
while (_local1 < _local37) {
_local2 = _local20.points[_local1];
_local7 = (((_local26.x + (-(_local24) * _local2.r2.y)) - _local25.x) - (-(_local23) * _local2.r1.y));
_local8 = (((_local26.y + (_local24 * _local2.r2.x)) - _local25.y) - (_local23 * _local2.r1.x));
_local9 = ((_local7 * _local31) + (_local8 * _local32));
_local11 = (-(_local2.normalMass) * (_local9 - _local2.velocityBias));
_local10 = ((_local7 * _local33) + (_local8 * _local34));
_local12 = (_local2.tangentMass * -(_local10));
_local13 = b2Math.b2Max((_local2.normalImpulse + _local11), 0);
_local11 = (_local13 - _local2.normalImpulse);
_local38 = (_local35 * _local2.normalImpulse);
_local14 = b2Math.b2Clamp((_local2.tangentImpulse + _local12), -(_local38), _local38);
_local12 = (_local14 - _local2.tangentImpulse);
_local15 = ((_local11 * _local31) + (_local12 * _local33));
_local16 = ((_local11 * _local32) + (_local12 * _local34));
_local25.x = (_local25.x - (_local27 * _local15));
_local25.y = (_local25.y - (_local27 * _local16));
_local23 = (_local23 - (_local28 * ((_local2.r1.x * _local16) - (_local2.r1.y * _local15))));
_local26.x = (_local26.x + (_local29 * _local15));
_local26.y = (_local26.y + (_local29 * _local16));
_local24 = (_local24 + (_local30 * ((_local2.r2.x * _local16) - (_local2.r2.y * _local15))));
_local2.normalImpulse = _local13;
_local2.tangentImpulse = _local14;
_local1++;
};
_local21.m_angularVelocity = _local23;
_local22.m_angularVelocity = _local24;
_local19++;
};
}
public function FinalizeVelocityConstraints():void{
var _local2:b2ContactConstraint;
var _local3:b2Manifold;
var _local4:int;
var _local5:b2ManifoldPoint;
var _local6:b2ContactConstraintPoint;
var _local1:int;
while (_local1 < m_constraintCount) {
_local2 = m_constraints[_local1];
_local3 = _local2.manifold;
_local4 = 0;
while (_local4 < _local2.pointCount) {
_local5 = _local3.points[_local4];
_local6 = _local2.points[_local4];
_local5.normalImpulse = _local6.normalImpulse;
_local5.tangentImpulse = _local6.tangentImpulse;
_local4++;
};
_local1++;
};
}
}
}//package Box2D.Dynamics.Contacts
Section 47
//b2NullContact (Box2D.Dynamics.Contacts.b2NullContact)
package Box2D.Dynamics.Contacts {
import Box2D.Dynamics.*;
public class b2NullContact extends b2Contact {
override public function Evaluate(_arg1:b2ContactListener):void{
}
override public function GetManifolds():Array{
return (null);
}
}
}//package Box2D.Dynamics.Contacts
Section 48
//b2PolyAndCircleContact (Box2D.Dynamics.Contacts.b2PolyAndCircleContact)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolyAndCircleContact extends b2Contact {
private var m_manifolds:Array;
public var m_manifold:b2Manifold;
private var m0:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolyAndCircleContact(_arg1:b2Shape, _arg2:b2Shape){
m_manifolds = [new b2Manifold()];
m0 = new b2Manifold();
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
b2Settings.b2Assert((m_shape1.m_type == b2Shape.e_polygonShape));
b2Settings.b2Assert((m_shape2.m_type == b2Shape.e_circleShape));
m_manifold.pointCount = 0;
var _local3:b2ManifoldPoint = m_manifold.points[0];
_local3.normalImpulse = 0;
_local3.tangentImpulse = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:int;
var _local3:b2Vec2;
var _local4:b2Vec2;
var _local5:b2ManifoldPoint;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local6:b2Body = m_shape1.m_body;
var _local7:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygonAndCircle(m_manifold, (m_shape1 as b2PolygonShape), _local6.m_xf, (m_shape2 as b2CircleShape), _local7.m_xf);
var _local8:Array = [false, false];
var _local9:b2ContactPoint = s_evalCP;
_local9.shape1 = m_shape1;
_local9.shape2 = m_shape2;
_local9.friction = m_friction;
_local9.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local2 = 0;
while (_local2 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local2];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local8[_local13] == true){
} else {
_local5 = m0.points[_local13];
if (_local5.id._key == _local12){
_local8[_local13] = true;
_local10.normalImpulse = _local5.normalImpulse;
_local10.tangentImpulse = _local5.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Persist(_local9);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local9.position = _local6.GetWorldPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m_manifold.normal);
_local9.separation = _local10.separation;
_local9.id.key = _local12;
_arg1.Add(_local9);
};
_local2++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local2 = 0;
while (_local2 < m0.pointCount) {
if (_local8[_local2]){
} else {
_local5 = m0.points[_local2];
_local9.position = _local6.GetWorldPoint(_local5.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local5.localPoint1);
_local4 = _local7.GetLinearVelocityFromLocalPoint(_local5.localPoint2);
_local9.velocity.Set((_local4.x - _local3.x), (_local4.y - _local3.y));
_local9.normal.SetV(m0.normal);
_local9.separation = _local5.separation;
_local9.id.key = _local5.id._key;
_arg1.Remove(_local9);
};
_local2++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolyAndCircleContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 49
//b2PolygonContact (Box2D.Dynamics.Contacts.b2PolygonContact)
package Box2D.Dynamics.Contacts {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2PolygonContact extends b2Contact {
private var m_manifolds:Array;
private var m0:b2Manifold;
public var m_manifold:b2Manifold;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2PolygonContact(_arg1:b2Shape, _arg2:b2Shape):void{
m0 = new b2Manifold();
m_manifolds = [new b2Manifold()];
super(_arg1, _arg2);
m_manifold = m_manifolds[0];
m_manifold.pointCount = 0;
}
override public function Evaluate(_arg1:b2ContactListener):void{
var _local2:b2Vec2;
var _local3:b2Vec2;
var _local4:b2ManifoldPoint;
var _local7:b2ContactPoint;
var _local8:int;
var _local10:b2ManifoldPoint;
var _local11:Boolean;
var _local12:uint;
var _local13:int;
var _local5:b2Body = m_shape1.m_body;
var _local6:b2Body = m_shape2.m_body;
m0.Set(m_manifold);
b2Collision.b2CollidePolygons(m_manifold, (m_shape1 as b2PolygonShape), _local5.m_xf, (m_shape2 as b2PolygonShape), _local6.m_xf);
var _local9:Array = [false, false];
_local7 = s_evalCP;
_local7.shape1 = m_shape1;
_local7.shape2 = m_shape2;
_local7.friction = m_friction;
_local7.restitution = m_restitution;
if (m_manifold.pointCount > 0){
_local8 = 0;
while (_local8 < m_manifold.pointCount) {
_local10 = m_manifold.points[_local8];
_local10.normalImpulse = 0;
_local10.tangentImpulse = 0;
_local11 = false;
_local12 = _local10.id._key;
_local13 = 0;
while (_local13 < m0.pointCount) {
if (_local9[_local13] == true){
} else {
_local4 = m0.points[_local13];
if (_local4.id._key == _local12){
_local9[_local13] = true;
_local10.normalImpulse = _local4.normalImpulse;
_local10.tangentImpulse = _local4.tangentImpulse;
_local11 = true;
if (_arg1 != null){
_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local10.separation;
_local7.id.key = _local12;
_arg1.Persist(_local7);
};
break;
};
};
_local13++;
};
if ((((_local11 == false)) && (!((_arg1 == null))))){
_local7.position = _local5.GetWorldPoint(_local10.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local10.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local10.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m_manifold.normal);
_local7.separation = _local10.separation;
_local7.id.key = _local12;
_arg1.Add(_local7);
};
_local8++;
};
m_manifoldCount = 1;
} else {
m_manifoldCount = 0;
};
if (_arg1 == null){
return;
};
_local8 = 0;
while (_local8 < m0.pointCount) {
if (_local9[_local8]){
} else {
_local4 = m0.points[_local8];
_local7.position = _local5.GetWorldPoint(_local4.localPoint1);
_local2 = _local5.GetLinearVelocityFromLocalPoint(_local4.localPoint1);
_local3 = _local6.GetLinearVelocityFromLocalPoint(_local4.localPoint2);
_local7.velocity.Set((_local3.x - _local2.x), (_local3.y - _local2.y));
_local7.normal.SetV(m0.normal);
_local7.separation = _local4.separation;
_local7.id.key = _local4.id._key;
_arg1.Remove(_local7);
};
_local8++;
};
}
override public function GetManifolds():Array{
return (m_manifolds);
}
public static function Destroy(_arg1:b2Contact, _arg2):void{
}
public static function Create(_arg1:b2Shape, _arg2:b2Shape, _arg3):b2Contact{
return (new b2PolygonContact(_arg1, _arg2));
}
}
}//package Box2D.Dynamics.Contacts
Section 50
//b2DistanceJoint (Box2D.Dynamics.Joints.b2DistanceJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2DistanceJoint extends b2Joint {
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_bias:Number;
public var m_gamma:Number;
public var m_u:b2Vec2;
public var m_mass:Number;
public var m_impulse:Number;
public var m_dampingRatio:Number;
public var m_frequencyHz:Number;
public var m_length:Number;
public function b2DistanceJoint(_arg1:b2DistanceJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u = new b2Vec2();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_length = _arg1.length;
m_frequencyHz = _arg1.frequencyHz;
m_dampingRatio = _arg1.dampingRatio;
m_impulse = 0;
m_gamma = 0;
m_bias = 0;
m_inv_dt = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Mat22;
var _local3:Number;
var _local4:b2Body;
var _local5:b2Body;
var _local6:Number;
var _local8:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
m_inv_dt = _arg1.inv_dt;
_local4 = m_body1;
_local5 = m_body2;
_local2 = _local4.m_xf.R;
_local6 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
_local3 = ((_local2.col1.x * _local6) + (_local2.col2.x * _local7));
_local7 = ((_local2.col1.y * _local6) + (_local2.col2.y * _local7));
_local6 = _local3;
_local2 = _local5.m_xf.R;
_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
_local3 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
_local8 = _local3;
m_u.x = (((_local5.m_sweep.c.x + _local8) - _local4.m_sweep.c.x) - _local6);
m_u.y = (((_local5.m_sweep.c.y + _local9) - _local4.m_sweep.c.y) - _local7);
var _local10:Number = Math.sqrt(((m_u.x * m_u.x) + (m_u.y * m_u.y)));
if (_local10 > b2Settings.b2_linearSlop){
m_u.Multiply((1 / _local10));
} else {
m_u.SetZero();
};
var _local11:Number = ((_local6 * m_u.y) - (_local7 * m_u.x));
var _local12:Number = ((_local8 * m_u.y) - (_local9 * m_u.x));
var _local13:Number = (((_local4.m_invMass + ((_local4.m_invI * _local11) * _local11)) + _local5.m_invMass) + ((_local5.m_invI * _local12) * _local12));
m_mass = (1 / _local13);
if (m_frequencyHz > 0){
_local14 = (_local10 - m_length);
_local15 = ((2 * Math.PI) * m_frequencyHz);
_local16 = (((2 * m_mass) * m_dampingRatio) * _local15);
_local17 = ((m_mass * _local15) * _local15);
m_gamma = (1 / (_arg1.dt * (_local16 + (_arg1.dt * _local17))));
m_bias = (((_local14 * _arg1.dt) * _local17) * m_gamma);
m_mass = (1 / (_local13 + m_gamma));
};
if (_arg1.warmStarting){
m_impulse = (m_impulse * _arg1.dtRatio);
_local18 = (m_impulse * m_u.x);
_local19 = (m_impulse * m_u.y);
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x - (_local4.m_invMass * _local18));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y - (_local4.m_invMass * _local19));
_local4.m_angularVelocity = (_local4.m_angularVelocity - (_local4.m_invI * ((_local6 * _local19) - (_local7 * _local18))));
_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + (_local5.m_invMass * _local18));
_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + (_local5.m_invMass * _local19));
_local5.m_angularVelocity = (_local5.m_angularVelocity + (_local5.m_invI * ((_local8 * _local19) - (_local9 * _local18))));
} else {
m_impulse = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = new b2Vec2();
_local1.SetV(m_u);
_local1.Multiply((m_inv_dt * m_impulse));
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local1:b2Mat22;
if (m_frequencyHz > 0){
return (true);
};
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local1 = _local2.m_xf.R;
var _local4:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local5:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local6:Number = ((_local1.col1.x * _local4) + (_local1.col2.x * _local5));
_local5 = ((_local1.col1.y * _local4) + (_local1.col2.y * _local5));
_local4 = _local6;
_local1 = _local3.m_xf.R;
var _local7:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local6 = ((_local1.col1.x * _local7) + (_local1.col2.x * _local8));
_local8 = ((_local1.col1.y * _local7) + (_local1.col2.y * _local8));
_local7 = _local6;
var _local9:Number = (((_local3.m_sweep.c.x + _local7) - _local2.m_sweep.c.x) - _local4);
var _local10:Number = (((_local3.m_sweep.c.y + _local8) - _local2.m_sweep.c.y) - _local5);
var _local11:Number = Math.sqrt(((_local9 * _local9) + (_local10 * _local10)));
_local9 = (_local9 / _local11);
_local10 = (_local10 / _local11);
var _local12:Number = (_local11 - m_length);
_local12 = b2Math.b2Clamp(_local12, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var _local13:Number = (-(m_mass) * _local12);
m_u.Set(_local9, _local10);
var _local14:Number = (_local13 * m_u.x);
var _local15:Number = (_local13 * m_u.y);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x - (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y - (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a - (_local2.m_invI * ((_local4 * _local15) - (_local5 * _local14))));
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + (_local3.m_invMass * _local14));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + (_local3.m_invMass * _local15));
_local3.m_sweep.a = (_local3.m_sweep.a + (_local3.m_invI * ((_local7 * _local15) - (_local8 * _local14))));
_local2.SynchronizeTransform();
_local3.SynchronizeTransform();
return ((b2Math.b2Abs(_local12) < b2Settings.b2_linearSlop));
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Mat22;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
_local2 = _local3.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
var _local7:Number = ((_local2.col1.x * _local5) + (_local2.col2.x * _local6));
_local6 = ((_local2.col1.y * _local5) + (_local2.col2.y * _local6));
_local5 = _local7;
_local2 = _local4.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local7 = ((_local2.col1.x * _local8) + (_local2.col2.x * _local9));
_local9 = ((_local2.col1.y * _local8) + (_local2.col2.y * _local9));
_local8 = _local7;
var _local10:Number = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local6));
var _local11:Number = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local5));
var _local12:Number = (_local4.m_linearVelocity.x + (-(_local4.m_angularVelocity) * _local9));
var _local13:Number = (_local4.m_linearVelocity.y + (_local4.m_angularVelocity * _local8));
var _local14:Number = ((m_u.x * (_local12 - _local10)) + (m_u.y * (_local13 - _local11)));
var _local15:Number = (-(m_mass) * ((_local14 + m_bias) + (m_gamma * m_impulse)));
m_impulse = (m_impulse + _local15);
var _local16:Number = (_local15 * m_u.x);
var _local17:Number = (_local15 * m_u.y);
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x - (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y - (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity - (_local3.m_invI * ((_local5 * _local17) - (_local6 * _local16))));
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + (_local4.m_invMass * _local16));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + (_local4.m_invMass * _local17));
_local4.m_angularVelocity = (_local4.m_angularVelocity + (_local4.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
}
}
}//package Box2D.Dynamics.Joints
Section 51
//b2DistanceJointDef (Box2D.Dynamics.Joints.b2DistanceJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2DistanceJointDef extends b2JointDef {
public var localAnchor1:b2Vec2;
public var length:Number;
public var dampingRatio:Number;
public var localAnchor2:b2Vec2;
public var frequencyHz:Number;
public function b2DistanceJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_distanceJoint;
length = 1;
frequencyHz = 0;
dampingRatio = 0;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1.SetV(body1.GetLocalPoint(_arg3));
localAnchor2.SetV(body2.GetLocalPoint(_arg4));
var _local5:Number = (_arg4.x - _arg3.x);
var _local6:Number = (_arg4.y - _arg3.y);
length = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
frequencyHz = 0;
dampingRatio = 0;
}
}
}//package Box2D.Dynamics.Joints
Section 52
//b2GearJoint (Box2D.Dynamics.Joints.b2GearJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2GearJoint extends b2Joint {
public var m_ground2:b2Body;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_ratio:Number;
public var m_revolute2:b2RevoluteJoint;
public var m_force:Number;
public var m_mass:Number;
public var m_prismatic2:b2PrismaticJoint;
public var m_ground1:b2Body;
public var m_revolute1:b2RevoluteJoint;
public var m_prismatic1:b2PrismaticJoint;
public var m_constant:Number;
public var m_J:b2Jacobian;
public function b2GearJoint(_arg1:b2GearJointDef){
var _local4:Number;
var _local5:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_J = new b2Jacobian();
super(_arg1);
var _local2:int = _arg1.joint1.m_type;
var _local3:int = _arg1.joint2.m_type;
m_revolute1 = null;
m_prismatic1 = null;
m_revolute2 = null;
m_prismatic2 = null;
m_ground1 = _arg1.joint1.m_body1;
m_body1 = _arg1.joint1.m_body2;
if (_local2 == b2Joint.e_revoluteJoint){
m_revolute1 = (_arg1.joint1 as b2RevoluteJoint);
m_groundAnchor1.SetV(m_revolute1.m_localAnchor1);
m_localAnchor1.SetV(m_revolute1.m_localAnchor2);
_local4 = m_revolute1.GetJointAngle();
} else {
m_prismatic1 = (_arg1.joint1 as b2PrismaticJoint);
m_groundAnchor1.SetV(m_prismatic1.m_localAnchor1);
m_localAnchor1.SetV(m_prismatic1.m_localAnchor2);
_local4 = m_prismatic1.GetJointTranslation();
};
m_ground2 = _arg1.joint2.m_body1;
m_body2 = _arg1.joint2.m_body2;
if (_local3 == b2Joint.e_revoluteJoint){
m_revolute2 = (_arg1.joint2 as b2RevoluteJoint);
m_groundAnchor2.SetV(m_revolute2.m_localAnchor1);
m_localAnchor2.SetV(m_revolute2.m_localAnchor2);
_local5 = m_revolute2.GetJointAngle();
} else {
m_prismatic2 = (_arg1.joint2 as b2PrismaticJoint);
m_groundAnchor2.SetV(m_prismatic2.m_localAnchor1);
m_localAnchor2.SetV(m_prismatic2.m_localAnchor2);
_local5 = m_prismatic2.GetJointTranslation();
};
m_ratio = _arg1.ratio;
m_constant = (_local4 + (m_ratio * _local5));
m_force = 0;
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:b2Mat22;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
var _local15:Number;
var _local2:b2Body = m_ground1;
var _local3:b2Body = m_ground2;
var _local4:b2Body = m_body1;
var _local5:b2Body = m_body2;
var _local14:Number = 0;
m_J.SetZero();
if (m_revolute1){
m_J.angular1 = -1;
_local14 = (_local14 + _local4.m_invI);
} else {
_local10 = _local2.m_xf.R;
_local11 = m_prismatic1.m_localXAxis1;
_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
_local10 = _local4.m_xf.R;
_local8 = (m_localAnchor1.x - _local4.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local4.m_sweep.localCenter.y);
_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
_local8 = _local13;
_local12 = ((_local8 * _local7) - (_local9 * _local6));
m_J.linear1.Set(-(_local6), -(_local7));
m_J.angular1 = -(_local12);
_local14 = (_local14 + (_local4.m_invMass + ((_local4.m_invI * _local12) * _local12)));
};
if (m_revolute2){
m_J.angular2 = -(m_ratio);
_local14 = (_local14 + ((m_ratio * m_ratio) * _local5.m_invI));
} else {
_local10 = _local3.m_xf.R;
_local11 = m_prismatic2.m_localXAxis1;
_local6 = ((_local10.col1.x * _local11.x) + (_local10.col2.x * _local11.y));
_local7 = ((_local10.col1.y * _local11.x) + (_local10.col2.y * _local11.y));
_local10 = _local5.m_xf.R;
_local8 = (m_localAnchor2.x - _local5.m_sweep.localCenter.x);
_local9 = (m_localAnchor2.y - _local5.m_sweep.localCenter.y);
_local13 = ((_local10.col1.x * _local8) + (_local10.col2.x * _local9));
_local9 = ((_local10.col1.y * _local8) + (_local10.col2.y * _local9));
_local8 = _local13;
_local12 = ((_local8 * _local7) - (_local9 * _local6));
m_J.linear2.Set((-(m_ratio) * _local6), (-(m_ratio) * _local7));
m_J.angular2 = (-(m_ratio) * _local12);
_local14 = (_local14 + ((m_ratio * m_ratio) * (_local5.m_invMass + ((_local5.m_invI * _local12) * _local12))));
};
m_mass = (1 / _local14);
if (_arg1.warmStarting){
_local15 = (_arg1.dt * m_force);
_local4.m_linearVelocity.x = (_local4.m_linearVelocity.x + ((_local4.m_invMass * _local15) * m_J.linear1.x));
_local4.m_linearVelocity.y = (_local4.m_linearVelocity.y + ((_local4.m_invMass * _local15) * m_J.linear1.y));
_local4.m_angularVelocity = (_local4.m_angularVelocity + ((_local4.m_invI * _local15) * m_J.angular1));
_local5.m_linearVelocity.x = (_local5.m_linearVelocity.x + ((_local5.m_invMass * _local15) * m_J.linear2.x));
_local5.m_linearVelocity.y = (_local5.m_linearVelocity.y + ((_local5.m_invMass * _local15) * m_J.linear2.y));
_local5.m_angularVelocity = (_local5.m_angularVelocity + ((_local5.m_invI * _local15) * m_J.angular2));
} else {
m_force = 0;
};
}
override public function GetReactionTorque():Number{
var _local1:b2Mat22 = m_body2.m_xf.R;
var _local2:Number = (m_localAnchor1.x - m_body2.m_sweep.localCenter.x);
var _local3:Number = (m_localAnchor1.y - m_body2.m_sweep.localCenter.y);
var _local4:Number = ((_local1.col1.x * _local2) + (_local1.col2.x * _local3));
_local3 = ((_local1.col1.y * _local2) + (_local1.col2.y * _local3));
_local2 = _local4;
_local4 = ((m_force * m_J.angular2) - ((_local2 * (m_force * m_J.linear2.y)) - (_local3 * (m_force * m_J.linear2.x))));
return (_local4);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = new b2Vec2((m_force * m_J.linear2.x), (m_force * m_J.linear2.y));
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local4:Number;
var _local5:Number;
var _local1:Number = 0;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
if (m_revolute1){
_local4 = m_revolute1.GetJointAngle();
} else {
_local4 = m_prismatic1.GetJointTranslation();
};
if (m_revolute2){
_local5 = m_revolute2.GetJointAngle();
} else {
_local5 = m_prismatic2.GetJointTranslation();
};
var _local6:Number = (m_constant - (_local4 + (m_ratio * _local5)));
var _local7:Number = (-(m_mass) * _local6);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + ((_local2.m_invMass * _local7) * m_J.linear1.x));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + ((_local2.m_invMass * _local7) * m_J.linear1.y));
_local2.m_sweep.a = (_local2.m_sweep.a + ((_local2.m_invI * _local7) * m_J.angular1));
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local3.m_invMass * _local7) * m_J.linear2.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local3.m_invMass * _local7) * m_J.linear2.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local3.m_invI * _local7) * m_J.angular2));
_local2.SynchronizeTransform();
_local3.SynchronizeTransform();
return ((_local1 < b2Settings.b2_linearSlop));
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
var _local4:Number = m_J.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
var _local5:Number = ((-(_arg1.inv_dt) * m_mass) * _local4);
m_force = (m_force + _local5);
var _local6:Number = (_arg1.dt * _local5);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local2.m_invMass * _local6) * m_J.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local2.m_invMass * _local6) * m_J.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local2.m_invI * _local6) * m_J.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local3.m_invMass * _local6) * m_J.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local3.m_invMass * _local6) * m_J.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _local6) * m_J.angular2));
}
}
}//package Box2D.Dynamics.Joints
Section 53
//b2GearJointDef (Box2D.Dynamics.Joints.b2GearJointDef)
package Box2D.Dynamics.Joints {
public class b2GearJointDef extends b2JointDef {
public var joint1:b2Joint;
public var joint2:b2Joint;
public var ratio:Number;
public function b2GearJointDef(){
type = b2Joint.e_gearJoint;
joint1 = null;
joint2 = null;
ratio = 1;
}
}
}//package Box2D.Dynamics.Joints
Section 54
//b2Jacobian (Box2D.Dynamics.Joints.b2Jacobian)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2Jacobian {
public var linear1:b2Vec2;
public var linear2:b2Vec2;
public var angular1:Number;
public var angular2:Number;
public function b2Jacobian(){
linear1 = new b2Vec2();
linear2 = new b2Vec2();
super();
}
public function Set(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):void{
linear1.SetV(_arg1);
angular1 = _arg2;
linear2.SetV(_arg3);
angular2 = _arg4;
}
public function SetZero():void{
linear1.SetZero();
angular1 = 0;
linear2.SetZero();
angular2 = 0;
}
public function Compute(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:Number):Number{
return ((((((linear1.x * _arg1.x) + (linear1.y * _arg1.y)) + (angular1 * _arg2)) + ((linear2.x * _arg3.x) + (linear2.y * _arg3.y))) + (angular2 * _arg4)));
}
}
}//package Box2D.Dynamics.Joints
Section 55
//b2Joint (Box2D.Dynamics.Joints.b2Joint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2Joint {
public var m_islandFlag:Boolean;
public var m_body1:b2Body;
public var m_prev:b2Joint;
public var m_next:b2Joint;
public var m_type:int;
public var m_collideConnected:Boolean;
public var m_node1:b2JointEdge;
public var m_node2:b2JointEdge;
public var m_inv_dt:Number;
public var m_userData;
public var m_body2:b2Body;
public static const e_unknownJoint:int = 0;
public static const e_inactiveLimit:int = 0;
public static const e_atUpperLimit:int = 2;
public static const e_atLowerLimit:int = 1;
public static const e_gearJoint:int = 6;
public static const e_revoluteJoint:int = 1;
public static const e_equalLimits:int = 3;
public static const e_distanceJoint:int = 3;
public static const e_pulleyJoint:int = 4;
public static const e_prismaticJoint:int = 2;
public static const e_mouseJoint:int = 5;
public function b2Joint(_arg1:b2JointDef){
m_node1 = new b2JointEdge();
m_node2 = new b2JointEdge();
super();
m_type = _arg1.type;
m_prev = null;
m_next = null;
m_body1 = _arg1.body1;
m_body2 = _arg1.body2;
m_collideConnected = _arg1.collideConnected;
m_islandFlag = false;
m_userData = _arg1.userData;
}
public function GetBody2():b2Body{
return (m_body2);
}
public function GetAnchor1():b2Vec2{
return (null);
}
public function GetAnchor2():b2Vec2{
return (null);
}
public function GetNext():b2Joint{
return (m_next);
}
public function GetType():int{
return (m_type);
}
public function InitVelocityConstraints(_arg1:b2TimeStep):void{
}
public function GetReactionTorque():Number{
return (0);
}
public function GetUserData(){
return (m_userData);
}
public function GetReactionForce():b2Vec2{
return (null);
}
public function SolvePositionConstraints():Boolean{
return (false);
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetBody1():b2Body{
return (m_body1);
}
public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
}
public function InitPositionConstraints():void{
}
public static function Destroy(_arg1:b2Joint, _arg2):void{
}
public static function Create(_arg1:b2JointDef, _arg2):b2Joint{
var _local3:b2Joint;
switch (_arg1.type){
case e_distanceJoint:
_local3 = new b2DistanceJoint((_arg1 as b2DistanceJointDef));
break;
case e_mouseJoint:
_local3 = new b2MouseJoint((_arg1 as b2MouseJointDef));
break;
case e_prismaticJoint:
_local3 = new b2PrismaticJoint((_arg1 as b2PrismaticJointDef));
break;
case e_revoluteJoint:
_local3 = new b2RevoluteJoint((_arg1 as b2RevoluteJointDef));
break;
case e_pulleyJoint:
_local3 = new b2PulleyJoint((_arg1 as b2PulleyJointDef));
break;
case e_gearJoint:
_local3 = new b2GearJoint((_arg1 as b2GearJointDef));
break;
default:
break;
};
return (_local3);
}
}
}//package Box2D.Dynamics.Joints
Section 56
//b2JointDef (Box2D.Dynamics.Joints.b2JointDef)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointDef {
public var body2:b2Body;
public var type:int;
public var userData;
public var collideConnected:Boolean;
public var body1:b2Body;
public function b2JointDef(){
type = b2Joint.e_unknownJoint;
userData = null;
body1 = null;
body2 = null;
collideConnected = false;
}
}
}//package Box2D.Dynamics.Joints
Section 57
//b2JointEdge (Box2D.Dynamics.Joints.b2JointEdge)
package Box2D.Dynamics.Joints {
import Box2D.Dynamics.*;
public class b2JointEdge {
public var other:b2Body;
public var next:b2JointEdge;
public var prev:b2JointEdge;
public var joint:b2Joint;
}
}//package Box2D.Dynamics.Joints
Section 58
//b2MouseJoint (Box2D.Dynamics.Joints.b2MouseJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2MouseJoint extends b2Joint {
private var K1:b2Mat22;
private var K:b2Mat22;
public var m_beta:Number;
public var m_mass:b2Mat22;
private var K2:b2Mat22;
public var m_target:b2Vec2;
public var m_gamma:Number;
public var m_impulse:b2Vec2;
public var m_C:b2Vec2;
public var m_localAnchor:b2Vec2;
public var m_maxForce:Number;
public function b2MouseJoint(_arg1:b2MouseJointDef){
var _local3:Number;
K = new b2Mat22();
K1 = new b2Mat22();
K2 = new b2Mat22();
m_localAnchor = new b2Vec2();
m_target = new b2Vec2();
m_impulse = new b2Vec2();
m_mass = new b2Mat22();
m_C = new b2Vec2();
super(_arg1);
m_target.SetV(_arg1.target);
var _local2:Number = (m_target.x - m_body2.m_xf.position.x);
_local3 = (m_target.y - m_body2.m_xf.position.y);
var _local4:b2Mat22 = m_body2.m_xf.R;
m_localAnchor.x = ((_local2 * _local4.col1.x) + (_local3 * _local4.col1.y));
m_localAnchor.y = ((_local2 * _local4.col2.x) + (_local3 * _local4.col2.y));
m_maxForce = _arg1.maxForce;
m_impulse.SetZero();
var _local5:Number = m_body2.m_mass;
var _local6:Number = ((2 * b2Settings.b2_pi) * _arg1.frequencyHz);
var _local7:Number = (((2 * _local5) * _arg1.dampingRatio) * _local6);
var _local8:Number = ((_arg1.timeStep * _local5) * (_local6 * _local6));
m_gamma = (1 / (_local7 + _local8));
m_beta = (_local8 / (_local7 + _local8));
}
public function SetTarget(_arg1:b2Vec2):void{
if (m_body2.IsSleeping()){
m_body2.WakeUp();
};
m_target = _arg1;
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Mat22;
var _local4:Number;
var _local5:Number;
var _local7:Number;
var _local8:Number;
_local2 = m_body2;
_local3 = _local2.m_xf.R;
_local4 = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
_local5 = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
_local4 = _local6;
_local7 = _local2.m_invMass;
_local8 = _local2.m_invI;
K1.col1.x = _local7;
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = _local7;
K2.col1.x = ((_local8 * _local5) * _local5);
K2.col2.x = ((-(_local8) * _local4) * _local5);
K2.col1.y = ((-(_local8) * _local4) * _local5);
K2.col2.y = ((_local8 * _local4) * _local4);
K.SetM(K1);
K.AddM(K2);
K.col1.x = (K.col1.x + m_gamma);
K.col2.y = (K.col2.y + m_gamma);
K.Invert(m_mass);
m_C.x = ((_local2.m_sweep.c.x + _local4) - m_target.x);
m_C.y = ((_local2.m_sweep.c.y + _local5) - m_target.y);
_local2.m_angularVelocity = (_local2.m_angularVelocity * 0.98);
var _local9:Number = (_arg1.dt * m_impulse.x);
var _local10:Number = (_arg1.dt * m_impulse.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local7 * _local9));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local7 * _local10));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local8 * ((_local4 * _local10) - (_local5 * _local9))));
}
override public function GetAnchor1():b2Vec2{
return (m_target);
}
override public function GetReactionTorque():Number{
return (0);
}
override public function GetReactionForce():b2Vec2{
return (m_impulse);
}
override public function SolvePositionConstraints():Boolean{
return (true);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local3:b2Mat22;
var _local4:Number;
var _local5:Number;
var _local2:b2Body = m_body2;
_local3 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor.y - _local2.m_sweep.localCenter.y);
_local4 = ((_local3.col1.x * _local6) + (_local3.col2.x * _local7));
_local7 = ((_local3.col1.y * _local6) + (_local3.col2.y * _local7));
_local6 = _local4;
var _local8:Number = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local7));
var _local9:Number = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local6));
_local3 = m_mass;
_local4 = ((_local8 + ((m_beta * _arg1.inv_dt) * m_C.x)) + ((m_gamma * _arg1.dt) * m_impulse.x));
_local5 = ((_local9 + ((m_beta * _arg1.inv_dt) * m_C.y)) + ((m_gamma * _arg1.dt) * m_impulse.y));
var _local10:Number = (-(_arg1.inv_dt) * ((_local3.col1.x * _local4) + (_local3.col2.x * _local5)));
var _local11:Number = (-(_arg1.inv_dt) * ((_local3.col1.y * _local4) + (_local3.col2.y * _local5)));
var _local12:Number = m_impulse.x;
var _local13:Number = m_impulse.y;
m_impulse.x = (m_impulse.x + _local10);
m_impulse.y = (m_impulse.y + _local11);
var _local14:Number = m_impulse.Length();
if (_local14 > m_maxForce){
m_impulse.Multiply((m_maxForce / _local14));
};
_local10 = (m_impulse.x - _local12);
_local11 = (m_impulse.y - _local13);
var _local15:Number = (_arg1.dt * _local10);
var _local16:Number = (_arg1.dt * _local11);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local15));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local16));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
}
}
}//package Box2D.Dynamics.Joints
Section 59
//b2MouseJointDef (Box2D.Dynamics.Joints.b2MouseJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
public class b2MouseJointDef extends b2JointDef {
public var timeStep:Number;
public var target:b2Vec2;
public var maxForce:Number;
public var dampingRatio:Number;
public var frequencyHz:Number;
public function b2MouseJointDef(){
target = new b2Vec2();
super();
type = b2Joint.e_mouseJoint;
maxForce = 0;
frequencyHz = 5;
dampingRatio = 0.7;
timeStep = (1 / 60);
}
}
}//package Box2D.Dynamics.Joints
Section 60
//b2PrismaticJoint (Box2D.Dynamics.Joints.b2PrismaticJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2PrismaticJoint extends b2Joint {
public var m_limitForce:Number;
public var m_lowerTranslation:Number;
public var m_localXAxis1:b2Vec2;
public var m_refAngle:Number;
public var m_torque:Number;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_angularMass:Number;
public var m_maxMotorForce:Number;
public var m_localYAxis1:b2Vec2;
public var m_force:Number;
public var m_motorMass:Number;
public var m_upperTranslation:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitState:int;
public var m_linearMass:Number;
public var m_motorJacobian:b2Jacobian;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_enableMotor:Boolean;
public var m_linearJacobian:b2Jacobian;
public function b2PrismaticJoint(_arg1:b2PrismaticJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_localXAxis1 = new b2Vec2();
m_localYAxis1 = new b2Vec2();
m_linearJacobian = new b2Jacobian();
m_motorJacobian = new b2Jacobian();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_localXAxis1.SetV(_arg1.localAxis1);
m_localYAxis1.x = -(m_localXAxis1.y);
m_localYAxis1.y = m_localXAxis1.x;
m_refAngle = _arg1.referenceAngle;
m_linearJacobian.SetZero();
m_linearMass = 0;
m_force = 0;
m_angularMass = 0;
m_torque = 0;
m_motorJacobian.SetZero();
m_motorMass = 0;
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerTranslation = _arg1.lowerTranslation;
m_upperTranslation = _arg1.upperTranslation;
m_maxMotorForce = _arg1.maxMotorForce;
m_motorSpeed = _arg1.motorSpeed;
m_enableLimit = _arg1.enableLimit;
m_enableMotor = _arg1.enableMotor;
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local8:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
var _local4:Number = _local2.m_invMass;
var _local5:Number = _local3.m_invMass;
var _local6:Number = _local2.m_invI;
var _local7:Number = _local3.m_invI;
var _local9:Number = m_linearJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
var _local10:Number = ((-(_arg1.inv_dt) * m_linearMass) * _local9);
m_force = (m_force + _local10);
var _local11:Number = (_arg1.dt * _local10);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_linearJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_linearJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_linearJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_linearJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_linearJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_linearJacobian.angular2));
var _local12:Number = (_local3.m_angularVelocity - _local2.m_angularVelocity);
var _local13:Number = ((-(_arg1.inv_dt) * m_angularMass) * _local12);
m_torque = (m_torque + _local13);
var _local14:Number = (_arg1.dt * _local13);
_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local6 * _local14));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local7 * _local14));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
_local15 = (m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity) - m_motorSpeed);
_local16 = ((-(_arg1.inv_dt) * m_motorMass) * _local15);
_local17 = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + _local16), -(m_maxMotorForce), m_maxMotorForce);
_local16 = (m_motorForce - _local17);
_local11 = (_arg1.dt * _local16);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local18 = m_motorJacobian.Compute(_local2.m_linearVelocity, _local2.m_angularVelocity, _local3.m_linearVelocity, _local3.m_angularVelocity);
_local19 = ((-(_arg1.inv_dt) * m_motorMass) * _local18);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + _local19);
} else {
if (m_limitState == e_atLowerLimit){
_local8 = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + _local19), 0);
_local19 = (m_limitForce - _local8);
} else {
if (m_limitState == e_atUpperLimit){
_local8 = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + _local19), 0);
_local19 = (m_limitForce - _local8);
};
};
};
_local11 = (_arg1.dt * _local19);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + ((_local4 * _local11) * m_motorJacobian.linear1.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + ((_local4 * _local11) * m_motorJacobian.linear1.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity + ((_local6 * _local11) * m_motorJacobian.angular1));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_local5 * _local11) * m_motorJacobian.linear2.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_local5 * _local11) * m_motorJacobian.linear2.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local7 * _local11) * m_motorJacobian.angular2));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperTranslation);
}
public function GetLowerLimit():Number{
return (m_lowerTranslation);
}
public function EnableMotor(_arg1:Boolean):void{
m_enableMotor = _arg1;
}
public function GetJointTranslation():Number{
var _local3:b2Mat22;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
var _local4:b2Vec2 = _local1.GetWorldPoint(m_localAnchor1);
var _local5:b2Vec2 = _local2.GetWorldPoint(m_localAnchor2);
var _local6:Number = (_local5.x - _local4.x);
var _local7:Number = (_local5.y - _local4.y);
var _local8:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
var _local9:Number = ((_local8.x * _local6) + (_local8.y * _local7));
return (_local9);
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Mat22 = m_body1.m_xf.R;
var _local2:Number = (m_limitForce * ((_local1.col1.x * m_localXAxis1.x) + (_local1.col2.x * m_localXAxis1.y)));
var _local3:Number = (m_limitForce * ((_local1.col1.y * m_localXAxis1.x) + (_local1.col2.y * m_localXAxis1.y)));
var _local4:Number = (m_force * ((_local1.col1.x * m_localYAxis1.x) + (_local1.col2.x * m_localYAxis1.y)));
var _local5:Number = (m_force * ((_local1.col1.y * m_localYAxis1.x) + (_local1.col2.y * m_localYAxis1.y)));
return (new b2Vec2(((m_limitForce * _local2) + (m_force * _local4)), ((m_limitForce * _local3) + (m_force * _local5))));
}
override public function SolvePositionConstraints():Boolean{
var _local1:Number;
var _local2:Number;
var _local9:b2Mat22;
var _local10:Number;
var _local29:Number;
var _local30:Number;
var _local31:Number;
var _local32:Number;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
var _local5:Number = _local3.m_invMass;
var _local6:Number = _local4.m_invMass;
var _local7:Number = _local3.m_invI;
var _local8:Number = _local4.m_invI;
_local9 = _local3.m_xf.R;
var _local11:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local12:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
_local11 = _local10;
_local9 = _local4.m_xf.R;
var _local13:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local14:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
_local13 = _local10;
var _local15:Number = (_local3.m_sweep.c.x + _local11);
var _local16:Number = (_local3.m_sweep.c.y + _local12);
var _local17:Number = (_local4.m_sweep.c.x + _local13);
var _local18:Number = (_local4.m_sweep.c.y + _local14);
var _local19:Number = (_local17 - _local15);
var _local20:Number = (_local18 - _local16);
_local9 = _local3.m_xf.R;
var _local21:Number = ((_local9.col1.x * m_localYAxis1.x) + (_local9.col2.x * m_localYAxis1.y));
var _local22:Number = ((_local9.col1.y * m_localYAxis1.x) + (_local9.col2.y * m_localYAxis1.y));
var _local23:Number = ((_local21 * _local19) + (_local22 * _local20));
_local23 = b2Math.b2Clamp(_local23, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
var _local24:Number = (-(m_linearMass) * _local23);
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local24) * m_linearJacobian.linear1.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local24) * m_linearJacobian.linear1.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local24) * m_linearJacobian.angular1));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local24) * m_linearJacobian.linear2.x));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local24) * m_linearJacobian.linear2.y));
_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local24) * m_linearJacobian.angular2));
var _local25:Number = b2Math.b2Abs(_local23);
var _local26:Number = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_refAngle);
_local26 = b2Math.b2Clamp(_local26, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
var _local27:Number = (-(m_angularMass) * _local26);
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local27));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local27));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
var _local28:Number = b2Math.b2Abs(_local26);
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local9 = _local3.m_xf.R;
_local11 = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
_local12 = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local11) + (_local9.col2.x * _local12));
_local12 = ((_local9.col1.y * _local11) + (_local9.col2.y * _local12));
_local11 = _local10;
_local9 = _local4.m_xf.R;
_local13 = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
_local14 = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local10 = ((_local9.col1.x * _local13) + (_local9.col2.x * _local14));
_local14 = ((_local9.col1.y * _local13) + (_local9.col2.y * _local14));
_local13 = _local10;
_local15 = (_local3.m_sweep.c.x + _local11);
_local16 = (_local3.m_sweep.c.y + _local12);
_local17 = (_local4.m_sweep.c.x + _local13);
_local18 = (_local4.m_sweep.c.y + _local14);
_local19 = (_local17 - _local15);
_local20 = (_local18 - _local16);
_local9 = _local3.m_xf.R;
_local29 = ((_local9.col1.x * m_localXAxis1.x) + (_local9.col2.x * m_localXAxis1.y));
_local30 = ((_local9.col1.y * m_localXAxis1.x) + (_local9.col2.y * m_localXAxis1.y));
_local31 = ((_local29 * _local19) + (_local30 * _local20));
_local32 = 0;
if (m_limitState == e_equalLimits){
_local1 = b2Math.b2Clamp(_local31, -(b2Settings.b2_maxLinearCorrection), b2Settings.b2_maxLinearCorrection);
_local32 = (-(m_motorMass) * _local1);
_local25 = b2Math.b2Max(_local25, b2Math.b2Abs(_local26));
} else {
if (m_limitState == e_atLowerLimit){
_local1 = (_local31 - m_lowerTranslation);
_local25 = b2Math.b2Max(_local25, -(_local1));
_local1 = b2Math.b2Clamp((_local1 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local32 = (-(m_motorMass) * _local1);
_local2 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local32), 0);
_local32 = (m_limitPositionImpulse - _local2);
} else {
if (m_limitState == e_atUpperLimit){
_local1 = (_local31 - m_upperTranslation);
_local25 = b2Math.b2Max(_local25, _local1);
_local1 = b2Math.b2Clamp((_local1 - b2Settings.b2_linearSlop), 0, b2Settings.b2_maxLinearCorrection);
_local32 = (-(m_motorMass) * _local1);
_local2 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local32), 0);
_local32 = (m_limitPositionImpulse - _local2);
};
};
};
_local3.m_sweep.c.x = (_local3.m_sweep.c.x + ((_local5 * _local32) * m_motorJacobian.linear1.x));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y + ((_local5 * _local32) * m_motorJacobian.linear1.y));
_local3.m_sweep.a = (_local3.m_sweep.a + ((_local7 * _local32) * m_motorJacobian.angular1));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + ((_local6 * _local32) * m_motorJacobian.linear2.x));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + ((_local6 * _local32) * m_motorJacobian.linear2.y));
_local4.m_sweep.a = (_local4.m_sweep.a + ((_local8 * _local32) * m_motorJacobian.angular2));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
};
return ((((_local25 <= b2Settings.b2_linearSlop)) && ((_local28 <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(_arg1:Number):void{
m_motorSpeed = _arg1;
}
public function GetJointSpeed():Number{
var _local3:b2Mat22;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
_local3 = _local1.m_xf.R;
var _local4:Number = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
var _local5:Number = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
var _local6:Number = ((_local3.col1.x * _local4) + (_local3.col2.x * _local5));
_local5 = ((_local3.col1.y * _local4) + (_local3.col2.y * _local5));
_local4 = _local6;
_local3 = _local2.m_xf.R;
var _local7:Number = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local6 = ((_local3.col1.x * _local7) + (_local3.col2.x * _local8));
_local8 = ((_local3.col1.y * _local7) + (_local3.col2.y * _local8));
_local7 = _local6;
var _local9:Number = (_local1.m_sweep.c.x + _local4);
var _local10:Number = (_local1.m_sweep.c.y + _local5);
var _local11:Number = (_local2.m_sweep.c.x + _local7);
var _local12:Number = (_local2.m_sweep.c.y + _local8);
var _local13:Number = (_local11 - _local9);
var _local14:Number = (_local12 - _local10);
var _local15:b2Vec2 = _local1.GetWorldVector(m_localXAxis1);
var _local16:b2Vec2 = _local1.m_linearVelocity;
var _local17:b2Vec2 = _local2.m_linearVelocity;
var _local18:Number = _local1.m_angularVelocity;
var _local19:Number = _local2.m_angularVelocity;
var _local20:Number = (((_local13 * (-(_local18) * _local15.y)) + (_local14 * (_local18 * _local15.x))) + ((_local15.x * (((_local17.x + (-(_local19) * _local8)) - _local16.x) - (-(_local18) * _local5))) + (_local15.y * (((_local17.y + (_local19 * _local7)) - _local16.y) - (_local18 * _local4)))));
return (_local20);
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local5:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local27:Number;
var _local28:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local10:Number = _local2.m_invMass;
var _local11:Number = _local3.m_invMass;
var _local12:Number = _local2.m_invI;
var _local13:Number = _local3.m_invI;
_local4 = _local2.m_xf.R;
var _local14:Number = ((_local4.col1.x * m_localYAxis1.x) + (_local4.col2.x * m_localYAxis1.y));
var _local15:Number = ((_local4.col1.y * m_localYAxis1.x) + (_local4.col2.y * m_localYAxis1.y));
var _local16:Number = ((_local3.m_sweep.c.x + _local8) - _local2.m_sweep.c.x);
var _local17:Number = ((_local3.m_sweep.c.y + _local9) - _local2.m_sweep.c.y);
m_linearJacobian.linear1.x = -(_local14);
m_linearJacobian.linear1.y = -(_local15);
m_linearJacobian.linear2.x = _local14;
m_linearJacobian.linear2.y = _local15;
m_linearJacobian.angular1 = -(((_local16 * _local15) - (_local17 * _local14)));
m_linearJacobian.angular2 = ((_local8 * _local15) - (_local9 * _local14));
m_linearMass = (((_local10 + ((_local12 * m_linearJacobian.angular1) * m_linearJacobian.angular1)) + _local11) + ((_local13 * m_linearJacobian.angular2) * m_linearJacobian.angular2));
m_linearMass = (1 / m_linearMass);
m_angularMass = (_local12 + _local13);
if (m_angularMass > Number.MIN_VALUE){
m_angularMass = (1 / m_angularMass);
};
if (((m_enableLimit) || (m_enableMotor))){
_local4 = _local2.m_xf.R;
_local18 = ((_local4.col1.x * m_localXAxis1.x) + (_local4.col2.x * m_localXAxis1.y));
_local19 = ((_local4.col1.y * m_localXAxis1.x) + (_local4.col2.y * m_localXAxis1.y));
m_motorJacobian.linear1.x = -(_local18);
m_motorJacobian.linear1.y = -(_local19);
m_motorJacobian.linear2.x = _local18;
m_motorJacobian.linear2.y = _local19;
m_motorJacobian.angular1 = -(((_local16 * _local19) - (_local17 * _local18)));
m_motorJacobian.angular2 = ((_local8 * _local19) - (_local9 * _local18));
m_motorMass = (((_local10 + ((_local12 * m_motorJacobian.angular1) * m_motorJacobian.angular1)) + _local11) + ((_local13 * m_motorJacobian.angular2) * m_motorJacobian.angular2));
m_motorMass = (1 / m_motorMass);
if (m_enableLimit){
_local20 = (_local16 - _local6);
_local21 = (_local17 - _local7);
_local22 = ((_local18 * _local20) + (_local19 * _local21));
if (b2Math.b2Abs((m_upperTranslation - m_lowerTranslation)) < (2 * b2Settings.b2_linearSlop)){
m_limitState = e_equalLimits;
} else {
if (_local22 <= m_lowerTranslation){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (_local22 >= m_upperTranslation){
if (m_limitState != e_atUpperLimit){
m_limitForce = 0;
};
m_limitState = e_atUpperLimit;
} else {
m_limitState = e_inactiveLimit;
m_limitForce = 0;
};
};
};
};
};
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit == false){
m_limitForce = 0;
};
if (_arg1.warmStarting){
_local23 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.x)));
_local24 = (_arg1.dt * ((m_force * m_linearJacobian.linear1.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear1.y)));
_local25 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.x) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.x)));
_local26 = (_arg1.dt * ((m_force * m_linearJacobian.linear2.y) + ((m_motorForce + m_limitForce) * m_motorJacobian.linear2.y)));
_local27 = (_arg1.dt * (((m_force * m_linearJacobian.angular1) - m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular1)));
_local28 = (_arg1.dt * (((m_force * m_linearJacobian.angular2) + m_torque) + ((m_motorForce + m_limitForce) * m_motorJacobian.angular2)));
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local10 * _local23));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local10 * _local24));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local12 * _local27));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local11 * _local25));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local11 * _local26));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local13 * _local28));
} else {
m_force = 0;
m_torque = 0;
m_limitForce = 0;
m_motorForce = 0;
};
m_limitPositionImpulse = 0;
}
public function GetMotorForce():Number{
return (m_motorForce);
}
public function EnableLimit(_arg1:Boolean):void{
m_enableLimit = _arg1;
}
public function SetMaxMotorForce(_arg1:Number):void{
m_maxMotorForce = _arg1;
}
override public function GetReactionTorque():Number{
return (m_torque);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(_arg1:Number, _arg2:Number):void{
m_lowerTranslation = _arg1;
m_upperTranslation = _arg2;
}
}
}//package Box2D.Dynamics.Joints
Section 61
//b2PrismaticJointDef (Box2D.Dynamics.Joints.b2PrismaticJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PrismaticJointDef extends b2JointDef {
public var motorSpeed:Number;
public var localAxis1:b2Vec2;
public var referenceAngle:Number;
public var upperTranslation:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var enableMotor:Boolean;
public var maxMotorForce:Number;
public var lowerTranslation:Number;
public function b2PrismaticJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
localAxis1 = new b2Vec2();
super();
type = b2Joint.e_prismaticJoint;
localAxis1.Set(1, 0);
referenceAngle = 0;
enableLimit = false;
lowerTranslation = 0;
upperTranslation = 0;
enableMotor = false;
maxMotorForce = 0;
motorSpeed = 0;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1 = body1.GetLocalPoint(_arg3);
localAnchor2 = body2.GetLocalPoint(_arg3);
localAxis1 = body1.GetLocalVector(_arg4);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 62
//b2PulleyJoint (Box2D.Dynamics.Joints.b2PulleyJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
import Types.*;
public class b2PulleyJoint extends b2Joint {
public var m_limitState1:int;
public var m_limitState2:int;
public var m_ground:b2Body;
public var m_maxLength2:Number;
public var m_maxLength1:Number;
public var m_limitPositionImpulse1:Number;
public var m_limitPositionImpulse2:Number;
public var m_force:Number;
public var m_constant:Number;
public var m_positionImpulse:Number;
public var m_state:int;
public var m_ratio:Number;
public var m_groundAnchor1:b2Vec2;
public var m_groundAnchor2:b2Vec2;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
public var m_limitMass1:Number;
public var m_limitMass2:Number;
public var m_pulleyMass:Number;
public var m_u1:b2Vec2;
public var m_limitForce1:Number;
public var m_limitForce2:Number;
public var m_u2:b2Vec2;
public static const b2_minPulleyLength:Number = 1;
public function b2PulleyJoint(_arg1:b2PulleyJointDef){
var _local2:b2Mat22;
var _local3:Number;
var _local4:Number;
m_groundAnchor1 = new b2Vec2();
m_groundAnchor2 = new b2Vec2();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_u1 = new b2Vec2();
m_u2 = new b2Vec2();
super(_arg1);
m_ground = m_body1.m_world.m_groundBody;
m_groundAnchor1.x = (_arg1.groundAnchor1.x - m_ground.m_xf.position.x);
m_groundAnchor1.y = (_arg1.groundAnchor1.y - m_ground.m_xf.position.y);
m_groundAnchor2.x = (_arg1.groundAnchor2.x - m_ground.m_xf.position.x);
m_groundAnchor2.y = (_arg1.groundAnchor2.y - m_ground.m_xf.position.y);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_ratio = _arg1.ratio;
m_constant = (_arg1.length1 + (m_ratio * _arg1.length2));
m_maxLength1 = b2Math.b2Min(_arg1.maxLength1, (m_constant - (m_ratio * b2_minPulleyLength)));
m_maxLength2 = b2Math.b2Min(_arg1.maxLength2, ((m_constant - b2_minPulleyLength) / m_ratio));
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
}
public function GetGroundAnchor2():b2Vec2{
var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
_local1.Add(m_groundAnchor2);
return (_local1);
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
override public function GetReactionForce():b2Vec2{
var _local1:b2Vec2 = m_u2.Copy();
_local1.Multiply(m_force);
return (_local1);
}
override public function SolvePositionConstraints():Boolean{
var _local3:b2Mat22;
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local22:Number;
var _local1:b2Body = m_body1;
var _local2:b2Body = m_body2;
var _local4:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local5:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local6:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local7:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var _local23:Number = 0;
if (m_state == e_atUpperLimit){
_local3 = _local1.m_xf.R;
_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
_local8 = _local22;
_local3 = _local2.m_xf.R;
_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
_local10 = _local22;
_local12 = (_local1.m_sweep.c.x + _local8);
_local13 = (_local1.m_sweep.c.y + _local9);
_local14 = (_local2.m_sweep.c.x + _local10);
_local15 = (_local2.m_sweep.c.y + _local11);
m_u1.Set((_local12 - _local4), (_local13 - _local5));
m_u2.Set((_local14 - _local6), (_local15 - _local7));
_local16 = m_u1.Length();
_local17 = m_u2.Length();
if (_local16 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / _local16));
} else {
m_u1.SetZero();
};
if (_local17 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / _local17));
} else {
m_u2.SetZero();
};
_local18 = ((m_constant - _local16) - (m_ratio * _local17));
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_pulleyMass) * _local18);
_local20 = m_positionImpulse;
m_positionImpulse = b2Math.b2Max(0, (m_positionImpulse + _local19));
_local19 = (m_positionImpulse - _local20);
_local12 = (-(_local19) * m_u1.x);
_local13 = (-(_local19) * m_u1.y);
_local14 = ((-(m_ratio) * _local19) * m_u2.x);
_local15 = ((-(m_ratio) * _local19) * m_u2.y);
_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
_local1.SynchronizeTransform();
_local2.SynchronizeTransform();
};
if (m_limitState1 == e_atUpperLimit){
_local3 = _local1.m_xf.R;
_local8 = (m_localAnchor1.x - _local1.m_sweep.localCenter.x);
_local9 = (m_localAnchor1.y - _local1.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local8) + (_local3.col2.x * _local9));
_local9 = ((_local3.col1.y * _local8) + (_local3.col2.y * _local9));
_local8 = _local22;
_local12 = (_local1.m_sweep.c.x + _local8);
_local13 = (_local1.m_sweep.c.y + _local9);
m_u1.Set((_local12 - _local4), (_local13 - _local5));
_local16 = m_u1.Length();
if (_local16 > b2Settings.b2_linearSlop){
m_u1.x = (m_u1.x * (1 / _local16));
m_u1.y = (m_u1.y * (1 / _local16));
} else {
m_u1.SetZero();
};
_local18 = (m_maxLength1 - _local16);
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_limitMass1) * _local18);
_local21 = m_limitPositionImpulse1;
m_limitPositionImpulse1 = b2Math.b2Max(0, (m_limitPositionImpulse1 + _local19));
_local19 = (m_limitPositionImpulse1 - _local21);
_local12 = (-(_local19) * m_u1.x);
_local13 = (-(_local19) * m_u1.y);
_local1.m_sweep.c.x = (_local1.m_sweep.c.x + (_local1.m_invMass * _local12));
_local1.m_sweep.c.y = (_local1.m_sweep.c.y + (_local1.m_invMass * _local13));
_local1.m_sweep.a = (_local1.m_sweep.a + (_local1.m_invI * ((_local8 * _local13) - (_local9 * _local12))));
_local1.SynchronizeTransform();
};
if (m_limitState2 == e_atUpperLimit){
_local3 = _local2.m_xf.R;
_local10 = (m_localAnchor2.x - _local2.m_sweep.localCenter.x);
_local11 = (m_localAnchor2.y - _local2.m_sweep.localCenter.y);
_local22 = ((_local3.col1.x * _local10) + (_local3.col2.x * _local11));
_local11 = ((_local3.col1.y * _local10) + (_local3.col2.y * _local11));
_local10 = _local22;
_local14 = (_local2.m_sweep.c.x + _local10);
_local15 = (_local2.m_sweep.c.y + _local11);
m_u2.Set((_local14 - _local6), (_local15 - _local7));
_local17 = m_u2.Length();
if (_local17 > b2Settings.b2_linearSlop){
m_u2.x = (m_u2.x * (1 / _local17));
m_u2.y = (m_u2.y * (1 / _local17));
} else {
m_u2.SetZero();
};
_local18 = (m_maxLength2 - _local17);
_local23 = b2Math.b2Max(_local23, -(_local18));
_local18 = b2Math.b2Clamp((_local18 + b2Settings.b2_linearSlop), -(b2Settings.b2_maxLinearCorrection), 0);
_local19 = (-(m_limitMass2) * _local18);
_local21 = m_limitPositionImpulse2;
m_limitPositionImpulse2 = b2Math.b2Max(0, (m_limitPositionImpulse2 + _local19));
_local19 = (m_limitPositionImpulse2 - _local21);
_local14 = (-(_local19) * m_u2.x);
_local15 = (-(_local19) * m_u2.y);
_local2.m_sweep.c.x = (_local2.m_sweep.c.x + (_local2.m_invMass * _local14));
_local2.m_sweep.c.y = (_local2.m_sweep.c.y + (_local2.m_invMass * _local15));
_local2.m_sweep.a = (_local2.m_sweep.a + (_local2.m_invI * ((_local10 * _local15) - (_local11 * _local14))));
_local2.SynchronizeTransform();
};
return ((_local23 < b2Settings.b2_linearSlop));
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
_local5 = _local7;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local7;
var _local10:Number = (_local2.m_sweep.c.x + _local5);
var _local11:Number = (_local2.m_sweep.c.y + _local6);
var _local12:Number = (_local3.m_sweep.c.x + _local8);
var _local13:Number = (_local3.m_sweep.c.y + _local9);
var _local14:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local15:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local16:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local17:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
m_u1.Set((_local10 - _local14), (_local11 - _local15));
m_u2.Set((_local12 - _local16), (_local13 - _local17));
var _local18:Number = m_u1.Length();
var _local19:Number = m_u2.Length();
if (_local18 > b2Settings.b2_linearSlop){
m_u1.Multiply((1 / _local18));
} else {
m_u1.SetZero();
};
if (_local19 > b2Settings.b2_linearSlop){
m_u2.Multiply((1 / _local19));
} else {
m_u2.SetZero();
};
var _local20:Number = ((m_constant - _local18) - (m_ratio * _local19));
if (_local20 > 0){
m_state = e_inactiveLimit;
m_force = 0;
} else {
m_state = e_atUpperLimit;
m_positionImpulse = 0;
};
if (_local18 < m_maxLength1){
m_limitState1 = e_inactiveLimit;
m_limitForce1 = 0;
} else {
m_limitState1 = e_atUpperLimit;
m_limitPositionImpulse1 = 0;
};
if (_local19 < m_maxLength2){
m_limitState2 = e_inactiveLimit;
m_limitForce2 = 0;
} else {
m_limitState2 = e_atUpperLimit;
m_limitPositionImpulse2 = 0;
};
var _local21:Number = ((_local5 * m_u1.y) - (_local6 * m_u1.x));
var _local22:Number = ((_local8 * m_u2.y) - (_local9 * m_u2.x));
m_limitMass1 = (_local2.m_invMass + ((_local2.m_invI * _local21) * _local21));
m_limitMass2 = (_local3.m_invMass + ((_local3.m_invI * _local22) * _local22));
m_pulleyMass = (m_limitMass1 + ((m_ratio * m_ratio) * m_limitMass2));
m_limitMass1 = (1 / m_limitMass1);
m_limitMass2 = (1 / m_limitMass2);
m_pulleyMass = (1 / m_pulleyMass);
if (_arg1.warmStarting){
_local23 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.x);
_local24 = ((_arg1.dt * (-(m_force) - m_limitForce1)) * m_u1.y);
_local25 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.x);
_local26 = ((_arg1.dt * ((-(m_ratio) * m_force) - m_limitForce2)) * m_u2.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local23));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local24));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local24) - (_local6 * _local23))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local25));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local26));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local26) - (_local9 * _local25))));
} else {
m_force = 0;
m_limitForce1 = 0;
m_limitForce2 = 0;
};
}
override public function GetReactionTorque():Number{
return (0);
}
public function GetRatio():Number{
return (m_ratio);
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local5:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local6:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
var _local7:Number = ((_local4.col1.x * _local5) + (_local4.col2.x * _local6));
_local6 = ((_local4.col1.y * _local5) + (_local4.col2.y * _local6));
_local5 = _local7;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local7 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local7;
if (m_state == e_atUpperLimit){
_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
_local18 = (-(((m_u1.x * _local10) + (m_u1.y * _local11))) - (m_ratio * ((m_u2.x * _local12) + (m_u2.y * _local13))));
_local19 = ((-(_arg1.inv_dt) * m_pulleyMass) * _local18);
_local20 = m_force;
m_force = b2Math.b2Max(0, (m_force + _local19));
_local19 = (m_force - _local20);
_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
_local16 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.x);
_local17 = (((-(_arg1.dt) * m_ratio) * _local19) * m_u2.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
};
if (m_limitState1 == e_atUpperLimit){
_local10 = (_local2.m_linearVelocity.x + (-(_local2.m_angularVelocity) * _local6));
_local11 = (_local2.m_linearVelocity.y + (_local2.m_angularVelocity * _local5));
_local18 = -(((m_u1.x * _local10) + (m_u1.y * _local11)));
_local19 = ((-(_arg1.inv_dt) * m_limitMass1) * _local18);
_local20 = m_limitForce1;
m_limitForce1 = b2Math.b2Max(0, (m_limitForce1 + _local19));
_local19 = (m_limitForce1 - _local20);
_local14 = ((-(_arg1.dt) * _local19) * m_u1.x);
_local15 = ((-(_arg1.dt) * _local19) * m_u1.y);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x + (_local2.m_invMass * _local14));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y + (_local2.m_invMass * _local15));
_local2.m_angularVelocity = (_local2.m_angularVelocity + (_local2.m_invI * ((_local5 * _local15) - (_local6 * _local14))));
};
if (m_limitState2 == e_atUpperLimit){
_local12 = (_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9));
_local13 = (_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8));
_local18 = -(((m_u2.x * _local12) + (m_u2.y * _local13)));
_local19 = ((-(_arg1.inv_dt) * m_limitMass2) * _local18);
_local20 = m_limitForce2;
m_limitForce2 = b2Math.b2Max(0, (m_limitForce2 + _local19));
_local19 = (m_limitForce2 - _local20);
_local16 = ((-(_arg1.dt) * _local19) * m_u2.x);
_local17 = ((-(_arg1.dt) * _local19) * m_u2.y);
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local16));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local17));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local17) - (_local9 * _local16))));
};
if ((((Math.abs(_local2.m_linearVelocity.y) > 0.5)) || ((Math.abs(_local3.m_linearVelocity.y) > 0.5)))){
Preloader.sound.Play(SoundID.PULLEY);
} else {
Preloader.sound.Stop(SoundID.PULLEY);
};
}
public function GetLength1():Number{
var _local1:b2Vec2 = m_body1.GetWorldPoint(m_localAnchor1);
var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor1.x);
var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor1.y);
var _local4:Number = (_local1.x - _local2);
var _local5:Number = (_local1.y - _local3);
return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
}
public function GetLength2():Number{
var _local1:b2Vec2 = m_body2.GetWorldPoint(m_localAnchor2);
var _local2:Number = (m_ground.m_xf.position.x + m_groundAnchor2.x);
var _local3:Number = (m_ground.m_xf.position.y + m_groundAnchor2.y);
var _local4:Number = (_local1.x - _local2);
var _local5:Number = (_local1.y - _local3);
return (Math.sqrt(((_local4 * _local4) + (_local5 * _local5))));
}
public function GetGroundAnchor1():b2Vec2{
var _local1:b2Vec2 = m_ground.m_xf.position.Copy();
_local1.Add(m_groundAnchor1);
return (_local1);
}
}
}//package Box2D.Dynamics.Joints
Section 63
//b2PulleyJointDef (Box2D.Dynamics.Joints.b2PulleyJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PulleyJointDef extends b2JointDef {
public var maxLength1:Number;
public var maxLength2:Number;
public var length1:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var groundAnchor1:b2Vec2;
public var groundAnchor2:b2Vec2;
public var ratio:Number;
public var length2:Number;
public function b2PulleyJointDef(){
groundAnchor1 = new b2Vec2();
groundAnchor2 = new b2Vec2();
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_pulleyJoint;
groundAnchor1.Set(-1, 1);
groundAnchor2.Set(1, 1);
localAnchor1.Set(-1, 0);
localAnchor2.Set(1, 0);
length1 = 0;
maxLength1 = 0;
length2 = 0;
maxLength2 = 0;
ratio = 1;
collideConnected = true;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:b2Vec2, _arg7:Number):void{
body1 = _arg1;
body2 = _arg2;
groundAnchor1.SetV(_arg3);
groundAnchor2.SetV(_arg4);
localAnchor1 = body1.GetLocalPoint(_arg5);
localAnchor2 = body2.GetLocalPoint(_arg6);
var _local8:Number = (_arg5.x - _arg3.x);
var _local9:Number = (_arg5.y - _arg3.y);
length1 = Math.sqrt(((_local8 * _local8) + (_local9 * _local9)));
var _local10:Number = (_arg6.x - _arg4.x);
var _local11:Number = (_arg6.y - _arg4.y);
length2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
ratio = _arg7;
var _local12:Number = (length1 + (ratio * length2));
maxLength1 = (_local12 - (ratio * b2PulleyJoint.b2_minPulleyLength));
maxLength2 = ((_local12 - b2PulleyJoint.b2_minPulleyLength) / ratio);
}
}
}//package Box2D.Dynamics.Joints
Section 64
//b2RevoluteJoint (Box2D.Dynamics.Joints.b2RevoluteJoint)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2RevoluteJoint extends b2Joint {
public var m_limitForce:Number;
public var m_pivotMass:b2Mat22;
public var m_motorForce:Number;
public var m_enableLimit:Boolean;
public var m_limitState:int;
public var m_motorMass:Number;
public var m_localAnchor1:b2Vec2;
public var m_localAnchor2:b2Vec2;
private var K1:b2Mat22;
private var K2:b2Mat22;
private var K3:b2Mat22;
private var K:b2Mat22;
public var m_pivotForce:b2Vec2;
public var m_enableMotor:Boolean;
public var m_referenceAngle:Number;
public var m_limitPositionImpulse:Number;
public var m_motorSpeed:Number;
public var m_upperAngle:Number;
public var m_lowerAngle:Number;
public var m_maxMotorTorque:Number;
public static var tImpulse:b2Vec2 = new b2Vec2();
public function b2RevoluteJoint(_arg1:b2RevoluteJointDef){
K = new b2Mat22();
K1 = new b2Mat22();
K2 = new b2Mat22();
K3 = new b2Mat22();
m_localAnchor1 = new b2Vec2();
m_localAnchor2 = new b2Vec2();
m_pivotForce = new b2Vec2();
m_pivotMass = new b2Mat22();
super(_arg1);
m_localAnchor1.SetV(_arg1.localAnchor1);
m_localAnchor2.SetV(_arg1.localAnchor2);
m_referenceAngle = _arg1.referenceAngle;
m_pivotForce.Set(0, 0);
m_motorForce = 0;
m_limitForce = 0;
m_limitPositionImpulse = 0;
m_lowerAngle = _arg1.lowerAngle;
m_upperAngle = _arg1.upperAngle;
m_maxMotorTorque = _arg1.maxMotorTorque;
m_motorSpeed = _arg1.motorSpeed;
m_enableLimit = _arg1.enableLimit;
m_enableMotor = _arg1.enableMotor;
}
override public function SolveVelocityConstraints(_arg1:b2TimeStep):void{
var _local4:b2Mat22;
var _local5:Number;
var _local10:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:Number;
var _local20:Number;
var _local21:Number;
var _local2:b2Body = m_body1;
var _local3:b2Body = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
var _local7:Number = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local11:Number = (((_local3.m_linearVelocity.x + (-(_local3.m_angularVelocity) * _local9)) - _local2.m_linearVelocity.x) - (-(_local2.m_angularVelocity) * _local7));
var _local12:Number = (((_local3.m_linearVelocity.y + (_local3.m_angularVelocity * _local8)) - _local2.m_linearVelocity.y) - (_local2.m_angularVelocity * _local6));
var _local13:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.x * _local11) + (m_pivotMass.col2.x * _local12)));
var _local14:Number = (-(_arg1.inv_dt) * ((m_pivotMass.col1.y * _local11) + (m_pivotMass.col2.y * _local12)));
m_pivotForce.x = (m_pivotForce.x + _local13);
m_pivotForce.y = (m_pivotForce.y + _local14);
var _local15:Number = (_arg1.dt * _local13);
_local16 = (_arg1.dt * _local14);
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - (_local2.m_invMass * _local15));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - (_local2.m_invMass * _local16));
_local2.m_angularVelocity = (_local2.m_angularVelocity - (_local2.m_invI * ((_local6 * _local16) - (_local7 * _local15))));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + (_local3.m_invMass * _local15));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + (_local3.m_invMass * _local16));
_local3.m_angularVelocity = (_local3.m_angularVelocity + (_local3.m_invI * ((_local8 * _local16) - (_local9 * _local15))));
if (((m_enableMotor) && (!((m_limitState == e_equalLimits))))){
_local17 = ((_local3.m_angularVelocity - _local2.m_angularVelocity) - m_motorSpeed);
_local18 = ((-(_arg1.inv_dt) * m_motorMass) * _local17);
_local19 = m_motorForce;
m_motorForce = b2Math.b2Clamp((m_motorForce + _local18), -(m_maxMotorTorque), m_maxMotorTorque);
_local18 = (m_motorForce - _local19);
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local18));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local18));
};
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local20 = (_local3.m_angularVelocity - _local2.m_angularVelocity);
_local21 = ((-(_arg1.inv_dt) * m_motorMass) * _local20);
if (m_limitState == e_equalLimits){
m_limitForce = (m_limitForce + _local21);
} else {
if (m_limitState == e_atLowerLimit){
_local10 = m_limitForce;
m_limitForce = b2Math.b2Max((m_limitForce + _local21), 0);
_local21 = (m_limitForce - _local10);
} else {
if (m_limitState == e_atUpperLimit){
_local10 = m_limitForce;
m_limitForce = b2Math.b2Min((m_limitForce + _local21), 0);
_local21 = (m_limitForce - _local10);
};
};
};
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_local2.m_invI * _arg1.dt) * _local21));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_local3.m_invI * _arg1.dt) * _local21));
};
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_localAnchor1));
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_localAnchor2));
}
public function GetUpperLimit():Number{
return (m_upperAngle);
}
public function GetLowerLimit():Number{
return (m_lowerAngle);
}
public function EnableMotor(_arg1:Boolean):void{
m_enableMotor = _arg1;
}
public function GetMotorSpeed():Number{
return (m_motorSpeed);
}
override public function GetReactionForce():b2Vec2{
return (m_pivotForce);
}
override public function SolvePositionConstraints():Boolean{
var _local1:Number;
var _local2:Number;
var _local6:b2Mat22;
var _local25:Number;
var _local26:Number;
var _local3:b2Body = m_body1;
var _local4:b2Body = m_body2;
var _local5:Number = 0;
_local6 = _local3.m_xf.R;
var _local7:Number = (m_localAnchor1.x - _local3.m_sweep.localCenter.x);
var _local8:Number = (m_localAnchor1.y - _local3.m_sweep.localCenter.y);
var _local9:Number = ((_local6.col1.x * _local7) + (_local6.col2.x * _local8));
_local8 = ((_local6.col1.y * _local7) + (_local6.col2.y * _local8));
_local7 = _local9;
_local6 = _local4.m_xf.R;
var _local10:Number = (m_localAnchor2.x - _local4.m_sweep.localCenter.x);
var _local11:Number = (m_localAnchor2.y - _local4.m_sweep.localCenter.y);
_local9 = ((_local6.col1.x * _local10) + (_local6.col2.x * _local11));
_local11 = ((_local6.col1.y * _local10) + (_local6.col2.y * _local11));
_local10 = _local9;
var _local12:Number = (_local3.m_sweep.c.x + _local7);
var _local13:Number = (_local3.m_sweep.c.y + _local8);
var _local14:Number = (_local4.m_sweep.c.x + _local10);
var _local15:Number = (_local4.m_sweep.c.y + _local11);
var _local16:Number = (_local14 - _local12);
var _local17:Number = (_local15 - _local13);
_local5 = Math.sqrt(((_local16 * _local16) + (_local17 * _local17)));
var _local18:Number = _local3.m_invMass;
var _local19:Number = _local4.m_invMass;
var _local20:Number = _local3.m_invI;
var _local21:Number = _local4.m_invI;
K1.col1.x = (_local18 + _local19);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (_local18 + _local19);
K2.col1.x = ((_local20 * _local8) * _local8);
K2.col2.x = ((-(_local20) * _local7) * _local8);
K2.col1.y = ((-(_local20) * _local7) * _local8);
K2.col2.y = ((_local20 * _local7) * _local7);
K3.col1.x = ((_local21 * _local11) * _local11);
K3.col2.x = ((-(_local21) * _local10) * _local11);
K3.col1.y = ((-(_local21) * _local10) * _local11);
K3.col2.y = ((_local21 * _local10) * _local10);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Solve(tImpulse, -(_local16), -(_local17));
var _local22:Number = tImpulse.x;
var _local23:Number = tImpulse.y;
_local3.m_sweep.c.x = (_local3.m_sweep.c.x - (_local3.m_invMass * _local22));
_local3.m_sweep.c.y = (_local3.m_sweep.c.y - (_local3.m_invMass * _local23));
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * ((_local7 * _local23) - (_local8 * _local22))));
_local4.m_sweep.c.x = (_local4.m_sweep.c.x + (_local4.m_invMass * _local22));
_local4.m_sweep.c.y = (_local4.m_sweep.c.y + (_local4.m_invMass * _local23));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * ((_local10 * _local23) - (_local11 * _local22))));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
var _local24:Number = 0;
if (((m_enableLimit) && (!((m_limitState == e_inactiveLimit))))){
_local25 = ((_local4.m_sweep.a - _local3.m_sweep.a) - m_referenceAngle);
_local26 = 0;
if (m_limitState == e_equalLimits){
_local2 = b2Math.b2Clamp(_local25, -(b2Settings.b2_maxAngularCorrection), b2Settings.b2_maxAngularCorrection);
_local26 = (-(m_motorMass) * _local2);
_local24 = b2Math.b2Abs(_local2);
} else {
if (m_limitState == e_atLowerLimit){
_local2 = (_local25 - m_lowerAngle);
_local24 = b2Math.b2Max(0, -(_local2));
_local2 = b2Math.b2Clamp((_local2 + b2Settings.b2_angularSlop), -(b2Settings.b2_maxAngularCorrection), 0);
_local26 = (-(m_motorMass) * _local2);
_local1 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Max((m_limitPositionImpulse + _local26), 0);
_local26 = (m_limitPositionImpulse - _local1);
} else {
if (m_limitState == e_atUpperLimit){
_local2 = (_local25 - m_upperAngle);
_local24 = b2Math.b2Max(0, _local2);
_local2 = b2Math.b2Clamp((_local2 - b2Settings.b2_angularSlop), 0, b2Settings.b2_maxAngularCorrection);
_local26 = (-(m_motorMass) * _local2);
_local1 = m_limitPositionImpulse;
m_limitPositionImpulse = b2Math.b2Min((m_limitPositionImpulse + _local26), 0);
_local26 = (m_limitPositionImpulse - _local1);
};
};
};
_local3.m_sweep.a = (_local3.m_sweep.a - (_local3.m_invI * _local26));
_local4.m_sweep.a = (_local4.m_sweep.a + (_local4.m_invI * _local26));
_local3.SynchronizeTransform();
_local4.SynchronizeTransform();
};
return ((((_local5 <= b2Settings.b2_linearSlop)) && ((_local24 <= b2Settings.b2_angularSlop))));
}
public function SetMotorSpeed(_arg1:Number):void{
m_motorSpeed = _arg1;
}
public function GetJointSpeed():Number{
return ((m_body2.m_angularVelocity - m_body1.m_angularVelocity));
}
public function SetMaxMotorTorque(_arg1:Number):void{
m_maxMotorTorque = _arg1;
}
public function GetJointAngle():Number{
return (((m_body2.m_sweep.a - m_body1.m_sweep.a) - m_referenceAngle));
}
public function GetMotorTorque():Number{
return (m_motorForce);
}
override public function InitVelocityConstraints(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Body;
var _local4:b2Mat22;
var _local5:Number;
var _local7:Number;
var _local14:Number;
_local2 = m_body1;
_local3 = m_body2;
_local4 = _local2.m_xf.R;
var _local6:Number = (m_localAnchor1.x - _local2.m_sweep.localCenter.x);
_local7 = (m_localAnchor1.y - _local2.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local6) + (_local4.col2.x * _local7));
_local7 = ((_local4.col1.y * _local6) + (_local4.col2.y * _local7));
_local6 = _local5;
_local4 = _local3.m_xf.R;
var _local8:Number = (m_localAnchor2.x - _local3.m_sweep.localCenter.x);
var _local9:Number = (m_localAnchor2.y - _local3.m_sweep.localCenter.y);
_local5 = ((_local4.col1.x * _local8) + (_local4.col2.x * _local9));
_local9 = ((_local4.col1.y * _local8) + (_local4.col2.y * _local9));
_local8 = _local5;
var _local10:Number = _local2.m_invMass;
var _local11:Number = _local3.m_invMass;
var _local12:Number = _local2.m_invI;
var _local13:Number = _local3.m_invI;
K1.col1.x = (_local10 + _local11);
K1.col2.x = 0;
K1.col1.y = 0;
K1.col2.y = (_local10 + _local11);
K2.col1.x = ((_local12 * _local7) * _local7);
K2.col2.x = ((-(_local12) * _local6) * _local7);
K2.col1.y = ((-(_local12) * _local6) * _local7);
K2.col2.y = ((_local12 * _local6) * _local6);
K3.col1.x = ((_local13 * _local9) * _local9);
K3.col2.x = ((-(_local13) * _local8) * _local9);
K3.col1.y = ((-(_local13) * _local8) * _local9);
K3.col2.y = ((_local13 * _local8) * _local8);
K.SetM(K1);
K.AddM(K2);
K.AddM(K3);
K.Invert(m_pivotMass);
m_motorMass = (1 / (_local12 + _local13));
if (m_enableMotor == false){
m_motorForce = 0;
};
if (m_enableLimit){
_local14 = ((_local3.m_sweep.a - _local2.m_sweep.a) - m_referenceAngle);
if (b2Math.b2Abs((m_upperAngle - m_lowerAngle)) < (2 * b2Settings.b2_angularSlop)){
m_limitState = e_equalLimits;
} else {
if (_local14 <= m_lowerAngle){
if (m_limitState != e_atLowerLimit){
m_limitForce = 0;
};
m_limitState = e_atLowerLimit;
} else {
if (_local14 >= m_upperAngle){
if (m_limitState != e_atUpperLimit){
m_limitForce = 0;
};
m_limitState = e_atUpperLimit;
} else {
m_limitState = e_inactiveLimit;
m_limitForce = 0;
};
};
};
} else {
m_limitForce = 0;
};
if (_arg1.warmStarting){
_local2.m_linearVelocity.x = (_local2.m_linearVelocity.x - ((_arg1.dt * _local10) * m_pivotForce.x));
_local2.m_linearVelocity.y = (_local2.m_linearVelocity.y - ((_arg1.dt * _local10) * m_pivotForce.y));
_local2.m_angularVelocity = (_local2.m_angularVelocity - ((_arg1.dt * _local12) * ((((_local6 * m_pivotForce.y) - (_local7 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
_local3.m_linearVelocity.x = (_local3.m_linearVelocity.x + ((_arg1.dt * _local11) * m_pivotForce.x));
_local3.m_linearVelocity.y = (_local3.m_linearVelocity.y + ((_arg1.dt * _local11) * m_pivotForce.y));
_local3.m_angularVelocity = (_local3.m_angularVelocity + ((_arg1.dt * _local13) * ((((_local8 * m_pivotForce.y) - (_local9 * m_pivotForce.x)) + m_motorForce) + m_limitForce)));
} else {
m_pivotForce.SetZero();
m_motorForce = 0;
m_limitForce = 0;
};
m_limitPositionImpulse = 0;
}
public function EnableLimit(_arg1:Boolean):void{
m_enableLimit = _arg1;
}
override public function GetReactionTorque():Number{
return (m_limitForce);
}
public function IsLimitEnabled():Boolean{
return (m_enableLimit);
}
public function IsMotorEnabled():Boolean{
return (m_enableMotor);
}
public function SetLimits(_arg1:Number, _arg2:Number):void{
m_lowerAngle = _arg1;
m_upperAngle = _arg2;
}
}
}//package Box2D.Dynamics.Joints
Section 65
//b2RevoluteJointDef (Box2D.Dynamics.Joints.b2RevoluteJointDef)
package Box2D.Dynamics.Joints {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2RevoluteJointDef extends b2JointDef {
public var upperAngle:Number;
public var enableMotor:Boolean;
public var referenceAngle:Number;
public var motorSpeed:Number;
public var localAnchor1:b2Vec2;
public var localAnchor2:b2Vec2;
public var enableLimit:Boolean;
public var lowerAngle:Number;
public var maxMotorTorque:Number;
public function b2RevoluteJointDef(){
localAnchor1 = new b2Vec2();
localAnchor2 = new b2Vec2();
super();
type = b2Joint.e_revoluteJoint;
localAnchor1.Set(0, 0);
localAnchor2.Set(0, 0);
referenceAngle = 0;
lowerAngle = 0;
upperAngle = 0;
maxMotorTorque = 0;
motorSpeed = 0;
enableLimit = false;
enableMotor = false;
}
public function Initialize(_arg1:b2Body, _arg2:b2Body, _arg3:b2Vec2):void{
body1 = _arg1;
body2 = _arg2;
localAnchor1 = body1.GetLocalPoint(_arg3);
localAnchor2 = body2.GetLocalPoint(_arg3);
referenceAngle = (body2.GetAngle() - body1.GetAngle());
}
}
}//package Box2D.Dynamics.Joints
Section 66
//b2Body (Box2D.Dynamics.b2Body)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
import Box2D.Dynamics.Contacts.*;
public class b2Body {
public var m_next:b2Body;
public var m_xf:b2XForm;
public var m_contactList:b2ContactEdge;
public var m_angularVelocity:Number;
public var m_shapeList:b2Shape;
public var m_force:b2Vec2;
public var m_mass:Number;
public var m_sweep:b2Sweep;
public var m_torque:Number;
public var m_userData;
public var m_flags:uint;
public var m_world:b2World;
public var m_prev:b2Body;
public var m_invMass:Number;
public var m_type:int;
public var m_linearDamping:Number;
public var m_shapeCount:int;
public var m_angularDamping:Number;
public var m_invI:Number;
public var m_linearVelocity:b2Vec2;
public var m_sleepTime:Number;
public var m_jointList:b2JointEdge;
public var m_I:Number;
public static var e_fixedRotationFlag:uint = 64;
public static var e_frozenFlag:uint = 2;
public static var e_maxTypes:uint = 3;
public static var e_sleepFlag:uint = 8;
private static var s_massData:b2MassData = new b2MassData();
public static var e_bulletFlag:uint = 32;
public static var e_staticType:uint = 1;
public static var e_islandFlag:uint = 4;
public static var e_allowSleepFlag:uint = 16;
private static var s_xf1:b2XForm = new b2XForm();
public static var e_dynamicType:uint = 2;
public function b2Body(_arg1:b2BodyDef, _arg2:b2World){
m_xf = new b2XForm();
m_sweep = new b2Sweep();
m_linearVelocity = new b2Vec2();
m_force = new b2Vec2();
super();
m_flags = 0;
if (_arg1.isBullet){
m_flags = (m_flags | e_bulletFlag);
};
if (_arg1.fixedRotation){
m_flags = (m_flags | e_fixedRotationFlag);
};
if (_arg1.allowSleep){
m_flags = (m_flags | e_allowSleepFlag);
};
if (_arg1.isSleeping){
m_flags = (m_flags | e_sleepFlag);
};
m_world = _arg2;
m_xf.position.SetV(_arg1.position);
m_xf.R.Set(_arg1.angle);
m_sweep.localCenter.SetV(_arg1.massData.center);
m_sweep.t0 = 1;
m_sweep.a0 = (m_sweep.a = _arg1.angle);
var _local3:b2Mat22 = m_xf.R;
var _local4:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
m_jointList = null;
m_contactList = null;
m_prev = null;
m_next = null;
m_linearDamping = _arg1.linearDamping;
m_angularDamping = _arg1.angularDamping;
m_force.Set(0, 0);
m_torque = 0;
m_linearVelocity.SetZero();
m_angularVelocity = 0;
m_sleepTime = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = _arg1.massData.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = _arg1.massData.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
m_userData = _arg1.userData;
m_shapeList = null;
m_shapeCount = 0;
}
public function GetLinearVelocityFromWorldPoint(_arg1:b2Vec2):b2Vec2{
return (new b2Vec2((m_linearVelocity.x - (m_angularVelocity * (_arg1.y - m_sweep.c.y))), (m_linearVelocity.y + (m_angularVelocity * (_arg1.x - m_sweep.c.x)))));
}
public function SetLinearVelocity(_arg1:b2Vec2):void{
m_linearVelocity.SetV(_arg1);
}
public function WakeUp():void{
m_flags = (m_flags & ~(e_sleepFlag));
m_sleepTime = 0;
}
public function GetLocalCenter():b2Vec2{
return (m_sweep.localCenter);
}
public function ApplyTorque(_arg1:Number):void{
if (IsSleeping()){
WakeUp();
};
m_torque = (m_torque + _arg1);
}
public function IsFrozen():Boolean{
return (((m_flags & e_frozenFlag) == e_frozenFlag));
}
public function IsDynamic():Boolean{
return ((m_type == e_dynamicType));
}
public function GetLinearVelocity():b2Vec2{
return (m_linearVelocity);
}
public function SynchronizeTransform():void{
m_xf.R.Set(m_sweep.a);
var _local1:b2Mat22 = m_xf.R;
var _local2:b2Vec2 = m_sweep.localCenter;
m_xf.position.x = (m_sweep.c.x - ((_local1.col1.x * _local2.x) + (_local1.col2.x * _local2.y)));
m_xf.position.y = (m_sweep.c.y - ((_local1.col1.y * _local2.x) + (_local1.col2.y * _local2.y)));
}
public function GetInertia():Number{
return (m_I);
}
public function IsSleeping():Boolean{
return (((m_flags & e_sleepFlag) == e_sleepFlag));
}
public function SetMassFromShapes():void{
var _local1:b2Shape;
if (m_world.m_lock == true){
return;
};
m_mass = 0;
m_invMass = 0;
m_I = 0;
m_invI = 0;
var _local2:Number = 0;
var _local3:Number = 0;
var _local4:b2MassData = s_massData;
_local1 = m_shapeList;
while (_local1) {
_local1.ComputeMass(_local4);
m_mass = (m_mass + _local4.mass);
_local2 = (_local2 + (_local4.mass * _local4.center.x));
_local3 = (_local3 + (_local4.mass * _local4.center.y));
m_I = (m_I + _local4.I);
_local1 = _local1.m_next;
};
if (m_mass > 0){
m_invMass = (1 / m_mass);
_local2 = (_local2 * m_invMass);
_local3 = (_local3 * m_invMass);
};
if ((((m_I > 0)) && (((m_flags & e_fixedRotationFlag) == 0)))){
m_I = (m_I - (m_mass * ((_local2 * _local2) + (_local3 * _local3))));
m_invI = (1 / m_I);
} else {
m_I = 0;
m_invI = 0;
};
m_sweep.localCenter.Set(_local2, _local3);
var _local5:b2Mat22 = m_xf.R;
var _local6:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local5.col1.x * _local6.x) + (_local5.col2.x * _local6.y));
m_sweep.c.y = ((_local5.col1.y * _local6.x) + (_local5.col2.y * _local6.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
_local1 = m_shapeList;
while (_local1) {
_local1.UpdateSweepRadius(m_sweep.localCenter);
_local1 = _local1.m_next;
};
var _local7:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (_local7 != m_type){
_local1 = m_shapeList;
while (_local1) {
_local1.RefilterProxy(m_world.m_broadPhase, m_xf);
_local1 = _local1.m_next;
};
};
}
public function PutToSleep():void{
m_flags = (m_flags | e_sleepFlag);
m_sleepTime = 0;
m_linearVelocity.SetZero();
m_angularVelocity = 0;
m_force.SetZero();
m_torque = 0;
}
public function GetJointList():b2JointEdge{
return (m_jointList);
}
public function SetXForm(_arg1:b2Vec2, _arg2:Number):Boolean{
var _local3:b2Shape;
var _local7:Boolean;
if (m_world.m_lock == true){
return (true);
};
if (IsFrozen()){
return (false);
};
m_xf.R.Set(_arg2);
m_xf.position.SetV(_arg1);
var _local4:b2Mat22 = m_xf.R;
var _local5:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local4.col1.x * _local5.x) + (_local4.col2.x * _local5.y));
m_sweep.c.y = ((_local4.col1.y * _local5.x) + (_local4.col2.y * _local5.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
m_sweep.a0 = (m_sweep.a = _arg2);
var _local6:Boolean;
_local3 = m_shapeList;
while (_local3) {
_local7 = _local3.Synchronize(m_world.m_broadPhase, m_xf, m_xf);
if (_local7 == false){
_local6 = true;
break;
};
_local3 = _local3.m_next;
};
if (_local6 == true){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
_local3 = m_shapeList;
while (_local3) {
_local3.DestroyProxy(m_world.m_broadPhase);
_local3 = _local3.m_next;
};
return (false);
};
m_world.m_broadPhase.Commit();
return (true);
}
public function GetLocalPoint(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulXT(m_xf, _arg1));
}
public function ApplyForce(_arg1:b2Vec2, _arg2:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_force.x = (m_force.x + _arg1.x);
m_force.y = (m_force.y + _arg1.y);
m_torque = (m_torque + (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x)));
}
public function SynchronizeShapes():Boolean{
var _local4:b2Shape;
var _local1:b2XForm = s_xf1;
_local1.R.Set(m_sweep.a0);
var _local2:b2Mat22 = _local1.R;
var _local3:b2Vec2 = m_sweep.localCenter;
_local1.position.x = (m_sweep.c0.x - ((_local2.col1.x * _local3.x) + (_local2.col2.x * _local3.y)));
_local1.position.y = (m_sweep.c0.y - ((_local2.col1.y * _local3.x) + (_local2.col2.y * _local3.y)));
var _local5:Boolean;
_local4 = m_shapeList;
while (_local4) {
_local5 = _local4.Synchronize(m_world.m_broadPhase, _local1, m_xf);
if (_local5 == false){
break;
};
_local4 = _local4.m_next;
};
if (_local5 == false){
m_flags = (m_flags | e_frozenFlag);
m_linearVelocity.SetZero();
m_angularVelocity = 0;
_local4 = m_shapeList;
while (_local4) {
_local4.DestroyProxy(m_world.m_broadPhase);
_local4 = _local4.m_next;
};
return (false);
};
return (true);
}
public function GetAngle():Number{
return (m_sweep.a);
}
public function GetXForm():b2XForm{
return (m_xf);
}
public function GetLinearVelocityFromLocalPoint(_arg1:b2Vec2):b2Vec2{
var _local2:b2Mat22 = m_xf.R;
var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
_local3.x = (_local3.x + m_xf.position.x);
_local3.y = (_local3.y + m_xf.position.y);
return (new b2Vec2((m_linearVelocity.x + (m_angularVelocity * (_local3.y - m_sweep.c.y))), (m_linearVelocity.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 ApplyImpulse(_arg1:b2Vec2, _arg2:b2Vec2):void{
if (IsSleeping()){
WakeUp();
};
m_linearVelocity.x = (m_linearVelocity.x + (m_invMass * _arg1.x));
m_linearVelocity.y = (m_linearVelocity.y + (m_invMass * _arg1.y));
m_angularVelocity = (m_angularVelocity + (m_invI * (((_arg2.x - m_sweep.c.x) * _arg1.y) - ((_arg2.y - m_sweep.c.y) * _arg1.x))));
}
public function GetAngularVelocity():Number{
return (m_angularVelocity);
}
public function SetAngularVelocity(_arg1:Number):void{
m_angularVelocity = _arg1;
}
public function SetMass(_arg1:b2MassData):void{
var _local2:b2Shape;
if (m_world.m_lock == true){
return;
};
m_invMass = 0;
m_I = 0;
m_invI = 0;
m_mass = _arg1.mass;
if (m_mass > 0){
m_invMass = (1 / m_mass);
};
if ((m_flags & b2Body.e_fixedRotationFlag) == 0){
m_I = _arg1.I;
};
if (m_I > 0){
m_invI = (1 / m_I);
};
m_sweep.localCenter.SetV(_arg1.center);
var _local3:b2Mat22 = m_xf.R;
var _local4:b2Vec2 = m_sweep.localCenter;
m_sweep.c.x = ((_local3.col1.x * _local4.x) + (_local3.col2.x * _local4.y));
m_sweep.c.y = ((_local3.col1.y * _local4.x) + (_local3.col2.y * _local4.y));
m_sweep.c.x = (m_sweep.c.x + m_xf.position.x);
m_sweep.c.y = (m_sweep.c.y + m_xf.position.y);
m_sweep.c0.SetV(m_sweep.c);
_local2 = m_shapeList;
while (_local2) {
_local2.UpdateSweepRadius(m_sweep.localCenter);
_local2 = _local2.m_next;
};
var _local5:int = m_type;
if ((((m_invMass == 0)) && ((m_invI == 0)))){
m_type = e_staticType;
} else {
m_type = e_dynamicType;
};
if (_local5 != m_type){
_local2 = m_shapeList;
while (_local2) {
_local2.RefilterProxy(m_world.m_broadPhase, m_xf);
_local2 = _local2.m_next;
};
};
}
public function IsStatic():Boolean{
return ((m_type == e_staticType));
}
public function GetWorldVector(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulMV(m_xf.R, _arg1));
}
public function GetShapeList():b2Shape{
return (m_shapeList);
}
public function Advance(_arg1:Number):void{
m_sweep.Advance(_arg1);
m_sweep.c.SetV(m_sweep.c0);
m_sweep.a = m_sweep.a0;
SynchronizeTransform();
}
public function SetBullet(_arg1:Boolean):void{
if (_arg1){
m_flags = (m_flags | e_bulletFlag);
} else {
m_flags = (m_flags & ~(e_bulletFlag));
};
}
public function CreateShape(_arg1:b2ShapeDef):b2Shape{
var _local2:b2Shape;
if (m_world.m_lock == true){
return (null);
};
_local2 = b2Shape.Create(_arg1, m_world.m_blockAllocator);
_local2.m_next = m_shapeList;
m_shapeList = _local2;
m_shapeCount++;
_local2.m_body = this;
_local2.CreateProxy(m_world.m_broadPhase, m_xf);
_local2.UpdateSweepRadius(m_sweep.localCenter);
return (_local2);
}
public function IsConnected(_arg1:b2Body):Boolean{
var _local2:b2JointEdge = m_jointList;
while (_local2) {
if (_local2.other == _arg1){
return ((_local2.joint.m_collideConnected == false));
};
_local2 = _local2.next;
};
return (false);
}
public function DestroyShape(_arg1:b2Shape):void{
if (m_world.m_lock == true){
return;
};
_arg1.DestroyProxy(m_world.m_broadPhase);
var _local2:b2Shape = m_shapeList;
var _local3:b2Shape;
var _local4:Boolean;
while (_local2 != null) {
if (_local2 == _arg1){
if (_local3){
_local3.m_next = _arg1.m_next;
} else {
m_shapeList = _arg1.m_next;
};
_local4 = true;
break;
};
_local3 = _local2;
_local2 = _local2.m_next;
};
_arg1.m_body = null;
_arg1.m_next = null;
m_shapeCount--;
b2Shape.Destroy(_arg1, m_world.m_blockAllocator);
}
public function GetUserData(){
return (m_userData);
}
public function IsBullet():Boolean{
return (((m_flags & e_bulletFlag) == e_bulletFlag));
}
public function GetWorldCenter():b2Vec2{
return (m_sweep.c);
}
public function AllowSleeping(_arg1:Boolean):void{
if (_arg1){
m_flags = (m_flags | e_allowSleepFlag);
} else {
m_flags = (m_flags & ~(e_allowSleepFlag));
WakeUp();
};
}
public function SetUserData(_arg1):void{
m_userData = _arg1;
}
public function GetLocalVector(_arg1:b2Vec2):b2Vec2{
return (b2Math.b2MulTMV(m_xf.R, _arg1));
}
public function GetWorldPoint(_arg1:b2Vec2):b2Vec2{
var _local2:b2Mat22 = m_xf.R;
var _local3:b2Vec2 = new b2Vec2(((_local2.col1.x * _arg1.x) + (_local2.col2.x * _arg1.y)), ((_local2.col1.y * _arg1.x) + (_local2.col2.y * _arg1.y)));
_local3.x = (_local3.x + m_xf.position.x);
_local3.y = (_local3.y + m_xf.position.y);
return (_local3);
}
public function GetWorld():b2World{
return (m_world);
}
public function GetPosition():b2Vec2{
return (m_xf.position);
}
}
}//package Box2D.Dynamics
Section 67
//b2BodyDef (Box2D.Dynamics.b2BodyDef)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.Shapes.*;
public class b2BodyDef {
public var angularDamping:Number;
public var angle:Number;
public var isSleeping:Boolean;
public var position:b2Vec2;
public var isBullet:Boolean;
public var allowSleep:Boolean;
public var userData;
public var fixedRotation:Boolean;
public var linearDamping:Number;
public var massData:b2MassData;
public function b2BodyDef(){
massData = new b2MassData();
position = new b2Vec2();
super();
massData.center.SetZero();
massData.mass = 0;
massData.I = 0;
userData = null;
position.Set(0, 0);
angle = 0;
linearDamping = 0;
angularDamping = 0;
allowSleep = true;
isSleeping = false;
fixedRotation = false;
isBullet = false;
}
}
}//package Box2D.Dynamics
Section 68
//b2BoundaryListener (Box2D.Dynamics.b2BoundaryListener)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2BoundaryListener {
public function Violation(_arg1:b2Body):void{
if (_arg1.m_userData){
_arg1.m_userData.outBoundary = true;
};
}
}
}//package Box2D.Dynamics
Section 69
//b2ContactFilter (Box2D.Dynamics.b2ContactFilter)
package Box2D.Dynamics {
import Box2D.Collision.Shapes.*;
public class b2ContactFilter {
public static var b2_defaultFilter:b2ContactFilter = new (b2ContactFilter);
;
public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{
var _local3:b2FilterData = _arg1.GetFilterData();
var _local4:b2FilterData = _arg2.GetFilterData();
if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){
return ((_local3.groupIndex > 0));
};
var _local5:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0))));
return (_local5);
}
}
}//package Box2D.Dynamics
Section 70
//b2ContactListener (Box2D.Dynamics.b2ContactListener)
package Box2D.Dynamics {
import Box2D.Collision.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactListener {
public function Add(_arg1:b2ContactPoint):void{
}
public function Remove(_arg1:b2ContactPoint):void{
}
public function Persist(_arg1:b2ContactPoint):void{
}
public function Result(_arg1:b2ContactResult):void{
}
}
}//package Box2D.Dynamics
Section 71
//b2ContactManager (Box2D.Dynamics.b2ContactManager)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2ContactManager extends b2PairCallback {
public var m_world:b2World;
public var m_destroyImmediate:Boolean;
public var m_nullContact:b2NullContact;
private static const s_evalCP:b2ContactPoint = new b2ContactPoint();
public function b2ContactManager(){
m_nullContact = new b2NullContact();
super();
m_world = null;
m_destroyImmediate = false;
}
override public function PairRemoved(_arg1, _arg2, _arg3):void{
if (_arg3 == null){
return;
};
var _local4:b2Contact = (_arg3 as b2Contact);
if (_local4 == m_nullContact){
return;
};
Destroy(_local4);
}
public function Destroy(_arg1:b2Contact):void{
var _local7:b2Body;
var _local8:b2Body;
var _local9:Array;
var _local10:b2ContactPoint;
var _local11:int;
var _local12:b2Manifold;
var _local13:int;
var _local14:b2ManifoldPoint;
var _local15:b2Vec2;
var _local16:b2Vec2;
var _local2:b2Shape = _arg1.m_shape1;
var _local3:b2Shape = _arg1.m_shape2;
var _local4:int = _arg1.m_manifoldCount;
if ((((_local4 > 0)) && (m_world.m_contactListener))){
_local7 = _local2.m_body;
_local8 = _local3.m_body;
_local9 = _arg1.GetManifolds();
_local10 = s_evalCP;
_local10.shape1 = _arg1.m_shape1;
_local10.shape2 = _arg1.m_shape2;
_local10.friction = _arg1.m_friction;
_local10.restitution = _arg1.m_restitution;
_local11 = 0;
while (_local11 < _local4) {
_local12 = _local9[_local11];
_local10.normal.SetV(_local12.normal);
_local13 = 0;
while (_local13 < _local12.pointCount) {
_local14 = _local12.points[_local13];
_local10.position = _local7.GetWorldPoint(_local14.localPoint1);
_local15 = _local7.GetLinearVelocityFromLocalPoint(_local14.localPoint1);
_local16 = _local8.GetLinearVelocityFromLocalPoint(_local14.localPoint2);
_local10.velocity.Set((_local16.x - _local15.x), (_local16.y - _local15.y));
_local10.separation = _local14.separation;
_local10.id.key = _local14.id._key;
m_world.m_contactListener.Remove(_local10);
_local13++;
};
_local11++;
};
};
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_world.m_contactList){
m_world.m_contactList = _arg1.m_next;
};
var _local5:b2Body = _local2.m_body;
var _local6:b2Body = _local3.m_body;
if (_arg1.m_node1.prev){
_arg1.m_node1.prev.next = _arg1.m_node1.next;
};
if (_arg1.m_node1.next){
_arg1.m_node1.next.prev = _arg1.m_node1.prev;
};
if (_arg1.m_node1 == _local5.m_contactList){
_local5.m_contactList = _arg1.m_node1.next;
};
if (_arg1.m_node2.prev){
_arg1.m_node2.prev.next = _arg1.m_node2.next;
};
if (_arg1.m_node2.next){
_arg1.m_node2.next.prev = _arg1.m_node2.prev;
};
if (_arg1.m_node2 == _local6.m_contactList){
_local6.m_contactList = _arg1.m_node2.next;
};
b2Contact.Destroy(_arg1, m_world.m_blockAllocator);
m_world.m_contactCount--;
}
override public function PairAdded(_arg1, _arg2){
var _local3:b2Shape = (_arg1 as b2Shape);
var _local4:b2Shape = (_arg2 as b2Shape);
var _local5:b2Body = _local3.m_body;
var _local6:b2Body = _local4.m_body;
if (((_local5.IsStatic()) && (_local6.IsStatic()))){
return (m_nullContact);
};
if (_local3.m_body == _local4.m_body){
return (m_nullContact);
};
if (_local6.IsConnected(_local5)){
return (m_nullContact);
};
if (((!((m_world.m_contactFilter == null))) && ((m_world.m_contactFilter.ShouldCollide(_local3, _local4) == false)))){
return (m_nullContact);
};
var _local7:b2Contact = b2Contact.Create(_local3, _local4, m_world.m_blockAllocator);
if (_local7 == null){
return (m_nullContact);
};
_local3 = _local7.m_shape1;
_local4 = _local7.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
_local7.m_prev = null;
_local7.m_next = m_world.m_contactList;
if (m_world.m_contactList != null){
m_world.m_contactList.m_prev = _local7;
};
m_world.m_contactList = _local7;
_local7.m_node1.contact = _local7;
_local7.m_node1.other = _local6;
_local7.m_node1.prev = null;
_local7.m_node1.next = _local5.m_contactList;
if (_local5.m_contactList != null){
_local5.m_contactList.prev = _local7.m_node1;
};
_local5.m_contactList = _local7.m_node1;
_local7.m_node2.contact = _local7;
_local7.m_node2.other = _local5;
_local7.m_node2.prev = null;
_local7.m_node2.next = _local6.m_contactList;
if (_local6.m_contactList != null){
_local6.m_contactList.prev = _local7.m_node2;
};
_local6.m_contactList = _local7.m_node2;
m_world.m_contactCount++;
return (_local7);
}
public function Collide():void{
var _local2:b2Body;
var _local3:b2Body;
var _local1:b2Contact = m_world.m_contactList;
while (_local1) {
_local2 = _local1.m_shape1.m_body;
_local3 = _local1.m_shape2.m_body;
if (((_local2.IsSleeping()) && (_local3.IsSleeping()))){
} else {
_local1.Update(m_world.m_contactListener);
};
_local1 = _local1.m_next;
};
}
}
}//package Box2D.Dynamics
Section 72
//b2DebugDraw (Box2D.Dynamics.b2DebugDraw)
package Box2D.Dynamics {
import Box2D.Common.Math.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import flash.display.*;
import Box2D.Dynamics.Contacts.*;
public class b2DebugDraw {
public var m_xformScale:Number;// = 1
public var m_fillAlpha:Number;// = 1
public var m_alpha:Number;// = 1
public var m_drawFlags:uint;
public var m_lineThickness:Number;// = 1
public var m_drawScale:Number;// = 1
public var m_sprite:Sprite;
public static var e_coreShapeBit:uint = 4;
public static var e_shapeBit:uint = 1;
public static var e_centerOfMassBit:uint = 64;
public static var e_aabbBit:uint = 8;
public static var e_obbBit:uint = 16;
public static var e_pairBit:uint = 32;
public static var e_jointBit:uint = 2;
public function b2DebugDraw(){
m_drawFlags = 0;
}
public function ClearFlags(_arg1:uint):void{
m_drawFlags = (m_drawFlags & ~(_arg1));
}
public function SetFlags(_arg1:uint):void{
m_drawFlags = _arg1;
}
public function AppendFlags(_arg1:uint):void{
m_drawFlags = (m_drawFlags | _arg1);
}
public function DrawSegment(_arg1:b2Vec2, _arg2:b2Vec2, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
m_sprite.graphics.lineTo((_arg2.x * m_drawScale), (_arg2.y * m_drawScale));
}
public function DrawSolidPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.beginFill(_arg3.color, m_fillAlpha);
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
m_sprite.graphics.endFill();
}
public function DrawCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
}
public function DrawPolygon(_arg1:Array, _arg2:int, _arg3:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg3.color, m_alpha);
m_sprite.graphics.moveTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
var _local4 = 1;
while (_local4 < _arg2) {
m_sprite.graphics.lineTo((_arg1[_local4].x * m_drawScale), (_arg1[_local4].y * m_drawScale));
_local4++;
};
m_sprite.graphics.lineTo((_arg1[0].x * m_drawScale), (_arg1[0].y * m_drawScale));
}
public function DrawSolidCircle(_arg1:b2Vec2, _arg2:Number, _arg3:b2Vec2, _arg4:b2Color):void{
m_sprite.graphics.lineStyle(m_lineThickness, _arg4.color, m_alpha);
m_sprite.graphics.moveTo(0, 0);
m_sprite.graphics.beginFill(_arg4.color, m_fillAlpha);
m_sprite.graphics.drawCircle((_arg1.x * m_drawScale), (_arg1.y * m_drawScale), (_arg2 * m_drawScale));
m_sprite.graphics.endFill();
m_sprite.graphics.moveTo((_arg1.x * m_drawScale), (_arg1.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.x + (_arg3.x * _arg2)) * m_drawScale), ((_arg1.y + (_arg3.y * _arg2)) * m_drawScale));
}
public function GetFlags():uint{
return (m_drawFlags);
}
public function DrawXForm(_arg1:b2XForm):void{
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF0000, m_alpha);
m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col1.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col1.y)) * m_drawScale));
m_sprite.graphics.lineStyle(m_lineThickness, 0xFF00, m_alpha);
m_sprite.graphics.moveTo((_arg1.position.x * m_drawScale), (_arg1.position.y * m_drawScale));
m_sprite.graphics.lineTo(((_arg1.position.x + (m_xformScale * _arg1.R.col2.x)) * m_drawScale), ((_arg1.position.y + (m_xformScale * _arg1.R.col2.y)) * m_drawScale));
}
}
}//package Box2D.Dynamics
Section 73
//b2DestructionListener (Box2D.Dynamics.b2DestructionListener)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Collision.Shapes.*;
public class b2DestructionListener {
public function SayGoodbyeShape(_arg1:b2Shape):void{
}
public function SayGoodbyeJoint(_arg1:b2Joint):void{
}
}
}//package Box2D.Dynamics
Section 74
//b2Island (Box2D.Dynamics.b2Island)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Collision.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2Island {
public var m_listener:b2ContactListener;
public var m_positionIterationCount:int;
public var m_bodyCapacity:int;
public var m_bodies:Array;
public var m_joints:Array;
public var m_jointCapacity:int;
public var m_contactCount:int;
public var m_contacts:Array;
public var m_contactCapacity:int;
public var m_jointCount:int;
public var m_allocator;
public var m_bodyCount:int;
private static var s_reportCR:b2ContactResult = new b2ContactResult();
public function b2Island(_arg1:int, _arg2:int, _arg3:int, _arg4, _arg5:b2ContactListener){
var _local6:int;
super();
m_bodyCapacity = _arg1;
m_contactCapacity = _arg2;
m_jointCapacity = _arg3;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_allocator = _arg4;
m_listener = _arg5;
m_bodies = new Array(_arg1);
_local6 = 0;
while (_local6 < _arg1) {
m_bodies[_local6] = null;
_local6++;
};
m_contacts = new Array(_arg2);
_local6 = 0;
while (_local6 < _arg2) {
m_contacts[_local6] = null;
_local6++;
};
m_joints = new Array(_arg3);
_local6 = 0;
while (_local6 < _arg3) {
m_joints[_local6] = null;
_local6++;
};
m_positionIterationCount = 0;
}
public function AddBody(_arg1:b2Body):void{
var _local2 = m_bodyCount++;
m_bodies[_local2] = _arg1;
}
public function AddJoint(_arg1:b2Joint):void{
var _local2 = m_jointCount++;
m_joints[_local2] = _arg1;
}
public function Report(_arg1:Array):void{
var _local2:b2Mat22;
var _local3:b2Vec2;
var _local5:b2Contact;
var _local6:b2ContactConstraint;
var _local7:b2ContactResult;
var _local8:b2Body;
var _local9:int;
var _local10:Array;
var _local11:int;
var _local12:b2Manifold;
var _local13:int;
var _local14:b2ManifoldPoint;
var _local15:b2ContactConstraintPoint;
if (m_listener == null){
return;
};
var _local4:int;
while (_local4 < m_contactCount) {
_local5 = m_contacts[_local4];
_local6 = _arg1[_local4];
_local7 = s_reportCR;
_local7.shape1 = _local5.m_shape1;
_local7.shape2 = _local5.m_shape2;
_local8 = _local7.shape1.m_body;
_local9 = _local5.m_manifoldCount;
_local10 = _local5.GetManifolds();
_local11 = 0;
while (_local11 < _local9) {
_local12 = _local10[_local11];
_local7.normal.SetV(_local12.normal);
_local13 = 0;
while (_local13 < _local12.pointCount) {
_local14 = _local12.points[_local13];
_local15 = _local6.points[_local13];
_local7.position = _local8.GetWorldPoint(_local14.localPoint1);
_local7.normalImpulse = _local15.normalImpulse;
_local7.tangentImpulse = _local15.tangentImpulse;
_local7.id.key = _local14.id.key;
m_listener.Result(_local7);
_local13++;
};
_local11++;
};
_local4++;
};
}
public function AddContact(_arg1:b2Contact):void{
var _local2 = m_contactCount++;
m_contacts[_local2] = _arg1;
}
public function Solve(_arg1:b2TimeStep, _arg2:b2Vec2, _arg3:Boolean, _arg4:Boolean):void{
var _local5:int;
var _local6:b2Body;
var _local7:b2Joint;
var _local9:int;
var _local10:Boolean;
var _local11:Boolean;
var _local12:Boolean;
var _local13:Number;
var _local14:Number;
var _local15:Number;
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.IsStatic()){
} else {
_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x + (_arg1.dt * (_arg2.x + (_local6.m_invMass * _local6.m_force.x))));
_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y + (_arg1.dt * (_arg2.y + (_local6.m_invMass * _local6.m_force.y))));
_local6.m_angularVelocity = (_local6.m_angularVelocity + ((_arg1.dt * _local6.m_invI) * _local6.m_torque));
_local6.m_force.SetZero();
_local6.m_torque = 0;
_local6.m_linearVelocity.Multiply(b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_linearDamping)), 0, 1));
_local6.m_angularVelocity = (_local6.m_angularVelocity * b2Math.b2Clamp((1 - (_arg1.dt * _local6.m_angularDamping)), 0, 1));
if (_local6.m_linearVelocity.LengthSquared() > b2Settings.b2_maxLinearVelocitySquared){
_local6.m_linearVelocity.Normalize();
_local6.m_linearVelocity.x = (_local6.m_linearVelocity.x * b2Settings.b2_maxLinearVelocity);
_local6.m_linearVelocity.y = (_local6.m_linearVelocity.y * b2Settings.b2_maxLinearVelocity);
};
if ((_local6.m_angularVelocity * _local6.m_angularVelocity) > b2Settings.b2_maxAngularVelocitySquared){
if (_local6.m_angularVelocity < 0){
_local6.m_angularVelocity = -(b2Settings.b2_maxAngularVelocity);
} else {
_local6.m_angularVelocity = b2Settings.b2_maxAngularVelocity;
};
};
};
_local5++;
};
var _local8:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
_local8.InitVelocityConstraints(_arg1);
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local7.InitVelocityConstraints(_arg1);
_local5++;
};
_local5 = 0;
while (_local5 < _arg1.maxIterations) {
_local8.SolveVelocityConstraints();
_local9 = 0;
while (_local9 < m_jointCount) {
_local7 = m_joints[_local9];
_local7.SolveVelocityConstraints(_arg1);
_local9++;
};
_local5++;
};
_local8.FinalizeVelocityConstraints();
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.IsStatic()){
} else {
_local6.m_sweep.c0.SetV(_local6.m_sweep.c);
_local6.m_sweep.a0 = _local6.m_sweep.a;
_local6.m_sweep.c.x = (_local6.m_sweep.c.x + (_arg1.dt * _local6.m_linearVelocity.x));
_local6.m_sweep.c.y = (_local6.m_sweep.c.y + (_arg1.dt * _local6.m_linearVelocity.y));
_local6.m_sweep.a = (_local6.m_sweep.a + (_arg1.dt * _local6.m_angularVelocity));
_local6.SynchronizeTransform();
};
_local5++;
};
if (_arg3){
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local7.InitPositionConstraints();
_local5++;
};
m_positionIterationCount = 0;
while (m_positionIterationCount < _arg1.maxIterations) {
_local10 = _local8.SolvePositionConstraints(b2Settings.b2_contactBaumgarte);
_local11 = true;
_local5 = 0;
while (_local5 < m_jointCount) {
_local7 = m_joints[_local5];
_local12 = _local7.SolvePositionConstraints();
_local11 = ((_local11) && (_local12));
_local5++;
};
if (((_local10) && (_local11))){
break;
};
m_positionIterationCount++;
};
};
Report(_local8.m_constraints);
if (_arg4){
_local13 = Number.MAX_VALUE;
_local14 = (b2Settings.b2_linearSleepTolerance * b2Settings.b2_linearSleepTolerance);
_local15 = (b2Settings.b2_angularSleepTolerance * b2Settings.b2_angularSleepTolerance);
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
if (_local6.m_invMass == 0){
} else {
if ((_local6.m_flags & b2Body.e_allowSleepFlag) == 0){
_local6.m_sleepTime = 0;
_local13 = 0;
};
if (((((((_local6.m_flags & b2Body.e_allowSleepFlag) == 0)) || (((_local6.m_angularVelocity * _local6.m_angularVelocity) > _local15)))) || ((b2Math.b2Dot(_local6.m_linearVelocity, _local6.m_linearVelocity) > _local14)))){
_local6.m_sleepTime = 0;
_local13 = 0;
} else {
_local6.m_sleepTime = (_local6.m_sleepTime + _arg1.dt);
_local13 = b2Math.b2Min(_local13, _local6.m_sleepTime);
};
};
_local5++;
};
if (_local13 >= b2Settings.b2_timeToSleep){
_local5 = 0;
while (_local5 < m_bodyCount) {
_local6 = m_bodies[_local5];
m_bodies[_local5].m_flags = (_local6.m_flags | b2Body.e_sleepFlag);
_local6.m_linearVelocity.SetZero();
_local6.m_angularVelocity = 0;
_local5++;
};
};
};
}
public function Clear():void{
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
}
public function SolveTOI(_arg1:b2TimeStep):void{
var _local2:int;
var _local5:b2Body;
var _local6:Boolean;
var _local3:b2ContactSolver = new b2ContactSolver(_arg1, m_contacts, m_contactCount, m_allocator);
_local2 = 0;
while (_local2 < _arg1.maxIterations) {
_local3.SolveVelocityConstraints();
_local2++;
};
_local2 = 0;
while (_local2 < m_bodyCount) {
_local5 = m_bodies[_local2];
if (_local5.IsStatic()){
} else {
_local5.m_sweep.c0.SetV(_local5.m_sweep.c);
_local5.m_sweep.a0 = _local5.m_sweep.a;
_local5.m_sweep.c.x = (_local5.m_sweep.c.x + (_arg1.dt * _local5.m_linearVelocity.x));
_local5.m_sweep.c.y = (_local5.m_sweep.c.y + (_arg1.dt * _local5.m_linearVelocity.y));
_local5.m_sweep.a = (_local5.m_sweep.a + (_arg1.dt * _local5.m_angularVelocity));
_local5.SynchronizeTransform();
};
_local2++;
};
var _local4:Number = 0.75;
_local2 = 0;
while (_local2 < _arg1.maxIterations) {
_local6 = _local3.SolvePositionConstraints(_local4);
if (_local6){
break;
};
_local2++;
};
Report(_local3.m_constraints);
}
}
}//package Box2D.Dynamics
Section 75
//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 76
//b2World (Box2D.Dynamics.b2World)
package Box2D.Dynamics {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class b2World {
public var m_inv_dt0:Number;
public var m_boundaryListener:b2BoundaryListener;
public var m_contactList:b2Contact;
public var m_blockAllocator;
public var m_contactListener:b2ContactListener;
public var m_allowSleep:Boolean;
public var m_broadPhase:b2BroadPhase;
public var m_destructionListener:b2DestructionListener;
public var m_jointCount:int;
public var m_bodyCount:int;
public var m_lock:Boolean;
public var m_positionIterationCount:int;
public var m_groundBody:b2Body;
public var m_contactCount:int;
public var m_debugDraw:b2DebugDraw;
public var m_contactFilter:b2ContactFilter;
public var m_bodyList:b2Body;
public var m_stackAllocator;
public var m_jointList:b2Joint;
public var m_gravity:b2Vec2;
public var m_contactManager:b2ContactManager;
private static var s_jointColor:b2Color = new b2Color(0.5, 0.8, 0.8);
public static var m_continuousPhysics:Boolean;
public static var m_warmStarting:Boolean;
private static var s_coreColor:b2Color = new b2Color(0.9, 0.6, 0.6);
public static var m_positionCorrection:Boolean;
private static var s_xf:b2XForm = new b2XForm();
public function b2World(_arg1:b2AABB, _arg2:b2Vec2, _arg3:Boolean){
m_contactManager = new b2ContactManager();
super();
m_destructionListener = null;
m_boundaryListener = null;
m_contactFilter = b2ContactFilter.b2_defaultFilter;
m_contactListener = null;
m_debugDraw = null;
m_bodyList = null;
m_contactList = null;
m_jointList = null;
m_bodyCount = 0;
m_contactCount = 0;
m_jointCount = 0;
m_positionCorrection = true;
m_warmStarting = true;
m_continuousPhysics = true;
m_allowSleep = _arg3;
m_gravity = _arg2;
m_lock = false;
m_inv_dt0 = 0;
m_contactManager.m_world = this;
m_broadPhase = new b2BroadPhase(_arg1, m_contactManager);
var _local4:b2BodyDef = new b2BodyDef();
m_groundBody = CreateBody(_local4);
}
public function DrawJoint(_arg1:b2Joint):void{
var _local11:b2PulleyJoint;
var _local12:b2Vec2;
var _local13:b2Vec2;
var _local2:b2Body = _arg1.m_body1;
var _local3:b2Body = _arg1.m_body2;
var _local4:b2XForm = _local2.m_xf;
var _local5:b2XForm = _local3.m_xf;
var _local6:b2Vec2 = _local4.position;
var _local7:b2Vec2 = _local5.position;
var _local8:b2Vec2 = _arg1.GetAnchor1();
var _local9:b2Vec2 = _arg1.GetAnchor2();
var _local10:b2Color = s_jointColor;
switch (_arg1.m_type){
case b2Joint.e_distanceJoint:
m_debugDraw.DrawSegment(_local8, _local9, _local10);
break;
case b2Joint.e_pulleyJoint:
_local11 = (_arg1 as b2PulleyJoint);
_local12 = _local11.GetGroundAnchor1();
_local13 = _local11.GetGroundAnchor2();
m_debugDraw.DrawSegment(_local12, _local8, _local10);
m_debugDraw.DrawSegment(_local13, _local9, _local10);
m_debugDraw.DrawSegment(_local12, _local13, _local10);
break;
case b2Joint.e_mouseJoint:
m_debugDraw.DrawSegment(_local8, _local9, _local10);
break;
default:
if (_local2 != m_groundBody){
m_debugDraw.DrawSegment(_local6, _local8, _local10);
};
m_debugDraw.DrawSegment(_local8, _local9, _local10);
if (_local3 != m_groundBody){
m_debugDraw.DrawSegment(_local7, _local9, _local10);
};
};
}
public function Refilter(_arg1:b2Shape):void{
_arg1.RefilterProxy(m_broadPhase, _arg1.m_body.m_xf);
}
public function SetDebugDraw(_arg1:b2DebugDraw):void{
m_debugDraw = _arg1;
}
public function SetContinuousPhysics(_arg1:Boolean):void{
m_continuousPhysics = _arg1;
}
public function GetProxyCount():int{
return (m_broadPhase.m_proxyCount);
}
public function DrawDebugData():void{
var _local2:int;
var _local3:b2Body;
var _local4:b2Shape;
var _local5:b2Joint;
var _local6:b2BroadPhase;
var _local11:b2XForm;
var _local15:Boolean;
var _local16:uint;
var _local17:b2Pair;
var _local18:b2Proxy;
var _local19:b2Proxy;
var _local20:b2Vec2;
var _local21:b2Vec2;
var _local22:b2Proxy;
var _local23:b2PolygonShape;
var _local24:b2OBB;
var _local25:b2Vec2;
var _local26:b2Mat22;
var _local27:b2Vec2;
var _local28:Number;
if (m_debugDraw == null){
return;
};
m_debugDraw.m_sprite.graphics.clear();
var _local1:uint = m_debugDraw.GetFlags();
var _local7:b2Vec2 = new b2Vec2();
var _local8:b2Vec2 = new b2Vec2();
var _local9:b2Vec2 = new b2Vec2();
var _local10:b2Color = new b2Color(0, 0, 0);
var _local12:b2AABB = new b2AABB();
var _local13:b2AABB = new b2AABB();
var _local14:Array = [new b2Vec2(), new b2Vec2(), new b2Vec2(), new b2Vec2()];
if ((_local1 & b2DebugDraw.e_shapeBit)){
_local15 = ((_local1 & b2DebugDraw.e_coreShapeBit) == b2DebugDraw.e_coreShapeBit);
_local3 = m_bodyList;
while (_local3) {
_local11 = _local3.m_xf;
_local4 = _local3.GetShapeList();
while (_local4) {
if (_local3.IsStatic()){
DrawShape(_local4, _local11, new b2Color(0.5, 0.9, 0.5), _local15);
} else {
if (_local3.IsSleeping()){
DrawShape(_local4, _local11, new b2Color(0.5, 0.5, 0.9), _local15);
} else {
DrawShape(_local4, _local11, new b2Color(0.9, 0.9, 0.9), _local15);
};
};
_local4 = _local4.m_next;
};
_local3 = _local3.m_next;
};
};
if ((_local1 & b2DebugDraw.e_jointBit)){
_local5 = m_jointList;
while (_local5) {
DrawJoint(_local5);
_local5 = _local5.m_next;
};
};
if ((_local1 & b2DebugDraw.e_pairBit)){
_local6 = m_broadPhase;
_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
_local10.Set(0.9, 0.9, 0.3);
_local2 = 0;
while (_local2 < b2Pair.b2_tableCapacity) {
_local16 = _local6.m_pairManager.m_hashTable[_local2];
while (_local16 != b2Pair.b2_nullPair) {
_local17 = _local6.m_pairManager.m_pairs[_local16];
_local18 = _local6.m_proxyPool[_local17.proxyId1];
_local19 = _local6.m_proxyPool[_local17.proxyId2];
_local12.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.lowerBounds[0]].value));
_local12.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.lowerBounds[1]].value));
_local12.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local18.upperBounds[0]].value));
_local12.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local18.upperBounds[1]].value));
_local13.lowerBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.lowerBounds[0]].value));
_local13.lowerBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.lowerBounds[1]].value));
_local13.upperBound.x = (_local6.m_worldAABB.lowerBound.x + (_local7.x * _local6.m_bounds[0][_local19.upperBounds[0]].value));
_local13.upperBound.y = (_local6.m_worldAABB.lowerBound.y + (_local7.y * _local6.m_bounds[1][_local19.upperBounds[1]].value));
_local8.x = (0.5 * (_local12.lowerBound.x + _local12.upperBound.x));
_local8.y = (0.5 * (_local12.lowerBound.y + _local12.upperBound.y));
_local9.x = (0.5 * (_local13.lowerBound.x + _local13.upperBound.x));
_local9.y = (0.5 * (_local13.lowerBound.y + _local13.upperBound.y));
m_debugDraw.DrawSegment(_local8, _local9, _local10);
_local16 = _local17.next;
};
_local2++;
};
};
if ((_local1 & b2DebugDraw.e_aabbBit)){
_local6 = m_broadPhase;
_local20 = _local6.m_worldAABB.lowerBound;
_local21 = _local6.m_worldAABB.upperBound;
_local7.Set((1 / _local6.m_quantizationFactor.x), (1 / _local6.m_quantizationFactor.y));
_local10.Set(0.9, 0.3, 0.9);
_local2 = 0;
while (_local2 < b2Settings.b2_maxProxies) {
_local22 = _local6.m_proxyPool[_local2];
if (_local22.IsValid() == false){
} else {
_local12.lowerBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.lowerBounds[0]].value));
_local12.lowerBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.lowerBounds[1]].value));
_local12.upperBound.x = (_local20.x + (_local7.x * _local6.m_bounds[0][_local22.upperBounds[0]].value));
_local12.upperBound.y = (_local20.y + (_local7.y * _local6.m_bounds[1][_local22.upperBounds[1]].value));
_local14[0].Set(_local12.lowerBound.x, _local12.lowerBound.y);
_local14[1].Set(_local12.upperBound.x, _local12.lowerBound.y);
_local14[2].Set(_local12.upperBound.x, _local12.upperBound.y);
_local14[3].Set(_local12.lowerBound.x, _local12.upperBound.y);
m_debugDraw.DrawPolygon(_local14, 4, _local10);
};
_local2++;
};
_local14[0].Set(_local20.x, _local20.y);
_local14[1].Set(_local21.x, _local20.y);
_local14[2].Set(_local21.x, _local21.y);
_local14[3].Set(_local20.x, _local21.y);
m_debugDraw.DrawPolygon(_local14, 4, new b2Color(0.3, 0.9, 0.9));
};
if ((_local1 & b2DebugDraw.e_obbBit)){
_local10.Set(0.5, 0.3, 0.5);
_local3 = m_bodyList;
while (_local3) {
_local11 = _local3.m_xf;
_local4 = _local3.GetShapeList();
while (_local4) {
if (_local4.m_type != b2Shape.e_polygonShape){
} else {
_local23 = (_local4 as b2PolygonShape);
_local24 = _local23.GetOBB();
_local25 = _local24.extents;
_local14[0].Set(-(_local25.x), -(_local25.y));
_local14[1].Set(_local25.x, -(_local25.y));
_local14[2].Set(_local25.x, _local25.y);
_local14[3].Set(-(_local25.x), _local25.y);
_local2 = 0;
while (_local2 < 4) {
_local26 = _local24.R;
_local27 = _local14[_local2];
_local28 = (_local24.center.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
_local14[_local2].y = (_local24.center.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
_local14[_local2].x = _local28;
_local26 = _local11.R;
_local28 = (_local11.position.x + ((_local26.col1.x * _local27.x) + (_local26.col2.x * _local27.y)));
_local14[_local2].y = (_local11.position.y + ((_local26.col1.y * _local27.x) + (_local26.col2.y * _local27.y)));
_local14[_local2].x = _local28;
_local2++;
};
m_debugDraw.DrawPolygon(_local14, 4, _local10);
};
_local4 = _local4.m_next;
};
_local3 = _local3.m_next;
};
};
if ((_local1 & b2DebugDraw.e_centerOfMassBit)){
_local3 = m_bodyList;
while (_local3) {
_local11 = s_xf;
_local11.R = _local3.m_xf.R;
_local11.position = _local3.GetWorldCenter();
m_debugDraw.DrawXForm(_local11);
_local3 = _local3.m_next;
};
};
}
public function DestroyBody(_arg1:b2Body):void{
var _local4:b2JointEdge;
var _local5:b2Shape;
if (m_lock == true){
return;
};
var _local2:b2JointEdge = _arg1.m_jointList;
while (_local2) {
_local4 = _local2;
_local2 = _local2.next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeJoint(_local4.joint);
};
DestroyJoint(_local4.joint);
};
var _local3:b2Shape = _arg1.m_shapeList;
while (_local3) {
_local5 = _local3;
_local3 = _local3.m_next;
if (m_destructionListener){
m_destructionListener.SayGoodbyeShape(_local5);
};
_local5.DestroyProxy(m_broadPhase);
b2Shape.Destroy(_local5, m_blockAllocator);
};
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_bodyList){
m_bodyList = _arg1.m_next;
};
m_bodyCount--;
}
public function SetContactFilter(_arg1:b2ContactFilter):void{
m_contactFilter = _arg1;
}
public function GetGroundBody():b2Body{
return (m_groundBody);
}
public function GetDebugDraw():b2DebugDraw{
return (m_debugDraw);
}
public function DrawShape(_arg1:b2Shape, _arg2:b2XForm, _arg3:b2Color, _arg4:Boolean):void{
var _local6:b2CircleShape;
var _local7:b2Vec2;
var _local8:Number;
var _local9:b2Vec2;
var _local10:int;
var _local11:b2PolygonShape;
var _local12:int;
var _local13:Array;
var _local14:Array;
var _local15:Array;
var _local5:b2Color = s_coreColor;
switch (_arg1.m_type){
case b2Shape.e_circleShape:
_local6 = (_arg1 as b2CircleShape);
_local7 = b2Math.b2MulX(_arg2, _local6.m_localPosition);
_local8 = _local6.m_radius;
_local9 = _arg2.R.col1;
m_debugDraw.DrawSolidCircle(_local7, _local8, _local9, _arg3);
if (_arg4){
m_debugDraw.DrawCircle(_local7, (_local8 - b2Settings.b2_toiSlop), _local5);
};
break;
case b2Shape.e_polygonShape:
_local11 = (_arg1 as b2PolygonShape);
_local12 = _local11.GetVertexCount();
_local13 = _local11.GetVertices();
_local14 = new Array(b2Settings.b2_maxPolygonVertices);
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local13[_local10]);
_local10++;
};
m_debugDraw.DrawSolidPolygon(_local14, _local12, _arg3);
if (_arg4){
_local15 = _local11.GetCoreVertices();
_local10 = 0;
while (_local10 < _local12) {
_local14[_local10] = b2Math.b2MulX(_arg2, _local15[_local10]);
_local10++;
};
m_debugDraw.DrawPolygon(_local14, _local12, _local5);
};
break;
};
}
public function GetContactCount():int{
return (m_contactCount);
}
public function Solve(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local9:int;
var _local10:int;
var _local11:b2Body;
var _local12:b2ContactEdge;
var _local13:b2JointEdge;
var _local14:Boolean;
m_positionIterationCount = 0;
var _local3:b2Island = new b2Island(m_bodyCount, m_contactCount, m_jointCount, m_stackAllocator, m_contactListener);
_local2 = m_bodyList;
while (_local2) {
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
_local2 = _local2.m_next;
};
var _local4:b2Contact = m_contactList;
while (_local4) {
_local4.m_flags = (_local4.m_flags & ~(b2Contact.e_islandFlag));
_local4 = _local4.m_next;
};
var _local5:b2Joint = m_jointList;
while (_local5) {
_local5.m_islandFlag = false;
_local5 = _local5.m_next;
};
var _local6:int = m_bodyCount;
var _local7:Array = new Array(_local6);
var _local8:b2Body = m_bodyList;
while (_local8) {
if ((_local8.m_flags & ((b2Body.e_islandFlag | b2Body.e_sleepFlag) | b2Body.e_frozenFlag))){
} else {
if (_local8.IsStatic()){
} else {
_local3.Clear();
_local9 = 0;
var _temp1 = _local9;
_local9 = (_local9 + 1);
var _local15 = _temp1;
_local7[_local15] = _local8;
_local8.m_flags = (_local8.m_flags | b2Body.e_islandFlag);
while (_local9 > 0) {
--_local9;
_local2 = _local7[_local9];
_local3.AddBody(_local2);
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
if (_local2.IsStatic()){
} else {
_local12 = _local2.m_contactList;
while (_local12) {
if ((_local12.contact.m_flags & (b2Contact.e_islandFlag | b2Contact.e_nonSolidFlag))){
} else {
if (_local12.contact.m_manifoldCount == 0){
} else {
_local3.AddContact(_local12.contact);
_local12.contact.m_flags = (_local12.contact.m_flags | b2Contact.e_islandFlag);
_local11 = _local12.other;
if ((_local11.m_flags & b2Body.e_islandFlag)){
} else {
var _temp2 = _local9;
_local9 = (_local9 + 1);
var _local16 = _temp2;
_local7[_local16] = _local11;
_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
};
};
};
_local12 = _local12.next;
};
_local13 = _local2.m_jointList;
while (_local13) {
if (_local13.joint.m_islandFlag == true){
} else {
_local3.AddJoint(_local13.joint);
_local13.joint.m_islandFlag = true;
_local11 = _local13.other;
if ((_local11.m_flags & b2Body.e_islandFlag)){
} else {
var _temp3 = _local9;
_local9 = (_local9 + 1);
_local16 = _temp3;
_local7[_local16] = _local11;
_local11.m_flags = (_local11.m_flags | b2Body.e_islandFlag);
};
};
_local13 = _local13.next;
};
};
};
_local3.Solve(_arg1, m_gravity, m_positionCorrection, m_allowSleep);
if (_local3.m_positionIterationCount > m_positionIterationCount){
m_positionIterationCount = _local3.m_positionIterationCount;
};
_local10 = 0;
while (_local10 < _local3.m_bodyCount) {
_local2 = _local3.m_bodies[_local10];
if (_local2.IsStatic()){
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
};
_local10++;
};
};
};
_local8 = _local8.m_next;
};
_local2 = m_bodyList;
while (_local2) {
if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (_local2.IsStatic()){
} else {
_local14 = _local2.SynchronizeShapes();
if ((((_local14 == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(_local2);
};
};
};
_local2 = _local2.m_next;
};
m_broadPhase.Commit();
}
public function Query(_arg1:b2AABB, _arg2:Array, _arg3:int):int{
var _local4:Array = new Array(_arg3);
var _local5:int = m_broadPhase.QueryAABB(_arg1, _local4, _arg3);
var _local6:int;
while (_local6 < _local5) {
_arg2[_local6] = _local4[_local6];
_local6++;
};
return (_local5);
}
public function SetGravity(_arg1:b2Vec2):void{
m_gravity = _arg1;
}
public function SolveTOI(_arg1:b2TimeStep):void{
var _local2:b2Body;
var _local3:b2Shape;
var _local4:b2Shape;
var _local5:b2Body;
var _local6:b2Body;
var _local7:b2ContactEdge;
var _local11:b2Contact;
var _local12:b2Contact;
var _local13:Number;
var _local14:b2Body;
var _local15:int;
var _local16:b2TimeStep;
var _local17:int;
var _local18:Number;
var _local19:Number;
var _local20:b2Body;
var _local21:Boolean;
var _local8:b2Island = new b2Island(m_bodyCount, b2Settings.b2_maxTOIContactsPerIsland, 0, m_stackAllocator, m_contactListener);
var _local9:int = m_bodyCount;
var _local10:Array = new Array(_local9);
_local2 = m_bodyList;
while (_local2) {
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
_local2.m_sweep.t0 = 0;
_local2 = _local2.m_next;
};
_local11 = m_contactList;
while (_local11) {
_local11.m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
_local11 = _local11.m_next;
};
while (true) {
_local12 = null;
_local13 = 1;
_local11 = m_contactList;
for (;_local11;(_local11 = _local11.m_next)) {
if ((_local11.m_flags & (b2Contact.e_slowFlag | b2Contact.e_nonSolidFlag))){
} else {
_local18 = 1;
if ((_local11.m_flags & b2Contact.e_toiFlag)){
_local18 = _local11.m_toi;
} else {
_local3 = _local11.m_shape1;
_local4 = _local11.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
if (((((_local5.IsStatic()) || (_local5.IsSleeping()))) && (((_local6.IsStatic()) || (_local6.IsSleeping()))))){
continue;
};
_local19 = _local5.m_sweep.t0;
if (_local5.m_sweep.t0 < _local6.m_sweep.t0){
_local19 = _local6.m_sweep.t0;
_local5.m_sweep.Advance(_local19);
} else {
if (_local6.m_sweep.t0 < _local5.m_sweep.t0){
_local19 = _local5.m_sweep.t0;
_local6.m_sweep.Advance(_local19);
};
};
_local18 = b2TimeOfImpact.TimeOfImpact(_local11.m_shape1, _local5.m_sweep, _local11.m_shape2, _local6.m_sweep);
if ((((_local18 > 0)) && ((_local18 < 1)))){
_local18 = (((1 - _local18) * _local19) + _local18);
if (_local18 > 1){
_local18 = 1;
};
};
_local11.m_toi = _local18;
_local11.m_flags = (_local11.m_flags | b2Contact.e_toiFlag);
};
if ((((Number.MIN_VALUE < _local18)) && ((_local18 < _local13)))){
_local12 = _local11;
_local13 = _local18;
};
};
};
if ((((_local12 == null)) || (((1 - (100 * Number.MIN_VALUE)) < _local13)))){
break;
};
_local3 = _local12.m_shape1;
_local4 = _local12.m_shape2;
_local5 = _local3.m_body;
_local6 = _local4.m_body;
_local5.Advance(_local13);
_local6.Advance(_local13);
_local12.Update(m_contactListener);
_local12.m_flags = (_local12.m_flags & ~(b2Contact.e_toiFlag));
if (_local12.m_manifoldCount == 0){
} else {
_local14 = _local5;
if (_local14.IsStatic()){
_local14 = _local6;
};
_local8.Clear();
_local15 = 0;
var _temp1 = _local15;
_local15 = (_local15 + 1);
var _local22 = _temp1;
_local10[_local22] = _local14;
_local14.m_flags = (_local14.m_flags | b2Body.e_islandFlag);
while (_local15 > 0) {
--_local15;
_local2 = _local10[_local15];
_local8.AddBody(_local2);
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_sleepFlag));
if (_local2.IsStatic()){
} else {
_local7 = _local2.m_contactList;
while (_local7) {
if (_local8.m_contactCount == _local8.m_contactCapacity){
} else {
if ((_local7.contact.m_flags & ((b2Contact.e_islandFlag | b2Contact.e_slowFlag) | b2Contact.e_nonSolidFlag))){
} else {
if (_local7.contact.m_manifoldCount == 0){
} else {
_local8.AddContact(_local7.contact);
_local7.contact.m_flags = (_local7.contact.m_flags | b2Contact.e_islandFlag);
_local20 = _local7.other;
if ((_local20.m_flags & b2Body.e_islandFlag)){
} else {
if (_local20.IsStatic() == false){
_local20.Advance(_local13);
_local20.WakeUp();
};
var _temp2 = _local15;
_local15 = (_local15 + 1);
var _local23 = _temp2;
_local10[_local23] = _local20;
_local20.m_flags = (_local20.m_flags | b2Body.e_islandFlag);
};
};
};
};
_local7 = _local7.next;
};
};
};
_local16 = new b2TimeStep();
_local16.dt = ((1 - _local13) * _arg1.dt);
_local16.inv_dt = (1 / _local16.dt);
_local16.maxIterations = _arg1.maxIterations;
_local8.SolveTOI(_local16);
_local17 = 0;
while (_local17 < _local8.m_bodyCount) {
_local2 = _local8.m_bodies[_local17];
_local2.m_flags = (_local2.m_flags & ~(b2Body.e_islandFlag));
if ((_local2.m_flags & (b2Body.e_sleepFlag | b2Body.e_frozenFlag))){
} else {
if (_local2.IsStatic()){
} else {
_local21 = _local2.SynchronizeShapes();
if ((((_local21 == false)) && (!((m_boundaryListener == null))))){
m_boundaryListener.Violation(_local2);
};
_local7 = _local2.m_contactList;
while (_local7) {
_local7.contact.m_flags = (_local7.contact.m_flags & ~(b2Contact.e_toiFlag));
_local7 = _local7.next;
};
};
};
_local17++;
};
_local17 = 0;
while (_local17 < _local8.m_contactCount) {
_local11 = _local8.m_contacts[_local17];
_local8.m_contacts[_local17].m_flags = (_local11.m_flags & ~((b2Contact.e_toiFlag | b2Contact.e_islandFlag)));
_local17++;
};
m_broadPhase.Commit();
};
};
}
public function GetJointList():b2Joint{
return (m_jointList);
}
public function Validate():void{
m_broadPhase.Validate();
}
public function GetGravity():b2Vec2{
return (m_gravity);
}
public function GetPairCount():int{
return (m_broadPhase.m_pairManager.m_pairCount);
}
public function GetBodyList():b2Body{
return (m_bodyList);
}
public function SetWarmStarting(_arg1:Boolean):void{
m_warmStarting = _arg1;
}
public function SetPositionCorrection(_arg1:Boolean):void{
m_positionCorrection = _arg1;
}
public function CreateJoint(_arg1:b2JointDef):b2Joint{
var _local3:b2Body;
var _local4:b2Shape;
var _local2:b2Joint = b2Joint.Create(_arg1, m_blockAllocator);
_local2.m_prev = null;
_local2.m_next = m_jointList;
if (m_jointList){
m_jointList.m_prev = _local2;
};
m_jointList = _local2;
m_jointCount++;
_local2.m_node1.joint = _local2;
_local2.m_node1.other = _local2.m_body2;
_local2.m_node1.prev = null;
_local2.m_node1.next = _local2.m_body1.m_jointList;
if (_local2.m_body1.m_jointList){
_local2.m_body1.m_jointList.prev = _local2.m_node1;
};
_local2.m_body1.m_jointList = _local2.m_node1;
_local2.m_node2.joint = _local2;
_local2.m_node2.other = _local2.m_body1;
_local2.m_node2.prev = null;
_local2.m_node2.next = _local2.m_body2.m_jointList;
if (_local2.m_body2.m_jointList){
_local2.m_body2.m_jointList.prev = _local2.m_node2;
};
_local2.m_body2.m_jointList = _local2.m_node2;
if (_arg1.collideConnected == false){
_local3 = ((_arg1.body1.m_shapeCount < _arg1.body2.m_shapeCount)) ? _arg1.body1 : _arg1.body2;
_local4 = _local3.m_shapeList;
while (_local4) {
_local4.RefilterProxy(m_broadPhase, _local3.m_xf);
_local4 = _local4.m_next;
};
};
return (_local2);
}
public function DestroyJoint(_arg1:b2Joint):void{
var _local5:b2Body;
var _local6:b2Shape;
var _local2:Boolean = _arg1.m_collideConnected;
if (_arg1.m_prev){
_arg1.m_prev.m_next = _arg1.m_next;
};
if (_arg1.m_next){
_arg1.m_next.m_prev = _arg1.m_prev;
};
if (_arg1 == m_jointList){
m_jointList = _arg1.m_next;
};
var _local3:b2Body = _arg1.m_body1;
var _local4:b2Body = _arg1.m_body2;
_local3.WakeUp();
_local4.WakeUp();
if (_arg1.m_node1.prev){
_arg1.m_node1.prev.next = _arg1.m_node1.next;
};
if (_arg1.m_node1.next){
_arg1.m_node1.next.prev = _arg1.m_node1.prev;
};
if (_arg1.m_node1 == _local3.m_jointList){
_local3.m_jointList = _arg1.m_node1.next;
};
_arg1.m_node1.prev = null;
_arg1.m_node1.next = null;
if (_arg1.m_node2.prev){
_arg1.m_node2.prev.next = _arg1.m_node2.next;
};
if (_arg1.m_node2.next){
_arg1.m_node2.next.prev = _arg1.m_node2.prev;
};
if (_arg1.m_node2 == _local4.m_jointList){
_local4.m_jointList = _arg1.m_node2.next;
};
_arg1.m_node2.prev = null;
_arg1.m_node2.next = null;
b2Joint.Destroy(_arg1, m_blockAllocator);
m_jointCount--;
if (_local2 == false){
_local5 = ((_local3.m_shapeCount < _local4.m_shapeCount)) ? _local3 : _local4;
_local6 = _local5.m_shapeList;
while (_local6) {
_local6.RefilterProxy(m_broadPhase, _local5.m_xf);
_local6 = _local6.m_next;
};
};
}
public function SetContactListener(_arg1:b2ContactListener):void{
m_contactListener = _arg1;
}
public function CreateBody(_arg1:b2BodyDef):b2Body{
if (m_lock == true){
return (null);
};
var _local2:b2Body = new b2Body(_arg1, this);
_local2.m_prev = null;
_local2.m_next = m_bodyList;
if (m_bodyList){
m_bodyList.m_prev = _local2;
};
m_bodyList = _local2;
m_bodyCount++;
return (_local2);
}
public function SetBoundaryListener(_arg1:b2BoundaryListener):void{
m_boundaryListener = _arg1;
}
public function SetDestructionListener(_arg1:b2DestructionListener):void{
m_destructionListener = _arg1;
}
public function Step(_arg1:Number, _arg2:int):void{
m_lock = true;
var _local3:b2TimeStep = new b2TimeStep();
_local3.dt = _arg1;
_local3.maxIterations = _arg2;
if (_arg1 > 0){
_local3.inv_dt = (1 / _arg1);
} else {
_local3.inv_dt = 0;
};
_local3.dtRatio = (m_inv_dt0 * _arg1);
_local3.positionCorrection = m_positionCorrection;
_local3.warmStarting = m_warmStarting;
m_contactManager.Collide();
if (_local3.dt > 0){
Solve(_local3);
};
if (((m_continuousPhysics) && ((_local3.dt > 0)))){
SolveTOI(_local3);
};
DrawDebugData();
m_inv_dt0 = _local3.inv_dt;
m_lock = false;
}
public function GetBodyCount():int{
return (m_bodyCount);
}
public function GetJointCount():int{
return (m_jointCount);
}
}
}//package Box2D.Dynamics
Section 77
//AuxFunctions (caurina.transitions.AuxFunctions)
package caurina.transitions {
public class AuxFunctions {
public static function getObjectLength(_arg1:Object):uint{
var _local3:String;
var _local2:uint;
for (_local3 in _arg1) {
_local2++;
};
return (_local2);
}
public static function numberToG(_arg1:Number):Number{
return (((_arg1 & 0xFF00) >> 8));
}
public static function numberToB(_arg1:Number):Number{
return ((_arg1 & 0xFF));
}
public static function numberToR(_arg1:Number):Number{
return (((_arg1 & 0xFF0000) >> 16));
}
public static function concatObjects(... _args):Object{
var _local3:Object;
var _local5:String;
var _local2:Object = {};
var _local4:int;
while (_local4 < _args.length) {
_local3 = _args[_local4];
for (_local5 in _local3) {
if (_local3[_local5] == null){
delete _local2[_local5];
} else {
_local2[_local5] = _local3[_local5];
};
};
_local4++;
};
return (_local2);
}
}
}//package caurina.transitions
Section 78
//Equations (caurina.transitions.Equations)
package caurina.transitions {
public class Equations {
public function Equations(){
trace("Equations is a static class and should not be instantiated.");
}
public static function easeOutBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
if (_arg1 < (1 / 2.75)){
return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2));
};
if (_arg1 < (2 / 2.75)){
_arg1 = (_arg1 - (1.5 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2));
};
if (_arg1 < (2.5 / 2.75)){
_arg1 = (_arg1 - (2.25 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2));
};
_arg1 = (_arg1 - (2.625 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2));
}
public static function easeInOutElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 == 2){
return ((_arg2 + _arg3));
};
var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.period)))) ? (_arg4 * (0.3 * 1.5)) : _arg5.period;
var _local8:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.amplitude)))) ? 0 : _arg5.amplitude;
if (((!(Boolean(_local8))) || ((_local8 < Math.abs(_arg3))))){
_local8 = _arg3;
_local7 = (_local6 / 4);
} else {
_local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local8)));
};
if (_arg1 < 1){
--_arg1;
return (((-0.5 * ((_local8 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2));
};
--_arg1;
return ((((((_local8 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) * 0.5) + _arg3) + _arg2));
}
public static function easeInOutQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2));
};
--_arg1;
return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2));
}
public static function easeInOutBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (((easeInBounce((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2));
};
return ((((easeOutBounce(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2));
}
public static function easeInOutBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.overshoot)))) ? 1.70158 : _arg5.overshoot;
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_local6 = (_local6 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_local6 + 1) * _arg1) - _local6))) + _arg2));
};
_arg1 = (_arg1 - 2);
_local6 = (_local6 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_local6 + 1) * _arg1) + _local6)) + 2)) + _arg2));
}
public static function easeOutInCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutCubic((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInCubic(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeOutBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.overshoot)))) ? 1.70158 : _arg5.overshoot;
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_local6 + 1) * _arg1) + _local6)) + 1)) + _arg2));
}
public static function easeInOutSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2));
}
public static function easeInBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.overshoot)))) ? 1.70158 : _arg5.overshoot;
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_local6 + 1) * _arg1) - _local6)) + _arg2));
}
public static function easeInQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeOutInQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutQuint((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInQuint(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeOutInBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutBounce((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInBounce(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function init():void{
Tweener.registerTransition("easenone", easeNone);
Tweener.registerTransition("linear", easeNone);
Tweener.registerTransition("easeinquad", easeInQuad);
Tweener.registerTransition("easeoutquad", easeOutQuad);
Tweener.registerTransition("easeinoutquad", easeInOutQuad);
Tweener.registerTransition("easeoutinquad", easeOutInQuad);
Tweener.registerTransition("easeincubic", easeInCubic);
Tweener.registerTransition("easeoutcubic", easeOutCubic);
Tweener.registerTransition("easeinoutcubic", easeInOutCubic);
Tweener.registerTransition("easeoutincubic", easeOutInCubic);
Tweener.registerTransition("easeinquart", easeInQuart);
Tweener.registerTransition("easeoutquart", easeOutQuart);
Tweener.registerTransition("easeinoutquart", easeInOutQuart);
Tweener.registerTransition("easeoutinquart", easeOutInQuart);
Tweener.registerTransition("easeinquint", easeInQuint);
Tweener.registerTransition("easeoutquint", easeOutQuint);
Tweener.registerTransition("easeinoutquint", easeInOutQuint);
Tweener.registerTransition("easeoutinquint", easeOutInQuint);
Tweener.registerTransition("easeinsine", easeInSine);
Tweener.registerTransition("easeoutsine", easeOutSine);
Tweener.registerTransition("easeinoutsine", easeInOutSine);
Tweener.registerTransition("easeoutinsine", easeOutInSine);
Tweener.registerTransition("easeincirc", easeInCirc);
Tweener.registerTransition("easeoutcirc", easeOutCirc);
Tweener.registerTransition("easeinoutcirc", easeInOutCirc);
Tweener.registerTransition("easeoutincirc", easeOutInCirc);
Tweener.registerTransition("easeinexpo", easeInExpo);
Tweener.registerTransition("easeoutexpo", easeOutExpo);
Tweener.registerTransition("easeinoutexpo", easeInOutExpo);
Tweener.registerTransition("easeoutinexpo", easeOutInExpo);
Tweener.registerTransition("easeinelastic", easeInElastic);
Tweener.registerTransition("easeoutelastic", easeOutElastic);
Tweener.registerTransition("easeinoutelastic", easeInOutElastic);
Tweener.registerTransition("easeoutinelastic", easeOutInElastic);
Tweener.registerTransition("easeinback", easeInBack);
Tweener.registerTransition("easeoutback", easeOutBack);
Tweener.registerTransition("easeinoutback", easeInOutBack);
Tweener.registerTransition("easeoutinback", easeOutInBack);
Tweener.registerTransition("easeinbounce", easeInBounce);
Tweener.registerTransition("easeoutbounce", easeOutBounce);
Tweener.registerTransition("easeinoutbounce", easeInOutBounce);
Tweener.registerTransition("easeoutinbounce", easeOutInBounce);
}
public static function easeOutExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return (((_arg1)==_arg4) ? (_arg2 + _arg3) : (((_arg3 * 1.001) * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2));
}
public static function easeOutInBack(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutBack((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInBack(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeInExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return (((_arg1)==0) ? _arg2 : (((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2) - (_arg3 * 0.001)));
}
public static function easeInCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeInQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function easeInOutCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((-(_arg3) / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2));
}
public static function easeInQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
return ((((_arg3 * _arg1) * _arg1) + _arg2));
}
public static function easeInBounce(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return (((_arg3 - easeOutBounce((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2));
}
public static function easeOutInExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutExpo((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInExpo(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeOutQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2));
}
public static function easeInSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg3) + _arg2));
}
public static function easeInOutQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2));
}
public static function easeOutQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function easeOutInElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutElastic((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInElastic(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeInElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.period)))) ? (_arg4 * 0.3) : _arg5.period;
var _local8:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.amplitude)))) ? 0 : _arg5.amplitude;
if (((!(Boolean(_local8))) || ((_local8 < Math.abs(_arg3))))){
_local8 = _arg3;
_local7 = (_local6 / 4);
} else {
_local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local8)));
};
--_arg1;
return ((-(((_local8 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6)))) + _arg2));
}
public static function easeOutCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeOutQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2));
}
public static function easeOutInQuad(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutQuad((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInQuad(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeOutSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2));
}
public static function easeInOutCubic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2));
}
public static function easeInOutQuint(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2));
}
public static function easeInCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = (_arg1 / _arg4);
return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
}
public static function easeOutInSine(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutSine((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInSine(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeInOutExpo(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 == 0){
return (_arg2);
};
if (_arg1 == _arg4){
return ((_arg2 + _arg3));
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2) - (_arg3 * 0.0005)));
};
--_arg1;
return (((((_arg3 / 2) * 1.0005) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2));
}
public static function easeOutElastic(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
var _local6:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.period)))) ? (_arg4 * 0.3) : _arg5.period;
var _local8:Number = (((!(Boolean(_arg5))) || (isNaN(_arg5.amplitude)))) ? 0 : _arg5.amplitude;
if (((!(Boolean(_local8))) || ((_local8 < Math.abs(_arg3))))){
_local8 = _arg3;
_local7 = (_local6 / 4);
} else {
_local7 = ((_local6 / (2 * Math.PI)) * Math.asin((_arg3 / _local8)));
};
return (((((_local8 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _local6))) + _arg3) + _arg2));
}
public static function easeOutCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2));
}
public static function easeOutInQuart(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutQuart((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInQuart(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
public static function easeOutInCirc(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Object=null):Number{
if (_arg1 < (_arg4 / 2)){
return (easeOutCirc((_arg1 * 2), _arg2, (_arg3 / 2), _arg4, _arg5));
};
return (easeInCirc(((_arg1 * 2) - _arg4), (_arg2 + (_arg3 / 2)), (_arg3 / 2), _arg4, _arg5));
}
}
}//package caurina.transitions
Section 79
//PropertyInfoObj (caurina.transitions.PropertyInfoObj)
package caurina.transitions {
public class PropertyInfoObj {
public var modifierParameters:Array;
public var isSpecialProperty:Boolean;
public var valueComplete:Number;
public var modifierFunction:Function;
public var extra:Object;
public var valueStart:Number;
public var hasModifier:Boolean;
public var arrayIndex:Number;
public var originalValueComplete:Object;
public function PropertyInfoObj(_arg1:Number, _arg2:Number, _arg3:Object, _arg4:Number, _arg5:Object, _arg6:Boolean, _arg7:Function, _arg8:Array){
valueStart = _arg1;
valueComplete = _arg2;
originalValueComplete = _arg3;
arrayIndex = _arg4;
extra = _arg5;
isSpecialProperty = _arg6;
hasModifier = Boolean(_arg7);
modifierFunction = _arg7;
modifierParameters = _arg8;
}
public function toString():String{
var _local1 = "\n[PropertyInfoObj ";
_local1 = (_local1 + ("valueStart:" + String(valueStart)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("valueComplete:" + String(valueComplete)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("originalValueComplete:" + String(originalValueComplete)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("arrayIndex:" + String(arrayIndex)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("extra:" + String(extra)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("isSpecialProperty:" + String(isSpecialProperty)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("hasModifier:" + String(hasModifier)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("modifierFunction:" + String(modifierFunction)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("modifierParameters:" + String(modifierParameters)));
_local1 = (_local1 + "]\n");
return (_local1);
}
public function clone():PropertyInfoObj{
var _local1:PropertyInfoObj = new PropertyInfoObj(valueStart, valueComplete, originalValueComplete, arrayIndex, extra, isSpecialProperty, modifierFunction, modifierParameters);
return (_local1);
}
}
}//package caurina.transitions
Section 80
//SpecialProperty (caurina.transitions.SpecialProperty)
package caurina.transitions {
public class SpecialProperty {
public var parameters:Array;
public var getValue:Function;
public var preProcess:Function;
public var setValue:Function;
public function SpecialProperty(_arg1:Function, _arg2:Function, _arg3:Array=null, _arg4:Function=null){
getValue = _arg1;
setValue = _arg2;
parameters = _arg3;
preProcess = _arg4;
}
public function toString():String{
var _local1 = "";
_local1 = (_local1 + "[SpecialProperty ");
_local1 = (_local1 + ("getValue:" + String(getValue)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("setValue:" + String(setValue)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("parameters:" + String(parameters)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("preProcess:" + String(preProcess)));
_local1 = (_local1 + "]");
return (_local1);
}
}
}//package caurina.transitions
Section 81
//SpecialPropertyModifier (caurina.transitions.SpecialPropertyModifier)
package caurina.transitions {
public class SpecialPropertyModifier {
public var getValue:Function;
public var modifyValues:Function;
public function SpecialPropertyModifier(_arg1:Function, _arg2:Function){
modifyValues = _arg1;
getValue = _arg2;
}
public function toString():String{
var _local1 = "";
_local1 = (_local1 + "[SpecialPropertyModifier ");
_local1 = (_local1 + ("modifyValues:" + String(modifyValues)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("getValue:" + String(getValue)));
_local1 = (_local1 + "]");
return (_local1);
}
}
}//package caurina.transitions
Section 82
//SpecialPropertySplitter (caurina.transitions.SpecialPropertySplitter)
package caurina.transitions {
public class SpecialPropertySplitter {
public var parameters:Array;
public var splitValues:Function;
public function SpecialPropertySplitter(_arg1:Function, _arg2:Array){
splitValues = _arg1;
parameters = _arg2;
}
public function toString():String{
var _local1 = "";
_local1 = (_local1 + "[SpecialPropertySplitter ");
_local1 = (_local1 + ("splitValues:" + String(splitValues)));
_local1 = (_local1 + ", ");
_local1 = (_local1 + ("parameters:" + String(parameters)));
_local1 = (_local1 + "]");
return (_local1);
}
}
}//package caurina.transitions
Section 83
//Tweener (caurina.transitions.Tweener)
package caurina.transitions {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Tweener {
private static var _timeScale:Number = 1;
private static var _currentTimeFrame:Number;
private static var _specialPropertySplitterList:Object;
private static var _engineExists:Boolean = false;
private static var _specialPropertyModifierList:Object;
private static var _currentTime:Number;
private static var _tweenList:Array;
private static var _specialPropertyList:Object;
private static var _transitionList:Object;
private static var _inited:Boolean = false;
private static var __tweener_controller__:MovieClip;
public function Tweener(){
trace("Tweener is a static class and should not be instantiated.");
}
public static function registerSpecialPropertyModifier(_arg1:String, _arg2:Function, _arg3:Function):void{
if (!_inited){
init();
};
var _local4:SpecialPropertyModifier = new SpecialPropertyModifier(_arg2, _arg3);
_specialPropertyModifierList[_arg1] = _local4;
}
public static function registerSpecialProperty(_arg1:String, _arg2:Function, _arg3:Function, _arg4:Array=null, _arg5:Function=null):void{
if (!_inited){
init();
};
var _local6:SpecialProperty = new SpecialProperty(_arg2, _arg3, _arg4, _arg5);
_specialPropertyList[_arg1] = _local6;
}
public static function init(... _args):void{
_inited = true;
_transitionList = new Object();
Equations.init();
_specialPropertyList = new Object();
_specialPropertyModifierList = new Object();
_specialPropertySplitterList = new Object();
}
private static function updateTweens():Boolean{
var _local1:int;
if (_tweenList.length == 0){
return (false);
};
_local1 = 0;
while (_local1 < _tweenList.length) {
if ((((_tweenList[_local1] == undefined)) || (!(_tweenList[_local1].isPaused)))){
if (!updateTweenByIndex(_local1)){
removeTweenByIndex(_local1);
};
if (_tweenList[_local1] == null){
removeTweenByIndex(_local1, true);
_local1--;
};
};
_local1++;
};
return (true);
}
public static function addCaller(_arg1:Object=null, _arg2:Object=null):Boolean{
var _local3:Number;
var _local4:Array;
var _local8:Function;
var _local9:TweenListObj;
var _local10:Number;
var _local11:String;
if (!Boolean(_arg1)){
return (false);
};
if ((_arg1 is Array)){
_local4 = _arg1.concat();
} else {
_local4 = [_arg1];
};
var _local5:Object = _arg2;
if (!_inited){
init();
};
if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){
startEngine();
};
var _local6:Number = (isNaN(_local5.time)) ? 0 : _local5.time;
var _local7:Number = (isNaN(_local5.delay)) ? 0 : _local5.delay;
if (typeof(_local5.transition) == "string"){
_local11 = _local5.transition.toLowerCase();
_local8 = _transitionList[_local11];
} else {
_local8 = _local5.transition;
};
if (!Boolean(_local8)){
_local8 = _transitionList["easeoutexpo"];
};
_local3 = 0;
while (_local3 < _local4.length) {
if (_local5.useFrames == true){
_local9 = new TweenListObj(_local4[_local3], (_currentTimeFrame + (_local7 / _timeScale)), (_currentTimeFrame + ((_local7 + _local6) / _timeScale)), true, _local8, _local5.transitionParams);
} else {
_local9 = new TweenListObj(_local4[_local3], (_currentTime + ((_local7 * 1000) / _timeScale)), (_currentTime + (((_local7 * 1000) + (_local6 * 1000)) / _timeScale)), false, _local8, _local5.transitionParams);
};
_local9.properties = null;
_local9.onStart = _local5.onStart;
_local9.onUpdate = _local5.onUpdate;
_local9.onComplete = _local5.onComplete;
_local9.onOverwrite = _local5.onOverwrite;
_local9.onStartParams = _local5.onStartParams;
_local9.onUpdateParams = _local5.onUpdateParams;
_local9.onCompleteParams = _local5.onCompleteParams;
_local9.onOverwriteParams = _local5.onOverwriteParams;
_local9.onStartScope = _local5.onStartScope;
_local9.onUpdateScope = _local5.onUpdateScope;
_local9.onCompleteScope = _local5.onCompleteScope;
_local9.onOverwriteScope = _local5.onOverwriteScope;
_local9.onErrorScope = _local5.onErrorScope;
_local9.isCaller = true;
_local9.count = _local5.count;
_local9.waitFrames = _local5.waitFrames;
_tweenList.push(_local9);
if ((((_local6 == 0)) && ((_local7 == 0)))){
_local10 = (_tweenList.length - 1);
updateTweenByIndex(_local10);
removeTweenByIndex(_local10);
};
_local3++;
};
return (true);
}
public static function pauseAllTweens():Boolean{
var _local2:uint;
if (!Boolean(_tweenList)){
return (false);
};
var _local1:Boolean;
_local2 = 0;
while (_local2 < _tweenList.length) {
pauseTweenByIndex(_local2);
_local1 = true;
_local2++;
};
return (_local1);
}
public static function removeTweens(_arg1:Object, ... _args):Boolean{
var _local4:uint;
var _local5:SpecialPropertySplitter;
var _local6:Array;
var _local7:uint;
var _local3:Array = new Array();
_local4 = 0;
while (_local4 < _args.length) {
if ((((typeof(_args[_local4]) == "string")) && ((_local3.indexOf(_args[_local4]) == -1)))){
if (_specialPropertySplitterList[_args[_local4]]){
_local5 = _specialPropertySplitterList[_args[_local4]];
_local6 = _local5.splitValues(_arg1, null);
_local7 = 0;
while (_local7 < _local6.length) {
_local3.push(_local6[_local7].name);
_local7++;
};
} else {
_local3.push(_args[_local4]);
};
};
_local4++;
};
return (affectTweens(removeTweenByIndex, _arg1, _local3));
}
public static function splitTweens(_arg1:Number, _arg2:Array):uint{
var _local5:uint;
var _local6:String;
var _local7:Boolean;
var _local3:TweenListObj = _tweenList[_arg1];
var _local4:TweenListObj = _local3.clone(false);
_local5 = 0;
while (_local5 < _arg2.length) {
_local6 = _arg2[_local5];
if (Boolean(_local3.properties[_local6])){
_local3.properties[_local6] = undefined;
delete _local3.properties[_local6];
};
_local5++;
};
for (_local6 in _local4.properties) {
_local7 = false;
_local5 = 0;
while (_local5 < _arg2.length) {
if (_arg2[_local5] == _local6){
_local7 = true;
break;
};
_local5++;
};
if (!_local7){
_local4.properties[_local6] = undefined;
delete _local4.properties[_local6];
};
};
_tweenList.push(_local4);
return ((_tweenList.length - 1));
}
public static function updateFrame():void{
_currentTimeFrame++;
}
public static function resumeTweenByIndex(_arg1:Number):Boolean{
var _local2:TweenListObj = _tweenList[_arg1];
if ((((_local2 == null)) || (!(_local2.isPaused)))){
return (false);
};
var _local3:Number = getCurrentTweeningTime(_local2);
_local2.timeStart = (_local2.timeStart + (_local3 - _local2.timePaused));
_local2.timeComplete = (_local2.timeComplete + (_local3 - _local2.timePaused));
_local2.timePaused = undefined;
_local2.isPaused = false;
return (true);
}
public static function getVersion():String{
return ("AS3 1.31.74");
}
public static function onEnterFrame(_arg1:Event):void{
updateTime();
updateFrame();
var _local2:Boolean;
_local2 = updateTweens();
if (!_local2){
stopEngine();
};
}
public static function updateTime():void{
_currentTime = getTimer();
}
private static function updateTweenByIndex(_arg1:Number):Boolean{
var tTweening:TweenListObj;
var mustUpdate:Boolean;
var nv:Number;
var t:Number;
var b:Number;
var c:Number;
var d:Number;
var pName:String;
var eventScope:Object;
var tScope:Object;
var tProperty:Object;
var pv:Number;
var i = _arg1;
tTweening = _tweenList[i];
if ((((tTweening == null)) || (!(Boolean(tTweening.scope))))){
return (false);
};
var isOver:Boolean;
var cTime:Number = getCurrentTweeningTime(tTweening);
if (cTime >= tTweening.timeStart){
tScope = tTweening.scope;
if (tTweening.isCaller){
do {
t = (((tTweening.timeComplete - tTweening.timeStart) / tTweening.count) * (tTweening.timesCalled + 1));
b = tTweening.timeStart;
c = (tTweening.timeComplete - tTweening.timeStart);
d = (tTweening.timeComplete - tTweening.timeStart);
nv = tTweening.transition(t, b, c, d);
} while (!(cTime >= nv));
} else {
mustUpdate = (((((tTweening.skipUpdates < 1)) || (!(tTweening.skipUpdates)))) || ((tTweening.updatesSkipped >= tTweening.skipUpdates)));
if (cTime >= tTweening.timeComplete){
isOver = true;
mustUpdate = true;
};
if (!tTweening.hasStarted){
if (Boolean(tTweening.onStart)){
eventScope = (Boolean(tTweening.onStartScope)) ? tTweening.onStartScope : tScope;
try {
tTweening.onStart.apply(eventScope, tTweening.onStartParams);
} catch(e2:Error) {
handleError(tTweening, e2, "onStart");
};
};
for (pName in tTweening.properties) {
if (tTweening.properties[pName].isSpecialProperty){
if (Boolean(_specialPropertyList[pName].preProcess)){
tTweening.properties[pName].valueComplete = _specialPropertyList[pName].preProcess(tScope, _specialPropertyList[pName].parameters, tTweening.properties[pName].originalValueComplete, tTweening.properties[pName].extra);
};
pv = _specialPropertyList[pName].getValue(tScope, _specialPropertyList[pName].parameters, tTweening.properties[pName].extra);
} else {
pv = tScope[pName];
};
tTweening.properties[pName].valueStart = (isNaN(pv)) ? tTweening.properties[pName].valueComplete : pv;
};
mustUpdate = true;
tTweening.hasStarted = true;
};
if (mustUpdate){
for (pName in tTweening.properties) {
tProperty = tTweening.properties[pName];
if (isOver){
nv = tProperty.valueComplete;
} else {
if (tProperty.hasModifier){
t = (cTime - tTweening.timeStart);
d = (tTweening.timeComplete - tTweening.timeStart);
nv = tTweening.transition(t, 0, 1, d, tTweening.transitionParams);
nv = tProperty.modifierFunction(tProperty.valueStart, tProperty.valueComplete, nv, tProperty.modifierParameters);
} else {
t = (cTime - tTweening.timeStart);
b = tProperty.valueStart;
c = (tProperty.valueComplete - tProperty.valueStart);
d = (tTweening.timeComplete - tTweening.timeStart);
nv = tTweening.transition(t, b, c, d, tTweening.transitionParams);
};
};
if (tTweening.rounded){
nv = Math.round(nv);
};
if (tProperty.isSpecialProperty){
_specialPropertyList[pName].setValue(tScope, nv, _specialPropertyList[pName].parameters, tTweening.properties[pName].extra);
} else {
tScope[pName] = nv;
};
};
tTweening.updatesSkipped = 0;
if (Boolean(tTweening.onUpdate)){
eventScope = (Boolean(tTweening.onUpdateScope)) ? tTweening.onUpdateScope : tScope;
try {
tTweening.onUpdate.apply(eventScope, tTweening.onUpdateParams);
} catch(e3:Error) {
handleError(tTweening, e3, "onUpdate");
};
};
} else {
tTweening.updatesSkipped++;
};
};
if (((isOver) && (Boolean(tTweening.onComplete)))){
eventScope = (Boolean(tTweening.onCompleteScope)) ? tTweening.onCompleteScope : tScope;
try {
tTweening.onComplete.apply(eventScope, tTweening.onCompleteParams);
} catch(e4:Error) {
handleError(tTweening, e4, "onComplete");
};
};
return (!(isOver));
};
return (true);
}
public static function setTimeScale(_arg1:Number):void{
var _local2:Number;
var _local3:Number;
if (isNaN(_arg1)){
_arg1 = 1;
};
if (_arg1 < 1E-5){
_arg1 = 1E-5;
};
if (_arg1 != _timeScale){
if (_tweenList != null){
_local2 = 0;
while (_local2 < _tweenList.length) {
_local3 = getCurrentTweeningTime(_tweenList[_local2]);
_tweenList[_local2].timeStart = (_local3 - (((_local3 - _tweenList[_local2].timeStart) * _timeScale) / _arg1));
_tweenList[_local2].timeComplete = (_local3 - (((_local3 - _tweenList[_local2].timeComplete) * _timeScale) / _arg1));
if (_tweenList[_local2].timePaused != undefined){
_tweenList[_local2].timePaused = (_local3 - (((_local3 - _tweenList[_local2].timePaused) * _timeScale) / _arg1));
};
_local2++;
};
};
_timeScale = _arg1;
};
}
public static function resumeAllTweens():Boolean{
var _local2:uint;
if (!Boolean(_tweenList)){
return (false);
};
var _local1:Boolean;
_local2 = 0;
while (_local2 < _tweenList.length) {
resumeTweenByIndex(_local2);
_local1 = true;
_local2++;
};
return (_local1);
}
private static function handleError(_arg1:TweenListObj, _arg2:Error, _arg3:String):void{
var eventScope:Object;
var pTweening = _arg1;
var pError = _arg2;
var pCallBackName = _arg3;
if (((Boolean(pTweening.onError)) && ((pTweening.onError is Function)))){
eventScope = (Boolean(pTweening.onErrorScope)) ? pTweening.onErrorScope : pTweening.scope;
try {
pTweening.onError.apply(eventScope, [pTweening.scope, pError]);
} catch(metaError:Error) {
printError(((((String(pTweening.scope) + " raised an error while executing the 'onError' handler. Original error:\n ") + pError.getStackTrace()) + "\nonError error: ") + metaError.getStackTrace()));
};
} else {
if (!Boolean(pTweening.onError)){
printError(((((String(pTweening.scope) + " raised an error while executing the '") + pCallBackName) + "'handler. \n") + pError.getStackTrace()));
};
};
}
private static function startEngine():void{
_engineExists = true;
_tweenList = new Array();
__tweener_controller__ = new MovieClip();
__tweener_controller__.addEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame);
_currentTimeFrame = 0;
updateTime();
}
public static function removeAllTweens():Boolean{
var _local2:uint;
if (!Boolean(_tweenList)){
return (false);
};
var _local1:Boolean;
_local2 = 0;
while (_local2 < _tweenList.length) {
removeTweenByIndex(_local2);
_local1 = true;
_local2++;
};
return (_local1);
}
public static function addTween(_arg1:Object=null, _arg2:Object=null):Boolean{
var _local3:Number;
var _local4:Number;
var _local5:String;
var _local6:Array;
var _local13:Function;
var _local14:Object;
var _local15:TweenListObj;
var _local16:Number;
var _local17:Array;
var _local18:Array;
var _local19:Array;
var _local20:String;
if (!Boolean(_arg1)){
return (false);
};
if ((_arg1 is Array)){
_local6 = _arg1.concat();
} else {
_local6 = [_arg1];
};
var _local7:Object = TweenListObj.makePropertiesChain(_arg2);
if (!_inited){
init();
};
if (((!(_engineExists)) || (!(Boolean(__tweener_controller__))))){
startEngine();
};
var _local8:Number = (isNaN(_local7.time)) ? 0 : _local7.time;
var _local9:Number = (isNaN(_local7.delay)) ? 0 : _local7.delay;
var _local10:Array = new Array();
var _local11:Object = {time:true, delay:true, useFrames:true, skipUpdates:true, transition:true, transitionParams:true, onStart:true, onUpdate:true, onComplete:true, onOverwrite:true, onError:true, rounded:true, onStartParams:true, onUpdateParams:true, onCompleteParams:true, onOverwriteParams:true, onStartScope:true, onUpdateScope:true, onCompleteScope:true, onOverwriteScope:true, onErrorScope:true};
var _local12:Object = new Object();
for (_local5 in _local7) {
if (!_local11[_local5]){
if (_specialPropertySplitterList[_local5]){
_local17 = _specialPropertySplitterList[_local5].splitValues(_local7[_local5], _specialPropertySplitterList[_local5].parameters);
_local3 = 0;
while (_local3 < _local17.length) {
if (_specialPropertySplitterList[_local17[_local3].name]){
_local18 = _specialPropertySplitterList[_local17[_local3].name].splitValues(_local17[_local3].value, _specialPropertySplitterList[_local17[_local3].name].parameters);
_local4 = 0;
while (_local4 < _local18.length) {
_local10[_local18[_local4].name] = {valueStart:undefined, valueComplete:_local18[_local4].value, arrayIndex:_local18[_local4].arrayIndex, isSpecialProperty:false};
_local4++;
};
} else {
_local10[_local17[_local3].name] = {valueStart:undefined, valueComplete:_local17[_local3].value, arrayIndex:_local17[_local3].arrayIndex, isSpecialProperty:false};
};
_local3++;
};
} else {
if (_specialPropertyModifierList[_local5] != undefined){
_local19 = _specialPropertyModifierList[_local5].modifyValues(_local7[_local5]);
_local3 = 0;
while (_local3 < _local19.length) {
_local12[_local19[_local3].name] = {modifierParameters:_local19[_local3].parameters, modifierFunction:_specialPropertyModifierList[_local5].getValue};
_local3++;
};
} else {
_local10[_local5] = {valueStart:undefined, valueComplete:_local7[_local5]};
};
};
};
};
for (_local5 in _local10) {
if (_specialPropertyList[_local5] != undefined){
_local10[_local5].isSpecialProperty = true;
} else {
if (_local6[0][_local5] == undefined){
printError((((("The property '" + _local5) + "' doesn't seem to be a normal object property of ") + String(_local6[0])) + " or a registered special property."));
};
};
};
for (_local5 in _local12) {
if (_local10[_local5] != undefined){
_local10[_local5].modifierParameters = _local12[_local5].modifierParameters;
_local10[_local5].modifierFunction = _local12[_local5].modifierFunction;
};
};
if (typeof(_local7.transition) == "string"){
_local20 = _local7.transition.toLowerCase();
_local13 = _transitionList[_local20];
} else {
_local13 = _local7.transition;
};
if (!Boolean(_local13)){
_local13 = _transitionList["easeoutexpo"];
};
_local3 = 0;
while (_local3 < _local6.length) {
_local14 = new Object();
for (_local5 in _local10) {
_local14[_local5] = new PropertyInfoObj(_local10[_local5].valueStart, _local10[_local5].valueComplete, _local10[_local5].valueComplete, _local10[_local5].arrayIndex, {}, _local10[_local5].isSpecialProperty, _local10[_local5].modifierFunction, _local10[_local5].modifierParameters);
};
if (_local7.useFrames == true){
_local15 = new TweenListObj(_local6[_local3], (_currentTimeFrame + (_local9 / _timeScale)), (_currentTimeFrame + ((_local9 + _local8) / _timeScale)), true, _local13, _local7.transitionParams);
} else {
_local15 = new TweenListObj(_local6[_local3], (_currentTime + ((_local9 * 1000) / _timeScale)), (_currentTime + (((_local9 * 1000) + (_local8 * 1000)) / _timeScale)), false, _local13, _local7.transitionParams);
};
_local15.properties = _local14;
_local15.onStart = _local7.onStart;
_local15.onUpdate = _local7.onUpdate;
_local15.onComplete = _local7.onComplete;
_local15.onOverwrite = _local7.onOverwrite;
_local15.onError = _local7.onError;
_local15.onStartParams = _local7.onStartParams;
_local15.onUpdateParams = _local7.onUpdateParams;
_local15.onCompleteParams = _local7.onCompleteParams;
_local15.onOverwriteParams = _local7.onOverwriteParams;
_local15.onStartScope = _local7.onStartScope;
_local15.onUpdateScope = _local7.onUpdateScope;
_local15.onCompleteScope = _local7.onCompleteScope;
_local15.onOverwriteScope = _local7.onOverwriteScope;
_local15.onErrorScope = _local7.onErrorScope;
_local15.rounded = _local7.rounded;
_local15.skipUpdates = _local7.skipUpdates;
removeTweensByTime(_local15.scope, _local15.properties, _local15.timeStart, _local15.timeComplete);
_tweenList.push(_local15);
if ((((_local8 == 0)) && ((_local9 == 0)))){
_local16 = (_tweenList.length - 1);
updateTweenByIndex(_local16);
removeTweenByIndex(_local16);
};
_local3++;
};
return (true);
}
public static function registerTransition(_arg1:String, _arg2:Function):void{
if (!_inited){
init();
};
_transitionList[_arg1] = _arg2;
}
public static function printError(_arg1:String):void{
trace(("## [Tweener] Error: " + _arg1));
}
private static function affectTweens(_arg1:Function, _arg2:Object, _arg3:Array):Boolean{
var _local5:uint;
var _local6:Array;
var _local7:uint;
var _local8:uint;
var _local9:uint;
var _local4:Boolean;
if (!Boolean(_tweenList)){
return (false);
};
_local5 = 0;
while (_local5 < _tweenList.length) {
if (((_tweenList[_local5]) && ((_tweenList[_local5].scope == _arg2)))){
if (_arg3.length == 0){
_arg1(_local5);
_local4 = true;
} else {
_local6 = new Array();
_local7 = 0;
while (_local7 < _arg3.length) {
if (Boolean(_tweenList[_local5].properties[_arg3[_local7]])){
_local6.push(_arg3[_local7]);
};
_local7++;
};
if (_local6.length > 0){
_local8 = AuxFunctions.getObjectLength(_tweenList[_local5].properties);
if (_local8 == _local6.length){
_arg1(_local5);
_local4 = true;
} else {
_local9 = splitTweens(_local5, _local6);
_arg1(_local9);
_local4 = true;
};
};
};
};
_local5++;
};
return (_local4);
}
public static function getTweens(_arg1:Object):Array{
var _local2:uint;
var _local3:String;
if (!Boolean(_tweenList)){
return ([]);
};
var _local4:Array = new Array();
_local2 = 0;
while (_local2 < _tweenList.length) {
if (((Boolean(_tweenList[_local2])) && ((_tweenList[_local2].scope == _arg1)))){
for (_local3 in _tweenList[_local2].properties) {
_local4.push(_local3);
};
};
_local2++;
};
return (_local4);
}
public static function isTweening(_arg1:Object):Boolean{
var _local2:uint;
if (!Boolean(_tweenList)){
return (false);
};
_local2 = 0;
while (_local2 < _tweenList.length) {
if (((Boolean(_tweenList[_local2])) && ((_tweenList[_local2].scope == _arg1)))){
return (true);
};
_local2++;
};
return (false);
}
public static function pauseTweenByIndex(_arg1:Number):Boolean{
var _local2:TweenListObj = _tweenList[_arg1];
if ((((_local2 == null)) || (_local2.isPaused))){
return (false);
};
_local2.timePaused = getCurrentTweeningTime(_local2);
_local2.isPaused = true;
return (true);
}
public static function getCurrentTweeningTime(_arg1:Object):Number{
return ((_arg1.useFrames) ? _currentTimeFrame : _currentTime);
}
public static function getTweenCount(_arg1:Object):Number{
var _local2:uint;
if (!Boolean(_tweenList)){
return (0);
};
var _local3:Number = 0;
_local2 = 0;
while (_local2 < _tweenList.length) {
if (((Boolean(_tweenList[_local2])) && ((_tweenList[_local2].scope == _arg1)))){
_local3 = (_local3 + AuxFunctions.getObjectLength(_tweenList[_local2].properties));
};
_local2++;
};
return (_local3);
}
private static function stopEngine():void{
_engineExists = false;
_tweenList = null;
_currentTime = 0;
_currentTimeFrame = 0;
__tweener_controller__.removeEventListener(Event.ENTER_FRAME, Tweener.onEnterFrame);
__tweener_controller__ = null;
}
public static function removeTweensByTime(_arg1:Object, _arg2:Object, _arg3:Number, _arg4:Number):Boolean{
var removedLocally:Boolean;
var i:uint;
var pName:String;
var eventScope:Object;
var p_scope = _arg1;
var p_properties = _arg2;
var p_timeStart = _arg3;
var p_timeComplete = _arg4;
var removed:Boolean;
var tl:uint = _tweenList.length;
i = 0;
while (i < tl) {
if (((Boolean(_tweenList[i])) && ((p_scope == _tweenList[i].scope)))){
if ((((p_timeComplete > _tweenList[i].timeStart)) && ((p_timeStart < _tweenList[i].timeComplete)))){
removedLocally = false;
for (pName in _tweenList[i].properties) {
if (Boolean(p_properties[pName])){
if (Boolean(_tweenList[i].onOverwrite)){
eventScope = (Boolean(_tweenList[i].onOverwriteScope)) ? _tweenList[i].onOverwriteScope : _tweenList[i].scope;
try {
_tweenList[i].onOverwrite.apply(eventScope, _tweenList[i].onOverwriteParams);
} catch(e:Error) {
handleError(_tweenList[i], e, "onOverwrite");
};
};
_tweenList[i].properties[pName] = undefined;
delete _tweenList[i].properties[pName];
removedLocally = true;
removed = true;
};
};
if (removedLocally){
if (AuxFunctions.getObjectLength(_tweenList[i].properties) == 0){
removeTweenByIndex(i);
};
};
};
};
i = (i + 1);
};
return (removed);
}
public static function registerSpecialPropertySplitter(_arg1:String, _arg2:Function, _arg3:Array=null):void{
if (!_inited){
init();
};
var _local4:SpecialPropertySplitter = new SpecialPropertySplitter(_arg2, _arg3);
_specialPropertySplitterList[_arg1] = _local4;
}
public static function removeTweenByIndex(_arg1:Number, _arg2:Boolean=false):Boolean{
_tweenList[_arg1] = null;
if (_arg2){
_tweenList.splice(_arg1, 1);
};
return (true);
}
public static function resumeTweens(_arg1:Object, ... _args):Boolean{
var _local4:uint;
var _local3:Array = new Array();
_local4 = 0;
while (_local4 < _args.length) {
if ((((typeof(_args[_local4]) == "string")) && ((_local3.indexOf(_args[_local4]) == -1)))){
_local3.push(_args[_local4]);
};
_local4++;
};
return (affectTweens(resumeTweenByIndex, _arg1, _local3));
}
public static function pauseTweens(_arg1:Object, ... _args):Boolean{
var _local4:uint;
var _local3:Array = new Array();
_local4 = 0;
while (_local4 < _args.length) {
if ((((typeof(_args[_local4]) == "string")) && ((_local3.indexOf(_args[_local4]) == -1)))){
_local3.push(_args[_local4]);
};
_local4++;
};
return (affectTweens(pauseTweenByIndex, _arg1, _local3));
}
}
}//package caurina.transitions
Section 84
//TweenListObj (caurina.transitions.TweenListObj)
package caurina.transitions {
public class TweenListObj {
public var hasStarted:Boolean;
public var onUpdate:Function;
public var useFrames:Boolean;
public var count:Number;
public var onOverwriteParams:Array;
public var timeStart:Number;
public var timeComplete:Number;
public var onStartParams:Array;
public var onUpdateScope:Object;
public var rounded:Boolean;
public var onUpdateParams:Array;
public var properties:Object;
public var onComplete:Function;
public var transitionParams:Object;
public var updatesSkipped:Number;
public var onStart:Function;
public var onOverwriteScope:Object;
public var skipUpdates:Number;
public var onStartScope:Object;
public var scope:Object;
public var isCaller:Boolean;
public var timePaused:Number;
public var transition:Function;
public var onCompleteParams:Array;
public var onError:Function;
public var timesCalled:Number;
public var onErrorScope:Object;
public var onOverwrite:Function;
public var isPaused:Boolean;
public var waitFrames:Boolean;
public var onCompleteScope:Object;
public function TweenListObj(_arg1:Object, _arg2:Number, _arg3:Number, _arg4:Boolean, _arg5:Function, _arg6:Object){
scope = _arg1;
timeStart = _arg2;
timeComplete = _arg3;
useFrames = _arg4;
transition = _arg5;
transitionParams = _arg6;
properties = new Object();
isPaused = false;
timePaused = undefined;
isCaller = false;
updatesSkipped = 0;
timesCalled = 0;
skipUpdates = 0;
hasStarted = false;
}
public function clone(_arg1:Boolean):TweenListObj{
var _local3:String;
var _local2:TweenListObj = new TweenListObj(scope, timeStart, timeComplete, useFrames, transition, transitionParams);
_local2.properties = new Array();
for (_local3 in properties) {
_local2.properties[_local3] = properties[_local3].clone();
};
_local2.skipUpdates = skipUpdates;
_local2.updatesSkipped = updatesSkipped;
if (!_arg1){
_local2.onStart = onStart;
_local2.onUpdate = onUpdate;
_local2.onComplete = onComplete;
_local2.onOverwrite = onOverwrite;
_local2.onError = onError;
_local2.onStartParams = onStartParams;
_local2.onUpdateParams = onUpdateParams;
_local2.onCompleteParams = onCompleteParams;
_local2.onOverwriteParams = onOverwriteParams;
_local2.onStartScope = onStartScope;
_local2.onUpdateScope = onUpdateScope;
_local2.onCompleteScope = onCompleteScope;
_local2.onOverwriteScope = onOverwriteScope;
_local2.onErrorScope = onErrorScope;
};
_local2.rounded = rounded;
_local2.isPaused = isPaused;
_local2.timePaused = timePaused;
_local2.isCaller = isCaller;
_local2.count = count;
_local2.timesCalled = timesCalled;
_local2.waitFrames = waitFrames;
_local2.hasStarted = hasStarted;
return (_local2);
}
public function toString():String{
var _local3:String;
var _local1 = "\n[TweenListObj ";
_local1 = (_local1 + ("scope:" + String(scope)));
_local1 = (_local1 + ", properties:");
var _local2:Boolean;
for (_local3 in properties) {
if (!_local2){
_local1 = (_local1 + ",");
};
_local1 = (_local1 + ("[name:" + properties[_local3].name));
_local1 = (_local1 + (",valueStart:" + properties[_local3].valueStart));
_local1 = (_local1 + (",valueComplete:" + properties[_local3].valueComplete));
_local1 = (_local1 + "]");
_local2 = false;
};
_local1 = (_local1 + (", timeStart:" + String(timeStart)));
_local1 = (_local1 + (", timeComplete:" + String(timeComplete)));
_local1 = (_local1 + (", useFrames:" + String(useFrames)));
_local1 = (_local1 + (", transition:" + String(transition)));
_local1 = (_local1 + (", transitionParams:" + String(transitionParams)));
if (skipUpdates){
_local1 = (_local1 + (", skipUpdates:" + String(skipUpdates)));
};
if (updatesSkipped){
_local1 = (_local1 + (", updatesSkipped:" + String(updatesSkipped)));
};
if (Boolean(onStart)){
_local1 = (_local1 + (", onStart:" + String(onStart)));
};
if (Boolean(onUpdate)){
_local1 = (_local1 + (", onUpdate:" + String(onUpdate)));
};
if (Boolean(onComplete)){
_local1 = (_local1 + (", onComplete:" + String(onComplete)));
};
if (Boolean(onOverwrite)){
_local1 = (_local1 + (", onOverwrite:" + String(onOverwrite)));
};
if (Boolean(onError)){
_local1 = (_local1 + (", onError:" + String(onError)));
};
if (onStartParams){
_local1 = (_local1 + (", onStartParams:" + String(onStartParams)));
};
if (onUpdateParams){
_local1 = (_local1 + (", onUpdateParams:" + String(onUpdateParams)));
};
if (onCompleteParams){
_local1 = (_local1 + (", onCompleteParams:" + String(onCompleteParams)));
};
if (onOverwriteParams){
_local1 = (_local1 + (", onOverwriteParams:" + String(onOverwriteParams)));
};
if (onStartScope){
_local1 = (_local1 + (", onStartScope:" + String(onStartScope)));
};
if (onUpdateScope){
_local1 = (_local1 + (", onUpdateScope:" + String(onUpdateScope)));
};
if (onCompleteScope){
_local1 = (_local1 + (", onCompleteScope:" + String(onCompleteScope)));
};
if (onOverwriteScope){
_local1 = (_local1 + (", onOverwriteScope:" + String(onOverwriteScope)));
};
if (onErrorScope){
_local1 = (_local1 + (", onErrorScope:" + String(onErrorScope)));
};
if (rounded){
_local1 = (_local1 + (", rounded:" + String(rounded)));
};
if (isPaused){
_local1 = (_local1 + (", isPaused:" + String(isPaused)));
};
if (timePaused){
_local1 = (_local1 + (", timePaused:" + String(timePaused)));
};
if (isCaller){
_local1 = (_local1 + (", isCaller:" + String(isCaller)));
};
if (count){
_local1 = (_local1 + (", count:" + String(count)));
};
if (timesCalled){
_local1 = (_local1 + (", timesCalled:" + String(timesCalled)));
};
if (waitFrames){
_local1 = (_local1 + (", waitFrames:" + String(waitFrames)));
};
if (hasStarted){
_local1 = (_local1 + (", hasStarted:" + String(hasStarted)));
};
_local1 = (_local1 + "]\n");
return (_local1);
}
public static function makePropertiesChain(_arg1:Object):Object{
var _local3:Object;
var _local4:Object;
var _local5:Object;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local2:Object = _arg1.base;
if (_local2){
_local3 = {};
if ((_local2 is Array)){
_local4 = [];
_local8 = 0;
while (_local8 < _local2.length) {
_local4.push(_local2[_local8]);
_local8++;
};
} else {
_local4 = [_local2];
};
_local4.push(_arg1);
_local6 = _local4.length;
_local7 = 0;
while (_local7 < _local6) {
if (_local4[_local7]["base"]){
_local5 = AuxFunctions.concatObjects(makePropertiesChain(_local4[_local7]["base"]), _local4[_local7]);
} else {
_local5 = _local4[_local7];
};
_local3 = AuxFunctions.concatObjects(_local3, _local5);
_local7++;
};
if (_local3["base"]){
delete _local3["base"];
};
return (_local3);
//unresolved jump
};
return (_arg1);
}
}
}//package caurina.transitions
Section 85
//JSONDecoder (com.adobe.serialization.json.JSONDecoder)
package com.adobe.serialization.json {
public class JSONDecoder {
private var value;
private var tokenizer:JSONTokenizer;
private var token:JSONToken;
public function JSONDecoder(_arg1:String){
tokenizer = new JSONTokenizer(_arg1);
nextToken();
value = parseValue();
}
private function nextToken():JSONToken{
return ((token = tokenizer.getNextToken()));
}
private function parseObject():Object{
var _local1:Object;
var _local2:String;
_local1 = new Object();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
while (true) {
if (token.type == JSONTokenType.STRING){
_local2 = String(token.value);
nextToken();
if (token.type == JSONTokenType.COLON){
nextToken();
_local1[_local2] = parseValue();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACE){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting } or , but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting : but found " + token.value));
};
} else {
tokenizer.parseError(("Expecting string but found " + token.value));
};
};
return (null);
}
private function parseArray():Array{
var _local1:Array;
_local1 = new Array();
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
while (true) {
_local1.push(parseValue());
nextToken();
if (token.type == JSONTokenType.RIGHT_BRACKET){
return (_local1);
};
if (token.type == JSONTokenType.COMMA){
nextToken();
} else {
tokenizer.parseError(("Expecting ] or , but found " + token.value));
};
};
return (null);
}
public function getValue(){
return (value);
}
private function parseValue():Object{
if (token == null){
tokenizer.parseError("Unexpected end of input");
};
switch (token.type){
case JSONTokenType.LEFT_BRACE:
return (parseObject());
case JSONTokenType.LEFT_BRACKET:
return (parseArray());
case JSONTokenType.STRING:
case JSONTokenType.NUMBER:
case JSONTokenType.TRUE:
case JSONTokenType.FALSE:
case JSONTokenType.NULL:
return (token.value);
default:
tokenizer.parseError(("Unexpected " + token.value));
};
return (null);
}
}
}//package com.adobe.serialization.json
Section 86
//JSONParseError (com.adobe.serialization.json.JSONParseError)
package com.adobe.serialization.json {
public class JSONParseError extends Error {
private var _text:String;
private var _location:int;
public function JSONParseError(_arg1:String="", _arg2:int=0, _arg3:String=""){
super(_arg1);
_location = _arg2;
_text = _arg3;
}
public function get text():String{
return (_text);
}
public function get location():int{
return (_location);
}
}
}//package com.adobe.serialization.json
Section 87
//JSONToken (com.adobe.serialization.json.JSONToken)
package com.adobe.serialization.json {
public class JSONToken {
private var _value:Object;
private var _type:int;
public function JSONToken(_arg1:int=-1, _arg2:Object=null){
_type = _arg1;
_value = _arg2;
}
public function set value(_arg1:Object):void{
_value = _arg1;
}
public function get value():Object{
return (_value);
}
public function set type(_arg1:int):void{
_type = _arg1;
}
public function get type():int{
return (_type);
}
}
}//package com.adobe.serialization.json
Section 88
//JSONTokenizer (com.adobe.serialization.json.JSONTokenizer)
package com.adobe.serialization.json {
public class JSONTokenizer {
private var loc:int;
private var ch:String;
private var obj:Object;
private var jsonString:String;
public function JSONTokenizer(_arg1:String){
jsonString = _arg1;
loc = 0;
nextChar();
}
private function skipComments():void{
if (ch == "/"){
nextChar();
switch (ch){
case "/":
do {
nextChar();
} while (((!((ch == "\n"))) && (!((ch == "")))));
nextChar();
break;
case "*":
nextChar();
while (true) {
if (ch == "*"){
nextChar();
if (ch == "/"){
nextChar();
break;
};
} else {
nextChar();
};
if (ch == ""){
parseError("Multi-line comment not closed");
};
};
break;
default:
parseError((("Unexpected " + ch) + " encountered (expecting '/' or '*' )"));
};
};
}
private function isDigit(_arg1:String):Boolean{
return ((((_arg1 >= "0")) && ((_arg1 <= "9"))));
}
private function readNumber():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:Number;
_local1 = new JSONToken();
_local1.type = JSONTokenType.NUMBER;
_local2 = "";
if (ch == "-"){
_local2 = (_local2 + "-");
nextChar();
};
if (!isDigit(ch)){
parseError("Expecting a digit");
};
if (ch == "0"){
_local2 = (_local2 + ch);
nextChar();
if (isDigit(ch)){
parseError("A digit cannot immediately follow 0");
};
} else {
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
if (ch == "."){
_local2 = (_local2 + ".");
nextChar();
if (!isDigit(ch)){
parseError("Expecting a digit");
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
if ((((ch == "e")) || ((ch == "E")))){
_local2 = (_local2 + "e");
nextChar();
if ((((ch == "+")) || ((ch == "-")))){
_local2 = (_local2 + ch);
nextChar();
};
if (!isDigit(ch)){
parseError("Scientific notation number needs exponent value");
};
while (isDigit(ch)) {
_local2 = (_local2 + ch);
nextChar();
};
};
_local3 = Number(_local2);
if (((isFinite(_local3)) && (!(isNaN(_local3))))){
_local1.value = _local3;
return (_local1);
};
parseError((("Number " + _local3) + " is not valid!"));
return (null);
}
private function nextChar():String{
return ((ch = jsonString.charAt(loc++)));
}
public function getNextToken():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:String;
var _local4:String;
_local1 = new JSONToken();
skipIgnored();
switch (ch){
case "{":
_local1.type = JSONTokenType.LEFT_BRACE;
_local1.value = "{";
nextChar();
break;
case "}":
_local1.type = JSONTokenType.RIGHT_BRACE;
_local1.value = "}";
nextChar();
break;
case "[":
_local1.type = JSONTokenType.LEFT_BRACKET;
_local1.value = "[";
nextChar();
break;
case "]":
_local1.type = JSONTokenType.RIGHT_BRACKET;
_local1.value = "]";
nextChar();
break;
case ",":
_local1.type = JSONTokenType.COMMA;
_local1.value = ",";
nextChar();
break;
case ":":
_local1.type = JSONTokenType.COLON;
_local1.value = ":";
nextChar();
break;
case "t":
_local2 = ((("t" + nextChar()) + nextChar()) + nextChar());
if (_local2 == "true"){
_local1.type = JSONTokenType.TRUE;
_local1.value = true;
nextChar();
} else {
parseError(("Expecting 'true' but found " + _local2));
};
break;
case "f":
_local3 = (((("f" + nextChar()) + nextChar()) + nextChar()) + nextChar());
if (_local3 == "false"){
_local1.type = JSONTokenType.FALSE;
_local1.value = false;
nextChar();
} else {
parseError(("Expecting 'false' but found " + _local3));
};
break;
case "n":
_local4 = ((("n" + nextChar()) + nextChar()) + nextChar());
if (_local4 == "null"){
_local1.type = JSONTokenType.NULL;
_local1.value = null;
nextChar();
} else {
parseError(("Expecting 'null' but found " + _local4));
};
break;
case "\"":
_local1 = readString();
break;
default:
if (((isDigit(ch)) || ((ch == "-")))){
_local1 = readNumber();
} else {
if (ch == ""){
return (null);
};
parseError((("Unexpected " + ch) + " encountered"));
};
};
return (_local1);
}
private function skipWhite():void{
while (isWhiteSpace(ch)) {
nextChar();
};
}
private function isWhiteSpace(_arg1:String):Boolean{
return ((((((((_arg1 == " ")) || ((_arg1 == "\t")))) || ((_arg1 == "\n")))) || ((_arg1 == "\r"))));
}
public function parseError(_arg1:String):void{
throw (new JSONParseError(_arg1, loc, jsonString));
}
private function skipIgnored():void{
skipWhite();
skipComments();
skipWhite();
}
private function isHexDigit(_arg1:String):Boolean{
var _local2:String;
_local2 = _arg1.toUpperCase();
return (((isDigit(_arg1)) || ((((_local2 >= "A")) && ((_local2 <= "F"))))));
}
private function readString():JSONToken{
var _local1:JSONToken;
var _local2:String;
var _local3:String;
var _local4:int;
_local1 = new JSONToken();
_local1.type = JSONTokenType.STRING;
_local2 = "";
nextChar();
while (((!((ch == "\""))) && (!((ch == ""))))) {
if (ch == "\\"){
nextChar();
switch (ch){
case "\"":
_local2 = (_local2 + "\"");
break;
case "/":
_local2 = (_local2 + "/");
break;
case "\\":
_local2 = (_local2 + "\\");
break;
case "b":
_local2 = (_local2 + "\b");
break;
case "f":
_local2 = (_local2 + "\f");
break;
case "n":
_local2 = (_local2 + "\n");
break;
case "r":
_local2 = (_local2 + "\r");
break;
case "t":
_local2 = (_local2 + "\t");
break;
case "u":
_local3 = "";
_local4 = 0;
while (_local4 < 4) {
if (!isHexDigit(nextChar())){
parseError((" Excepted a hex digit, but found: " + ch));
};
_local3 = (_local3 + ch);
_local4++;
};
_local2 = (_local2 + String.fromCharCode(parseInt(_local3, 16)));
break;
default:
_local2 = (_local2 + ("\\" + ch));
};
} else {
_local2 = (_local2 + ch);
};
nextChar();
};
if (ch == ""){
parseError("Unterminated string literal");
};
nextChar();
_local1.value = _local2;
return (_local1);
}
}
}//package com.adobe.serialization.json
Section 89
//JSONTokenType (com.adobe.serialization.json.JSONTokenType)
package com.adobe.serialization.json {
public class JSONTokenType {
public static const NUMBER:int = 11;
public static const FALSE:int = 8;
public static const RIGHT_BRACKET:int = 4;
public static const NULL:int = 9;
public static const TRUE:int = 7;
public static const RIGHT_BRACE:int = 2;
public static const UNKNOWN:int = -1;
public static const COMMA:int = 0;
public static const LEFT_BRACKET:int = 3;
public static const STRING:int = 10;
public static const LEFT_BRACE:int = 1;
public static const COLON:int = 6;
}
}//package com.adobe.serialization.json
Section 90
//b2BuoyancyController (com.boristhebrave.Box2D.Controllers.b2BuoyancyController)
package com.boristhebrave.Box2D.Controllers {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2BuoyancyController extends b2MultiController {
public var useDensity:Boolean;// = false
public var useWorldGravity:Boolean;// = true
public var normal:b2Vec2;
public var density:Number;// = 0
public var centerInBodies:Array;
public var offset:Number;// = 0
public var gravity:b2Vec2;// = null
public var angularDrag:Number;// = 1
public var linearDrag:Number;// = 2
public var velocity:b2Vec2;
public function b2BuoyancyController(){
normal = new b2Vec2(0, -1);
velocity = new b2Vec2(0, 0);
centerInBodies = new Array();
super();
}
override public function Draw(_arg1:b2DebugDraw):void{
var _local2:Number = 1000;
var _local3:b2Vec2 = new b2Vec2();
var _local4:b2Vec2 = new b2Vec2();
_local3.x = ((normal.x * offset) + (normal.y * _local2));
_local3.y = ((normal.y * offset) - (normal.x * _local2));
_local4.x = ((normal.x * offset) - (normal.y * _local2));
_local4.y = ((normal.y * offset) + (normal.x * _local2));
var _local5:b2Color = new b2Color(0, 0, 1);
_arg1.DrawSegment(_local3, _local4, _local5);
}
override public function Step(_arg1:Number):void{
var _local3:b2Body;
var _local4:b2Vec2;
var _local5:b2Vec2;
var _local6:Number;
var _local7:Number;
var _local8:b2Shape;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:Number;
var _local13:Number;
if (m_bodies.length == 0){
return;
};
if (useWorldGravity){
gravity = m_bodies[0].GetWorld().GetGravity().Copy();
};
var _local2:int;
while (_local2 < m_bodies.length) {
_local3 = m_bodies[_local2];
if (_local3.IsSleeping()){
} else {
_local4 = new b2Vec2();
_local5 = new b2Vec2();
_local6 = 0;
_local7 = 0;
_local8 = _local3.GetShapeList();
while (_local8) {
_local11 = new b2Vec2();
_local12 = _local8.ComputeSubmergedArea(normal, offset, _local3.GetXForm(), _local11);
_local6 = (_local6 + _local12);
_local4.x = (_local4.x + (_local12 * _local11.x));
_local4.y = (_local4.y + (_local12 * _local11.y));
if (useDensity){
_local13 = _local8.m_density;
} else {
_local13 = 1;
};
_local7 = (_local7 + (_local12 * _local13));
_local5.x = (_local5.x + ((_local12 * _local11.x) * _local13));
_local5.y = (_local5.y + ((_local12 * _local11.y) * _local13));
_local8 = _local8.GetNext();
};
_local4.x = (_local4.x / _local6);
_local4.y = (_local4.y / _local6);
_local5.x = (_local5.x / _local7);
_local5.y = (_local5.y / _local7);
if (_local6 < Number.MIN_VALUE){
} else {
_local9 = gravity.Negative();
_local9.Multiply((density * _local6));
_local3.ApplyForce(_local9, _local5);
_local10 = _local3.GetLinearVelocityFromWorldPoint(_local4);
_local10.Subtract(velocity);
_local10.Multiply((-(linearDrag) * _local6));
_local3.ApplyForce(_local10, _local4);
_local3.ApplyTorque(((((-(_local3.GetInertia()) / _local3.GetMass()) * _local6) * _local3.GetAngularVelocity()) * angularDrag));
};
};
_local2++;
};
}
public static function FromBodies(_arg1:Array, _arg2:b2Vec2=null, _arg3:Number=0, _arg4:Number=0):b2BuoyancyController{
var _local5:b2BuoyancyController = new (b2BuoyancyController);
var _local6:* = 0;
while (_local6 < _arg1.length) {
_local5.AddBody(_arg1[_local6]);
_local6++;
};
if (_arg2 != null){
_local5.normal.SetV(_arg2);
_local5.offset = _arg3;
};
if (_arg4 > 0){
_local5.density = _arg4;
};
return (_local5);
}
}
}//package com.boristhebrave.Box2D.Controllers
Section 91
//b2Controller (com.boristhebrave.Box2D.Controllers.b2Controller)
package com.boristhebrave.Box2D.Controllers {
import Box2D.Dynamics.*;
public class b2Controller {
public var m_prev:b2Controller;
public var m_userData;
public var m_next:b2Controller;
public function GetPrev():b2Controller{
return (m_prev);
}
public function Step(_arg1:Number):void{
}
public function Draw(_arg1:b2DebugDraw):void{
}
public function GetNext():b2Controller{
return (m_next);
}
}
}//package com.boristhebrave.Box2D.Controllers
Section 92
//b2GravityController (com.boristhebrave.Box2D.Controllers.b2GravityController)
package com.boristhebrave.Box2D.Controllers {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
public class b2GravityController extends b2MultiController {
public var G:Number;// = 1
public var invSqr:Boolean;// = true
override public function Step(_arg1:Number):void{
var _local2:int;
var _local3:b2Body;
var _local4:b2Vec2;
var _local5:Number = 0;
var _local6:int;
var _local7:b2Body;
var _local8:b2Vec2;
var _local9:Number = 0;
var _local10:Number = 0;
var _local11:Number = 0;
var _local12:b2Vec2;
if (invSqr){
_local2 = 0;
while (_local2 < m_bodies.length) {
_local3 = m_bodies[_local2];
_local4 = _local3.GetWorldCenter();
_local5 = _local3.GetMass();
_local6 = 0;
while (_local6 < _local2) {
_local7 = m_bodies[_local6];
_local8 = _local7.GetWorldCenter();
_local9 = (_local8.x - _local4.x);
_local10 = (_local8.y - _local4.y);
_local11 = ((_local9 * _local9) + (_local10 * _local10));
if (_local11 < Number.MIN_VALUE){
} else {
_local12 = new b2Vec2(_local9, _local10);
_local12.Multiply(((((G / _local11) / Math.sqrt(_local11)) * _local5) * _local7.GetMass()));
if (!_local3.IsSleeping()){
_local3.ApplyForce(_local12, _local4);
};
_local12.Multiply(-1);
if (!_local7.IsSleeping()){
_local7.ApplyForce(_local12, _local8);
};
};
_local6++;
};
_local2++;
};
} else {
_local2 = 0;
while (_local2 < m_bodies.length) {
_local3 = m_bodies[_local2];
_local4 = _local3.GetWorldCenter();
_local5 = _local3.GetMass();
_local6 = 0;
while (_local6 < _local2) {
_local7 = m_bodies[_local2];
_local8 = _local7.GetWorldCenter();
_local9 = (_local8.x - _local4.x);
_local10 = (_local8.y - _local4.y);
_local11 = ((_local9 * _local9) + (_local10 * _local10));
if (_local11 < Number.MIN_VALUE){
} else {
_local12 = new b2Vec2(_local9, _local10);
_local12.Multiply((((G / _local11) * _local5) * _local7.GetMass()));
if (!_local3.IsSleeping()){
_local3.ApplyForce(_local12, _local4);
};
_local12.Multiply(-1);
if (!_local7.IsSleeping()){
_local7.ApplyForce(_local12, _local8);
};
};
_local6++;
};
_local2++;
};
};
}
public static function FromBodies(_arg1:Array):b2GravityController{
var _local2:b2GravityController = new (b2GravityController);
var _local3:* = 0;
while (_local3 < _arg1.length) {
_local2.AddBody(_arg1[_local3]);
_local3++;
};
return (_local2);
}
}
}//package com.boristhebrave.Box2D.Controllers
Section 93
//b2MultiController (com.boristhebrave.Box2D.Controllers.b2MultiController)
package com.boristhebrave.Box2D.Controllers {
import Box2D.Dynamics.*;
public class b2MultiController extends b2Controller {
var m_bodies:Array;
public function b2MultiController(){
m_bodies = [];
super();
}
public function AddBodies(_arg1:Array):void{
var _local2:* = 0;
while (_local2 < _arg1.length) {
AddBody(_arg1[_local2]);
_local2++;
};
}
public function AddBody(_arg1:b2Body):void{
m_bodies.push(_arg1);
}
public function WakeBodies():void{
var _local1:int;
while (_local1 < m_bodies.length) {
m_bodies[_local1].WakeUp();
_local1++;
};
}
public function RemoveBody(_arg1:b2Body):void{
var body = _arg1;
m_bodies = m_bodies.filter(function (_arg1){
return (!((_arg1 == body)));
});
}
public function GetBodies():Array{
return (m_bodies);
}
public static function FromBodies(_arg1:Array):b2MultiController{
var _local2:b2MultiController = new (b2MultiController);
var _local3:* = 0;
while (_local3 < _arg1.length) {
_local2.AddBody(_arg1[_local3]);
_local3++;
};
return (_local2);
}
}
}//package com.boristhebrave.Box2D.Controllers
Section 94
//b2PairController (com.boristhebrave.Box2D.Controllers.b2PairController)
package com.boristhebrave.Box2D.Controllers {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
public class b2PairController extends b2Controller {
var m_body1:b2Body;
var m_body2:b2Body;
public function GetBody2():b2Body{
return (m_body2);
}
public function GetAnchor1():b2Vec2{
return (null);
}
public function GetAnchor2():b2Vec2{
return (null);
}
public function SetAnchor1(_arg1:b2Vec2):void{
}
public function SetBody1(_arg1:b2Body):void{
m_body1 = _arg1;
}
public function SetBody2(_arg1:b2Body):void{
m_body2 = _arg1;
}
public function GetBody1():b2Body{
return (m_body1);
}
public function SetAnchor2(_arg1:b2Vec2):void{
}
}
}//package com.boristhebrave.Box2D.Controllers
Section 95
//b2SpringController (com.boristhebrave.Box2D.Controllers.b2SpringController)
package com.boristhebrave.Box2D.Controllers {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Common.*;
public class b2SpringController extends b2PairController {
public var damping:Number;// = 0
public var length:Number;// = 0
var m_anchor1:b2Vec2;
var m_anchor2:b2Vec2;
public var k:Number;// = 1
public function b2SpringController(){
m_anchor1 = new b2Vec2();
m_anchor2 = new b2Vec2();
super();
}
override public function GetAnchor2():b2Vec2{
return (m_body2.GetWorldPoint(m_anchor2));
}
override public function GetAnchor1():b2Vec2{
return (m_body1.GetWorldPoint(m_anchor1));
}
override public function Step(_arg1:Number):void{
var _local7:b2Vec2;
var _local8:b2Vec2;
var _local9:b2Vec2;
var _local10:b2Vec2;
if (((m_body1.IsSleeping()) && (m_body2.IsSleeping()))){
return;
};
var _local2:b2Vec2 = m_body1.GetWorldPoint(m_anchor1);
var _local3:b2Vec2 = m_body2.GetWorldPoint(m_anchor2);
var _local4:b2Vec2 = b2Math.SubtractVV(_local3, _local2);
var _local5:Number = _local4.Normalize();
var _local6:b2Vec2 = _local4.Copy();
_local6.Multiply(((_local5 - length) * k));
m_body1.ApplyForce(_local6, _local2);
m_body2.ApplyForce(_local6.Negative(), _local3);
if (damping != 0){
_local7 = m_body1.GetLinearVelocityFromWorldPoint(_local2);
_local8 = m_body2.GetLinearVelocityFromWorldPoint(_local3);
_local9 = b2Math.SubtractVV(_local8, _local7);
_local10 = _local4.Copy();
_local10.Multiply((b2Math.b2Dot(_local9, _local4) * damping));
m_body1.ApplyForce(_local10, _local2);
m_body2.ApplyForce(_local10.Negative(), _local3);
};
}
override public function SetAnchor1(_arg1:b2Vec2):void{
m_anchor1.SetV(m_body1.GetLocalPoint(_arg1));
}
override public function SetAnchor2(_arg1:b2Vec2):void{
m_anchor2.SetV(m_body2.GetLocalPoint(_arg1));
}
override public function Draw(_arg1:b2DebugDraw):void{
var _local15:Number;
var _local16:*;
var _local2:Number = 10;
var _local3:Number = 0.05;
var _local4:Number = 0.05;
_local4 = (((1 - (2 * _local3)) / _local2) / 2);
var _local5:b2Color = new b2Color((0 / 0xFF), (0 / 0xFF), (0 / 0xFF));
var _local6:b2Vec2 = m_body1.GetWorldPoint(m_anchor1);
var _local7:b2Vec2 = m_body2.GetWorldPoint(m_anchor2);
var _local8:b2Vec2 = b2Math.SubtractVV(_local7, _local6);
var _local9:Number = _local8.Normalize();
var _local10:* = ((_local8.y * _local4) * length);
var _local11:* = ((-(_local8.x) * _local4) * length);
var _local12:* = new b2Vec2(((_local6.x * (1 - _local3)) + (_local7.x * _local3)), ((_local6.y * (1 - _local3)) + (_local7.y * _local3)));
_arg1.DrawSegment(_local6, _local12, _local5);
var _local13:* = _local12;
var _local14:* = 0;
while (_local14 <= _local2) {
_local15 = (((_local14 % 2) == 0)) ? -1 : 1;
_local16 = new b2Vec2(((_local6.x + ((_local8.x * _local9) * (_local3 + (((1 - (2 * _local3)) * _local14) / _local2)))) + (_local10 * _local15)), ((_local6.y + ((_local8.y * _local9) * (_local3 + (((1 - (2 * _local3)) * _local14) / _local2)))) + (_local11 * _local15)));
_arg1.DrawSegment(_local13, _local16, _local5);
_local13 = _local16;
_local14++;
};
_local16 = new b2Vec2(((_local7.x * (1 - _local3)) + (_local6.x * _local3)), ((_local7.y * (1 - _local3)) + (_local6.y * _local3)));
_arg1.DrawSegment(_local13, _local16, _local5);
_arg1.DrawSegment(_local16, _local7, _local5);
}
}
}//package com.boristhebrave.Box2D.Controllers
Section 96
//KongregateEvent (com.kongregate.as3.client.events.KongregateEvent)
package com.kongregate.as3.client.events {
import flash.events.*;
public class KongregateEvent extends Event {
public static const COMPLETE:String = "component_api_available";
public function KongregateEvent(_arg1:String){
super(_arg1);
}
}
}//package com.kongregate.as3.client.events
Section 97
//AbstractShadowService (com.kongregate.as3.client.services.AbstractShadowService)
package com.kongregate.as3.client.services {
import flash.events.*;
public class AbstractShadowService extends EventDispatcher {
protected function alert(_arg1:String, _arg2:String, _arg3="", _arg4:String=""):void{
trace(((((((("Kongregate API: " + _arg1) + ".") + _arg2) + "(") + _arg3) + ") ") + _arg4));
}
}
}//package com.kongregate.as3.client.services
Section 98
//HighScoreServiceShadow (com.kongregate.as3.client.services.HighScoreServiceShadow)
package com.kongregate.as3.client.services {
public class HighScoreServiceShadow extends AbstractShadowService implements IHighScoreServices {
private var mode:String;
public function HighScoreServiceShadow(){
mode = "";
}
public function submit(_arg1:Number, _arg2:String=null):void{
alert("IHighScoreServices", "submit", arguments);
}
public function connect():Boolean{
alert("IKongregateServices", "connect");
return (true);
}
public function requestList(_arg1:Function):void{
alert("IHighScoreServices", "requestList", "", (("[Mode: " + mode) + "]"));
_arg1({success:false});
}
public function setMode(_arg1:String):void{
alert("IHighScoreServices", "setMode", arguments);
this.mode = _arg1;
}
}
}//package com.kongregate.as3.client.services
Section 99
//IHighScoreServices (com.kongregate.as3.client.services.IHighScoreServices)
package com.kongregate.as3.client.services {
public interface IHighScoreServices {
function setMode(_arg1:String):void;
function submit(_arg1:Number, _arg2:String=null):void;
function requestList(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 100
//IKongregateServices (com.kongregate.as3.client.services.IKongregateServices)
package com.kongregate.as3.client.services {
import flash.events.*;
public interface IKongregateServices extends IEventDispatcher {
function getPlayerInfo(_arg1:Function):void;
function connect(_arg1:Number=-1):Boolean;
}
}//package com.kongregate.as3.client.services
Section 101
//IStatServices (com.kongregate.as3.client.services.IStatServices)
package com.kongregate.as3.client.services {
public interface IStatServices {
function submitArray(_arg1:Array):void;
function submit(_arg1:String, _arg2:Number):void;
}
}//package com.kongregate.as3.client.services
Section 102
//IUserServices (com.kongregate.as3.client.services.IUserServices)
package com.kongregate.as3.client.services {
public interface IUserServices {
function getName():String;
function getPlayerInfo(_arg1:Function):void;
}
}//package com.kongregate.as3.client.services
Section 103
//KongregateServiceShadow (com.kongregate.as3.client.services.KongregateServiceShadow)
package com.kongregate.as3.client.services {
public class KongregateServiceShadow extends AbstractShadowService implements IKongregateServices {
public function getName():String{
alert("IKongregateServices", "getName");
return ("Guest");
}
public function connect(_arg1:Number=-1):Boolean{
alert("IKongregateServices", "connect", arguments);
return (true);
}
public function getPlayerInfo(_arg1:Function):void{
alert("IKongregateServices", "getPlayerInfo");
_arg1(new Object());
}
}
}//package com.kongregate.as3.client.services
Section 104
//StatServiceShadow (com.kongregate.as3.client.services.StatServiceShadow)
package com.kongregate.as3.client.services {
public class StatServiceShadow extends AbstractShadowService implements IStatServices {
public function submitArray(_arg1:Array):void{
alert("IStatServices", "submitArray", arguments);
}
public function submit(_arg1:String, _arg2:Number):void{
alert("IStatServices", "submitStat", arguments);
}
}
}//package com.kongregate.as3.client.services
Section 105
//UserServiceShadow (com.kongregate.as3.client.services.UserServiceShadow)
package com.kongregate.as3.client.services {
public class UserServiceShadow extends AbstractShadowService implements IUserServices {
public function getName():String{
alert("UserService", "getName");
return ("Guest");
}
public function getPlayerInfo(_arg1:Function):void{
alert("UserService", "getPlayerInfo");
_arg1({isGuest:true, name:"Guest", points:0, level:0, isMode:false, isAdmin:false, isDeveloper:false, avatarPath:"", chatAvatarPath:""});
}
}
}//package com.kongregate.as3.client.services
Section 106
//IAPIBootstrap (com.kongregate.as3.client.IAPIBootstrap)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
public interface IAPIBootstrap {
function init(_arg1:Event=null, _arg2:Stage=null):void;
function hideLog():void;
function showLog(_arg1:int=0):void;
}
}//package com.kongregate.as3.client
Section 107
//KongregateAPI (com.kongregate.as3.client.KongregateAPI)
package com.kongregate.as3.client {
import flash.events.*;
import flash.display.*;
import com.kongregate.as3.client.services.*;
import flash.utils.*;
import com.kongregate.as3.client.events.*;
import flash.system.*;
import flash.net.*;
import flash.errors.*;
public class KongregateAPI extends Sprite {
private const VERSION:Number = 1;
private var loader:Loader;
private var loadedDomain:ApplicationDomain;
private static const CLASS_USER:String = "com.kongregate.as3.client.services.UserServices";
private static const CLASS_STATS:String = "com.kongregate.as3.client.services.StatServices";
private static const CLASS_SERVICES:String = "com.kongregate.as3.client.services.KongregateServices";
private static const CLASS_SCORES:String = "com.kongregate.as3.client.services.HighScoreServices";
private static const DEBUG_API_URL:String = "//Linuxpc/kongregate/public/flash/API_AS3.swf";
private static var _connected:Boolean;
private static var kUser:IUserServices;
private static var _loaded:Boolean;
private static var kServices:IKongregateServices;
private static var kScores:IHighScoreServices;
private static var mInstance:KongregateAPI;
private static var kStats:IStatServices;
private static var kAPI:IAPIBootstrap;
public function KongregateAPI(){
if (mInstance != null){
throw (new Error("Warning: KongregateAPI has been added to stage more than once or accessed improperly. Use getInstance() or a stage reference to access."));
};
mInstance = this;
this.addEventListener(Event.ADDED_TO_STAGE, init, false, 0, true);
}
public function get loaded():Boolean{
return (_loaded);
}
public function get connected():Boolean{
return (_connected);
}
private function alertConnected(_arg1:TimerEvent=null):void{
var _local2:KongregateEvent;
var _local3:Boolean;
_local2 = new KongregateEvent(KongregateEvent.COMPLETE);
_local3 = this.dispatchEvent(_local2);
}
private function init(_arg1:Event):void{
var _local2:Object;
var _local3:String;
var _local4:URLRequest;
var _local5:LoaderContext;
this.removeEventListener(Event.ADDED_TO_STAGE, init);
_loaded = false;
_connected = false;
_local2 = LoaderInfo(root.loaderInfo).parameters;
_local3 = _local2.api_path;
if (_local3 == null){
trace("Alert: Kongregate API could not be loaded, due to local testing. API will load when the game is uploaded.");
createShadowServices();
return;
};
Security.allowDomain("*.kongregate.com");
Security.allowDomain("kongregatetrunk.com");
_local4 = new URLRequest(_local3);
_local5 = new LoaderContext(false);
_local5.applicationDomain = ApplicationDomain.currentDomain;
_local5.securityDomain = SecurityDomain.currentDomain;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.load(_local4, _local5);
}
public function get api():IAPIBootstrap{
return (kAPI);
}
private function loadComplete(_arg1:Event):void{
getServices();
}
public function get scores():IHighScoreServices{
return (kScores);
}
private function ioErrorHandler(_arg1:IOErrorEvent):void{
throw (new IOError(("API file not found. " + _arg1)));
}
public function get services():IKongregateServices{
return (kServices);
}
public function get stats():IStatServices{
return (kStats);
}
private function createShadowServices():void{
var _local1:Timer;
trace(">>> Kongregate Shadow Services instantiated for local development..");
kServices = new KongregateServiceShadow();
kScores = new HighScoreServiceShadow();
kStats = new StatServiceShadow();
kUser = new UserServiceShadow();
_local1 = new Timer(200, 1);
_local1.addEventListener(TimerEvent.TIMER_COMPLETE, alertConnected);
_local1.start();
_connected = true;
}
public function get user():IUserServices{
return (kUser);
}
private function getServices():void{
var _local1:ApplicationDomain;
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:*;
_local1 = ApplicationDomain.currentDomain;
kAPI = IAPIBootstrap(loader.getChildAt(0));
this.addChild(loader);
_local2 = _local1.getDefinition(CLASS_SERVICES);
trace(_local2);
kServices = _local2.getInstance();
_local3 = _local1.getDefinition(CLASS_SCORES);
kScores = _local3.getInstance();
_local4 = _local1.getDefinition(CLASS_STATS);
kStats = _local4.getInstance();
_local5 = _local1.getDefinition(CLASS_USER);
kUser = _local5.getInstance();
kServices.connect(VERSION);
_loaded = true;
_connected = true;
alertConnected();
}
public static function getInstance():KongregateAPI{
if (!mInstance){
throw (new IllegalOperationError("You must add the Kongregate API component to the stage before attempting to access it."));
};
return (mInstance);
}
}
}//package com.kongregate.as3.client
Section 108
//DrawSine (com.midasplayer.extras.DrawSine)
package com.midasplayer.extras {
import flash.display.*;
public class DrawSine extends MovieClip {
private var target_mc:MovieClip;
private var step_x:Number;
private var my_height:Number;
private var stroke_color:Number;// = 0
private var draw_fill:Boolean;// = false
private var stroke_weight:Number;// = 1
private var fill_alpha:Number;
private var fill_height:Number;
private var draw_array;
private var steps:Number;
private var fill_color:Number;// = 0xFF0000
private var my_width:Number;
public function DrawSine(_arg1:MovieClip, _arg2:Number, _arg3:Number, _arg4:Number){
draw_array = new Array();
super();
target_mc = _arg1;
my_width = _arg2;
my_height = _arg3;
steps = _arg4;
step_x = (_arg2 / steps);
var _local5:* = 0;
while (_local5 < steps) {
draw_array.push({x:(step_x * _local5), y:0});
_local5++;
};
}
public function set_fill(_arg1:Boolean, _arg2:Number, _arg3:Number):void{
draw_fill = _arg1;
fill_color = (stroke_color = _arg2);
fill_alpha = _arg3;
}
public function set_stroke(_arg1:Number, _arg2:Number):void{
stroke_weight = _arg1;
stroke_color = _arg2;
}
public function draw_waves(_arg1:Array):void{
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local2:* = draw_array.length;
var _local3:* = _arg1.length;
var _local4:* = 0;
while (_local4 < _local3) {
_local6 = (((_arg1[_local4].cycles * Math.PI) * 2) / steps);
_local7 = 0;
while (_local7 < _local2) {
if (_local4 == 0){
draw_array[_local7].y = (Math.sin((_arg1[_local4].phase + (_local6 * _local7))) * _arg1[_local4].radius);
} else {
draw_array[_local7].y = (draw_array[_local7].y + (Math.sin((_arg1[_local4].phase + (_local6 * _local7))) * _arg1[_local4].radius));
};
_local7++;
};
_local4++;
};
target_mc.graphics.clear();
if (stroke_weight > 0){
target_mc.graphics.lineStyle(stroke_weight, stroke_color);
};
if (draw_fill){
target_mc.graphics.beginFill(fill_color, fill_alpha);
};
target_mc.graphics.moveTo(draw_array[0].x, draw_array[0].y);
var _local5:* = 1;
while (_local5 < _local2) {
_local8 = draw_array[_local5].x;
_local9 = draw_array[_local5].y;
target_mc.graphics.lineTo(_local8, _local9);
_local5++;
};
if (draw_fill){
target_mc.graphics.lineTo(_local8, (my_height / 2));
target_mc.graphics.lineTo(0, (my_height / 2));
target_mc.graphics.lineTo(0, draw_array[0].y);
target_mc.graphics.endFill();
};
}
}
}//package com.midasplayer.extras
Section 109
//md5 (com.midasplayer.extras.md5)
package com.midasplayer.extras {
public class md5 {
public static const HEX_FORMAT_LOWERCASE:uint = 0;
public static const HEX_FORMAT_UPPERCASE:uint = 1;
public static const BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE:String = "";
public static const BASE64_PAD_CHARACTER_RFC_COMPLIANCE:String = "=";
public static var hexcase:uint = 0;
public static var b64pad:String = "";
public static function md5_gg(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg4) | (_arg3 & ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_cmn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
return (safe_add(bit_rol(safe_add(safe_add(_arg2, _arg1), safe_add(_arg4, _arg6)), _arg5), _arg3));
}
public static function binl_md5(_arg1:Array, _arg2:Number):Array{
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
_arg1[(_arg2 >> 5)] = (_arg1[(_arg2 >> 5)] | (128 << (_arg2 % 32)));
_arg1[((((_arg2 + 64) >>> 9) << 4) + 14)] = _arg2;
var _local3:Number = 1732584193;
var _local4:Number = -271733879;
var _local5:Number = -1732584194;
var _local6:Number = 271733878;
var _local7:Number = 0;
while (_local7 < _arg1.length) {
_local8 = _local3;
_local9 = _local4;
_local10 = _local5;
_local11 = _local6;
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 7, -680876936);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 1)], 12, -389564586);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 17, 606105819);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 3)], 22, -1044525330);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 7, -176418897);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 5)], 12, 1200080426);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 17, -1473231341);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 7)], 22, -45705983);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 7, 1770035416);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 9)], 12, -1958414417);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 17, -42063);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 11)], 22, -1990404162);
_local3 = md5_ff(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 7, 1804603682);
_local6 = md5_ff(_local6, _local3, _local4, _local5, _arg1[(_local7 + 13)], 12, -40341101);
_local5 = md5_ff(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 17, -1502002290);
_local4 = md5_ff(_local4, _local5, _local6, _local3, _arg1[(_local7 + 15)], 22, 1236535329);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 5, -165796510);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 6)], 9, -1069501632);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 14, 643717713);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 0)], 20, -373897302);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 5, -701558691);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 10)], 9, 38016083);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 14, -660478335);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 4)], 20, -405537848);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 5, 568446438);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 14)], 9, -1019803690);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 14, -187363961);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 8)], 20, 1163531501);
_local3 = md5_gg(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 5, -1444681467);
_local6 = md5_gg(_local6, _local3, _local4, _local5, _arg1[(_local7 + 2)], 9, -51403784);
_local5 = md5_gg(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 14, 1735328473);
_local4 = md5_gg(_local4, _local5, _local6, _local3, _arg1[(_local7 + 12)], 20, -1926607734);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 5)], 4, -378558);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 8)], 11, -2022574463);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 11)], 16, 1839030562);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 14)], 23, -35309556);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 1)], 4, -1530992060);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 4)], 11, 1272893353);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 7)], 16, -155497632);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 10)], 23, -1094730640);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 13)], 4, 681279174);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 0)], 11, -358537222);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 3)], 16, -722521979);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 6)], 23, 76029189);
_local3 = md5_hh(_local3, _local4, _local5, _local6, _arg1[(_local7 + 9)], 4, -640364487);
_local6 = md5_hh(_local6, _local3, _local4, _local5, _arg1[(_local7 + 12)], 11, -421815835);
_local5 = md5_hh(_local5, _local6, _local3, _local4, _arg1[(_local7 + 15)], 16, 530742520);
_local4 = md5_hh(_local4, _local5, _local6, _local3, _arg1[(_local7 + 2)], 23, -995338651);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 0)], 6, -198630844);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 7)], 10, 1126891415);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 14)], 15, -1416354905);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 5)], 21, -57434055);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 12)], 6, 1700485571);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 3)], 10, -1894986606);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 10)], 15, -1051523);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 1)], 21, -2054922799);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 8)], 6, 1873313359);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 15)], 10, -30611744);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 6)], 15, -1560198380);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 13)], 21, 1309151649);
_local3 = md5_ii(_local3, _local4, _local5, _local6, _arg1[(_local7 + 4)], 6, -145523070);
_local6 = md5_ii(_local6, _local3, _local4, _local5, _arg1[(_local7 + 11)], 10, -1120210379);
_local5 = md5_ii(_local5, _local6, _local3, _local4, _arg1[(_local7 + 2)], 15, 718787259);
_local4 = md5_ii(_local4, _local5, _local6, _local3, _arg1[(_local7 + 9)], 21, -343485551);
_local3 = safe_add(_local3, _local8);
_local4 = safe_add(_local4, _local9);
_local5 = safe_add(_local5, _local10);
_local6 = safe_add(_local6, _local11);
_local7 = (_local7 + 16);
};
return ([_local3, _local4, _local5, _local6]);
}
public static function str2rstr_utf16le(_arg1:String):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode((_arg1.charCodeAt(_local3) & 0xFF), ((_arg1.charCodeAt(_local3) >>> 8) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function hex_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2hex(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function binl2rstr(_arg1:Array):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < (_arg1.length * 32)) {
_local2 = (_local2 + String.fromCharCode(((_arg1[(_local3 >> 5)] >>> (_local3 % 32)) & 0xFF)));
_local3 = (_local3 + 8);
};
return (_local2);
}
public static function md5_ff(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 & _arg3) | (~(_arg2) & _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function md5_ii(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn((_arg3 ^ (_arg2 | ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function rstr2binl(_arg1:String):Array{
var _local2:Number = 0;
var _local3:Array = new Array((_arg1.length >> 2));
_local2 = 0;
while (_local2 < _local3.length) {
_local3[_local2] = 0;
_local2++;
};
_local2 = 0;
while (_local2 < (_arg1.length * 8)) {
_local3[(_local2 >> 5)] = (_local3[(_local2 >> 5)] | ((_arg1.charCodeAt((_local2 / 8)) & 0xFF) << (_local2 % 32)));
_local2 = (_local2 + 8);
};
return (_local3);
}
public static function md5_vm_test():Boolean{
return ((hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"));
}
public static function b64_md5(_arg1:String):String{
return (rstr2b64(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function any_hmac_md5(_arg1:String, _arg2:String, _arg3:String):String{
return (rstr2any(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2)), _arg3));
}
public static function hex_md5(_arg1:String):String{
return (rstr2hex(rstr_md5(str2rstr_utf8(_arg1))));
}
public static function bit_rol(_arg1:Number, _arg2:Number):Number{
return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
}
public static function encrypt(_arg1:String):String{
return (hex_md5(_arg1));
}
public static function md5_hh(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
return (md5_cmn(((_arg2 ^ _arg3) ^ _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
}
public static function rstr2hex(_arg1:String):String{
var _local4:Number;
var _local2:String = (hexcase) ? "0123456789ABCDEF" : "0123456789abcdef";
var _local3 = "";
var _local5:Number = 0;
while (_local5 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local5);
_local3 = (_local3 + (_local2.charAt(((_local4 >>> 4) & 15)) + _local2.charAt((_local4 & 15))));
_local5++;
};
return (_local3);
}
public static function any_md5(_arg1:String, _arg2:String):String{
return (rstr2any(rstr_md5(str2rstr_utf8(_arg1)), _arg2));
}
public static function b64_hmac_md5(_arg1:String, _arg2:String):String{
return (rstr2b64(rstr_hmac_md5(str2rstr_utf8(_arg1), str2rstr_utf8(_arg2))));
}
public static function rstr2b64(_arg1:String):String{
var _local6:Number;
var _local7:Number;
var _local2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
var _local3 = "";
var _local4:Number = _arg1.length;
var _local5:Number = 0;
while (_local5 < _local4) {
_local6 = (((_arg1.charCodeAt(_local5) << 16) | (((_local5 + 1) < _local4)) ? (_arg1.charCodeAt((_local5 + 1)) << 8) : 0) | (((_local5 + 2) < _local4)) ? _arg1.charCodeAt((_local5 + 2)) : 0);
_local7 = 0;
while (_local7 < 4) {
if (((_local5 * 8) + (_local7 * 6)) > (_arg1.length * 8)){
_local3 = (_local3 + b64pad);
} else {
_local3 = (_local3 + _local2.charAt(((_local6 >>> (6 * (3 - _local7))) & 63)));
};
_local7++;
};
_local5 = (_local5 + 3);
};
return (_local3);
}
public static function safe_add(_arg1:Number, _arg2:Number):Number{
var _local3:Number = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
var _local4:Number = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
return (((_local4 << 16) | (_local3 & 0xFFFF)));
}
public static function str2rstr_utf8(_arg1:String):String{
var _local4:Number;
var _local5:Number;
var _local2 = "";
var _local3:Number = -1;
while (++_local3 < _arg1.length) {
_local4 = _arg1.charCodeAt(_local3);
_local5 = (((_local3 + 1) < _arg1.length)) ? _arg1.charCodeAt((_local3 + 1)) : 0;
if ((((((((0xD800 <= _local4)) && ((_local4 <= 56319)))) && ((0xDC00 <= _local5)))) && ((_local5 <= 57343)))){
_local4 = ((65536 + ((_local4 & 1023) << 10)) + (_local5 & 1023));
_local3++;
};
if (_local4 <= 127){
_local2 = (_local2 + String.fromCharCode(_local4));
} else {
if (_local4 <= 2047){
_local2 = (_local2 + String.fromCharCode((192 | ((_local4 >>> 6) & 31)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 0xFFFF){
_local2 = (_local2 + String.fromCharCode((224 | ((_local4 >>> 12) & 15)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
} else {
if (_local4 <= 2097151){
_local2 = (_local2 + String.fromCharCode((240 | ((_local4 >>> 18) & 7)), (128 | ((_local4 >>> 12) & 63)), (128 | ((_local4 >>> 6) & 63)), (128 | (_local4 & 63))));
};
};
};
};
};
return (_local2);
}
public static function rstr_hmac_md5(_arg1:String, _arg2:String):String{
var _local3:Array = rstr2binl(_arg1);
if (_local3.length > 16){
_local3 = binl_md5(_local3, (_arg1.length * 8));
};
var _local4:Array = new Array(16);
var _local5:Array = new Array(16);
var _local6:Number = 0;
while (_local6 < 16) {
_local4[_local6] = (_local3[_local6] ^ 909522486);
_local5[_local6] = (_local3[_local6] ^ 1549556828);
_local6++;
};
var _local7:Array = binl_md5(_local4.concat(rstr2binl(_arg2)), (0x0200 + (_arg2.length * 8)));
return (binl2rstr(binl_md5(_local5.concat(_local7), (0x0200 + 128))));
}
public static function str2rstr_utf16be(_arg1:String):String{
var _local2 = "";
var _local3:Number = 0;
while (_local3 < _arg1.length) {
_local2 = (_local2 + String.fromCharCode(((_arg1.charCodeAt(_local3) >>> 8) & 0xFF), (_arg1.charCodeAt(_local3) & 0xFF)));
_local3++;
};
return (_local2);
}
public static function rstr2any(_arg1:String, _arg2:String):String{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Array;
var _local3:Number = _arg2.length;
var _local4:Array = [];
var _local9:Array = ((_arg1.length / 2) as Array);
_local5 = 0;
while (_local5 < _local9.length) {
_local9[_local5] = ((_arg1.charCodeAt((_local5 * 2)) << 8) | _arg1.charCodeAt(((_local5 * 2) + 1)));
_local5++;
};
while (_local9.length > 0) {
_local8 = [];
_local7 = 0;
_local5 = 0;
while (_local5 < _local9.length) {
_local7 = ((_local7 << 16) + _local9[_local5]);
_local6 = Math.floor((_local7 / _local3));
_local7 = (_local7 - (_local6 * _local3));
if ((((_local8.length > 0)) || ((_local6 > 0)))){
_local8[_local8.length] = _local6;
};
_local5++;
};
_local4[_local4.length] = _local7;
_local9 = _local8;
};
var _local10 = "";
_local5 = (_local4.length - 1);
while (_local5 >= 0) {
_local10 = (_local10 + _arg2.charAt(_local4[_local5]));
_local5--;
};
return (_local10);
}
public static function rstr_md5(_arg1:String):String{
return (binl2rstr(binl_md5(rstr2binl(_arg1), (_arg1.length * 8))));
}
}
}//package com.midasplayer.extras
Section 110
//SimpleParticle (com.midasplayer.extras.SimpleParticle)
package com.midasplayer.extras {
import flash.display.*;
public dynamic class SimpleParticle extends Shape {
private var _color:Number;// = 0
private var _size:Number;// = 1
private var _type:String;// = "rect"
public static var RECT:String = "rect";
public static var CIRCLE:String = "circle";
public function get size():Number{
return (_size);
}
public function set size(_arg1:Number){
_size = _arg1;
draw();
}
public function get color():Number{
return (_color);
}
public function set color(_arg1:Number){
_color = _arg1;
draw();
}
public function get type():String{
return (_type);
}
private function draw(){
clear();
graphics.beginFill(_color, 1);
switch (type){
case RECT:
graphics.drawRect((-(size) / 2), (-(size) / 2), size, size);
break;
case CIRCLE:
graphics.drawCircle((-(size) / 2), (-(size) / 2), size);
break;
};
graphics.endFill();
}
public function clear(){
graphics.clear();
}
public function set type(_arg1:String){
_type = _arg1;
draw();
}
}
}//package com.midasplayer.extras
Section 111
//SineWave (com.midasplayer.extras.SineWave)
package com.midasplayer.extras {
public class SineWave {
private var my_cycles:Number;
private var my_radius:Number;
private var my_phase:Number;
private var my_inc:Number;
public function SineWave(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
my_phase = _arg1;
my_cycles = _arg2;
my_radius = _arg3;
my_inc = _arg4;
}
public function set radius(_arg1:Number):void{
my_radius = _arg1;
}
public function get cycles():Number{
return (my_cycles);
}
public function get radius():Number{
return (my_radius);
}
public function set cycles(_arg1:Number):void{
my_cycles = _arg1;
}
public function get phase():Number{
return (my_phase);
}
public function set inc(_arg1:Number):void{
my_inc = _arg1;
}
public function set phase(_arg1:Number):void{
my_phase = _arg1;
}
public function get inc():Number{
return (my_inc);
}
}
}//package com.midasplayer.extras
Section 112
//Water (com.midasplayer.extras.Water)
package com.midasplayer.extras {
import flash.display.*;
public class Water extends MovieClip {
private var m_lines:Array;
public function Water(){
m_lines = new Array();
super();
}
public function decrThickness(_arg1:Boolean):Boolean{
var _local2:int;
var _local3:Boolean;
var _local4:int;
var _local5:Boolean;
if (_arg1){
_local2 = 0;
while (_local2 < m_lines.length) {
_local3 = false;
if (m_lines[_local2].decrThickness()){
_local3 = true;
} else {
return (false);
};
_local2++;
};
return (_local3);
//unresolved jump
};
_local4 = 0;
while (_local4 < m_lines.length) {
_local5 = false;
if (m_lines[_local4].incrThickness()){
_local5 = true;
} else {
return (false);
};
_local4++;
};
return (_local5);
}
public function init(_arg1:Number, _arg2:Number){
var _local3:WaterLine;
var _local5:int;
var _local4:uint = 0xFF0000;
if (this.name == "RED"){
_local4 = 0xFF0000;
_local5 = 1;
};
if (this.name == "GREEN"){
_local4 = 0xFF00;
_local5 = 1;
};
if (this.name == "BLUE"){
_local4 = 2782939;
_local5 = 1;
};
var _local6:* = 0;
while (_local6 < _local5) {
_local3 = new WaterLine();
_local3.addParams(_local4, _arg1, _arg2);
_local3.x = (_local6 * 1.5);
addChild(_local3);
m_lines.push(_local3);
_local6++;
};
}
}
}//package com.midasplayer.extras
Section 113
//WaterLine (com.midasplayer.extras.WaterLine)
package com.midasplayer.extras {
import flash.events.*;
import flash.display.*;
public class WaterLine extends MovieClip {
private var _height:Number;// = 400
private var _line:Shape;
private var _particlesQuantity:Number;// = 20
private var _color:uint;
private var _bubbles:Array;
private var _step:Number;
private var _particles:Array;
private var _lineSize:Number;
public function WaterLine(){
trace("WaterLine()");
}
public function incrThickness():Boolean{
_lineSize = (_lineSize + 0.5);
if (_lineSize >= 5){
return (true);
};
return (false);
}
public function get randomDirection():Number{
return (((Math.round((Math.random() * 1)) * 2) - 1));
}
public function addParams(_arg1:uint, _arg2:Number, _arg3:Number):void{
_color = _arg1;
_height = _arg2;
_lineSize = _arg3;
init();
}
private function createBubbles():void{
var _local2:SimpleParticle;
var _local4:Number;
var _local5:Number;
var _local6:*;
var _local1:Array = [_color, _color];
var _local3:* = 0;
while (_local3 < 5) {
_local2 = new SimpleParticle();
_local2.type = SimpleParticle.CIRCLE;
_local2.size = 0.8;
_local2.color = _local1[Math.round((Math.random() * (_local1.length - 1)))];
_local2.alpha = 1;
addChild(_local2);
_bubbles.push(_local2);
_local3++;
};
for (_local6 in _bubbles) {
_local2 = _bubbles[_local6];
if (!_local2.isOut){
_local2.y = (_local2.y + ((Math.random() * 5) + 10));
_local4 = Math.floor((_local2.y / this._step));
_local2.x = (_local2.x + (((_particles[_local4].x + ((Math.random() * 1) * randomDirection)) - _local2.x) * 0.8));
_local5 = Math.sqrt((Math.pow((mouseX - _local2.x), 2) + Math.pow((mouseY - _local2.y), 2)));
if ((((_local5 < 4)) && (!(_local2.isOut)))){
};
} else {
_local2.y = (_local2.y + _local2.speedY);
_local2.speedY = (_local2.speedY + 3);
_local2.x = (_local2.x + _local2.speedX);
_local2.alpha = (_local2.alpha - 0.005);
};
if ((((_local2.y > _height)) || ((_local2.alpha < 0)))){
_bubbles.splice(_local6, 1);
_local2.parent.removeChild(_local2);
_local2 = null;
};
};
}
private function createLine():void{
var _local1:SimpleParticle;
var _local2:* = 0;
while (_local2 < _particlesQuantity) {
_local1 = new SimpleParticle();
_local1.elasticX = 0;
_local1.yIni = (_local1.y = (_step * _local2));
addChild(_local1);
_particles.push(_local1);
_local2++;
};
}
private function init(){
_line = new Shape();
_line.alpha = 0.8;
addChild(_line);
_bubbles = [];
_particles = [];
_step = (_height / (_particlesQuantity - 1));
createLine();
addEventListener(Event.ENTER_FRAME, animate);
}
private function animate(_arg1:Event):void{
var _local2:SimpleParticle;
var _local3:SimpleParticle;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local9:Number;
var _local8:Number = 10;
var _local10:Number = 3;
_line.graphics.clear();
_line.graphics.moveTo(_particles[0].x, _particles[0].y);
_line.graphics.lineStyle(_lineSize, _color, 1);
var _local11:* = 0;
while (_local11 < _particles.length) {
_local3 = _particles[_local11];
if (_local11 == 0){
_local3.x = (_local3.x + ((((Math.random() * _local10) * randomDirection) - _local3.x) * 0.9));
};
_local2 = ((_local11)>0) ? _particles[(_local11 - 1)] : _local3;
_local7 = Math.sqrt((Math.pow((mouseX - 0), 2) + Math.pow((mouseY - _local3.yIni), 2)));
if (_local7 < _local8){
} else {
_local5 = _local2.x;
_local3.elasticX = ((_local3.elasticX * 0.4) + ((_local5 - _local3.x) * 0.4));
_local3.x = (_local3.x + _local3.elasticX);
};
if (_local11 > 0){
_line.graphics.curveTo(_local2.x, _local2.y, ((_local2.x + _local3.x) / 2), ((_local2.y + _local3.y) / 2));
};
_local11++;
};
}
private function spreadBubble(_arg1:SimpleParticle):void{
_arg1.isOut = true;
parent.parent.addChild(_arg1);
_arg1.size = 1.2;
_arg1.alpha = 0.35;
_arg1.x = (parent.x + _arg1.x);
_arg1.y = (parent.y + _arg1.y);
_arg1.speedY = (-5 - (Math.random() * 10));
_arg1.speedX = (((Math.random() * 15) + 1) * randomDirection);
}
public function decrThickness():Boolean{
_lineSize--;
if (_lineSize <= 0){
return (true);
};
return (false);
}
}
}//package com.midasplayer.extras
Section 114
//WaveEngine (com.midasplayer.extras.WaveEngine)
package com.midasplayer.extras {
import flash.events.*;
import flash.display.*;
public class WaveEngine extends MovieClip {
private var m_wave:DrawSine;
private var m_fillColor:uint;
private var m_num_waves:int;// = 3
private var m_waveHolder:MovieClip;
private var m_sinArr:Array;
private var m_rootRef:MovieClip;
public function WaveEngine(_arg1:MovieClip, _arg2:int, _arg3:int, _arg4:uint, _arg5:uint, _arg6:MovieClip){
m_waveHolder = new MovieClip();
m_sinArr = new Array();
super();
m_rootRef = _arg1;
m_waveHolder = _arg6;
m_wave = new DrawSine(m_waveHolder, _arg2, _arg3, 100);
var _local7:* = 0;
while (_local7 < m_num_waves) {
m_sinArr.push(new SineWave(((Math.random() * Math.PI) * 1.5), (Math.random() * 1.5), ((Math.random() * 1.5) + 1), (Math.random() - 0.5)));
_local7++;
};
m_wave.set_stroke(3, _arg5);
m_wave.set_fill(true, _arg4, 100);
m_fillColor = _arg4;
}
public function startWave():void{
m_rootRef.addEventListener(Event.ENTER_FRAME, update);
}
public function getWave():MovieClip{
return (m_waveHolder);
}
private function update(_arg1:Event):void{
var _local2:*;
for (_local2 in m_sinArr) {
m_sinArr[_local2].phase = (m_sinArr[_local2].phase + m_sinArr[_local2].inc);
};
m_wave.set_fill(true, m_fillColor, 1);
m_wave.draw_waves(m_sinArr);
}
public function stopWave():void{
m_rootRef.removeEventListener(Event.ENTER_FRAME, update);
}
public function colorUpdate(_arg1:uint):void{
var _local2:String = ("0x" + _arg1.toString(16));
m_fillColor = uint(_local2);
}
}
}//package com.midasplayer.extras
Section 115
//KingAPI (com.midasplayer.KingAPI)
package com.midasplayer {
import flash.events.*;
import com.midasplayer.extras.*;
import flash.net.*;
import flash.external.*;
public class KingAPI {
public static const LINK_TYPE_RIGHT_CLICK:String = "rightclick";
public static const USER_TYPE_SUBSCRIPTION:int = 3;
public static const LINK_TYPE_HIGHSCORES:String = "highscores";
public static const LINK_TYPE_SIGN:String = "sign";
public static const INITIALIZED_EVENT:String = "initialized";
public static const LINK_TYPE_OTHER_GAMES:String = "other_games";
public static const USER_TYPE_REGISTERED:int = 1;
private static const SAK:String = "ggfd7sday923mdsfd8csfds34";
private static const loadHomeParametersURL:String = "http://www.king.com/servlet/FreeGameServlet?action=load";
public static const LINK_TYPE_LOADER_MOVIE:String = "loader_movie";
private static const bounceURL:String = "http://www.mygame.com/king/bounce.jsp";
public static const LINK_TYPE_PROTECT:String = "protect";
public static const LINK_TYPE_ADD_GAME:String = "add_game";
public static const USER_TYPE_GOLD:int = 2;
public static const USER_TYPE_UNREGISTERED:int = 0;
public static const HOST_BANNED_EVENT:String = "hostBanned";
private static const SK:String = "vf78hxcsjak77cxzhjkwad87s";
private static const loadCountURL:String = "http://www.mygame.com/king/loadcount.jsp";
public static const LINK_TYPE_LOADER_PROGRESS:String = "loader_progress";
private static var check:String = null;
public static var gameName:String;
public static var banned:Boolean = false;
protected static var dispatcher:EventDispatcher;
public static var isHome:Boolean = false;
private static var sessionID:String;
private static var iscore:int = 123;
public static var fromURL:String;
private static var SSK:String = "ng43ui54hy35tdsnd6f54rews";
private static function loadUrlErrorHandler(_arg1:Event):void{
trace(("Unable to load url: " + _arg1));
}
public static function resetScore():void{
iscore = 123;
check = null;
}
public static function openOfflineProtectionLink():void{
openKingPage(LINK_TYPE_PROTECT);
}
public static function init(_arg1:String, _arg2:String):void{
var so:SharedObject;
var rnd1:Number;
var rnd2:Number;
var name = _arg1;
var from = _arg2;
gameName = name;
fromURL = from;
var loadCounter:URLLoader = new URLLoader();
var reqvars:URLVariables = new URLVariables();
reqvars.game = gameName;
reqvars.from = fromURL;
try {
so = SharedObject.getLocal("sessionId");
if (so.data.sessionID == null){
rnd1 = Math.abs(Math.floor((Math.random() * 4294967295)));
rnd2 = Math.abs(Math.floor((Math.random() * 4294967295)));
so.data.sessionID = (rnd1.toString(16) + rnd2.toString(16));
so.flush();
};
sessionID = so.data.sessionID;
} catch(e:Error) {
sessionID = "error";
};
reqvars.session = sessionID;
var request:URLRequest = new URLRequest(((loadCountURL + "?") + reqvars.toString()));
loadCounter.addEventListener(Event.COMPLETE, loadCountHandler);
loadCounter.addEventListener(IOErrorEvent.IO_ERROR, loadUrlErrorHandler);
loadCounter.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loadUrlErrorHandler);
try {
loadCounter.load(request);
} catch(error:Error) {
trace(("Unable to load loadcount url: " + loadCountURL));
trace(error.message);
};
}
private static function loadHomeParametersHandler(_arg1:Event):void{
var _local2:URLLoader = URLLoader(_arg1.target);
trace(("loadCounter.data" + _local2.data));
}
public static function submitInternalScore():void{
checkScore();
var _local1:int = ((iscore - 123) / 2);
submitScore(_local1);
}
public static function openOtherGamesLink():void{
openKingPage(LINK_TYPE_OTHER_GAMES);
}
public static function openKingPage(_arg1:String, _arg2:String=null):void{
var _local3:URLVariables = new URLVariables();
_local3.game = gameName;
_local3.from = fromURL;
_local3.type = _arg1;
_local3.session = sessionID;
if (_arg2 != null){
_local3.redirect = _arg2;
};
var _local4 = "_blank";
if (isHome){
_local4 = "_top";
};
navigateToURL(new URLRequest(((bounceURL + "?") + _local3.toString())), _local4);
}
private static function loadCountHandler(_arg1:Event):void{
var vars:URLVariables;
var event = _arg1;
var loadCounter:URLLoader = URLLoader(event.target);
trace(("loadCounter.data :" + loadCounter.data));
try {
vars = new URLVariables(loadCounter.data);
if (vars.h == "true"){
isHome = true;
};
if (vars.b == "true"){
banned = true;
dispatcher.dispatchEvent(new Event(HOST_BANNED_EVENT));
} else {
dispatcher.dispatchEvent(new Event(INITIALIZED_EVENT));
};
trace((("::" + vars.h) + "::"));
trace((("::" + vars.b) + "::"));
} catch(e:Error) {
trace(("Error reading data from loadcount url: " + e));
dispatcher.dispatchEvent(new Event(INITIALIZED_EVENT));
};
}
public static function addEventListener(_arg1:String, _arg2:Function):void{
if (dispatcher == null){
dispatcher = new EventDispatcher();
};
dispatcher.addEventListener(_arg1, _arg2);
}
public static function openLoaderMovieLink():void{
openKingPage(LINK_TYPE_LOADER_MOVIE);
}
public static function removeEventListener(_arg1:String, _arg2:Function):void{
if (dispatcher == null){
return;
};
dispatcher.removeEventListener(_arg1, _arg2);
}
public static function submitScore(_arg1:int):void{
var score = _arg1;
var hash:String = md5.encrypt(((((score + ":") + gameName) + ":") + SSK));
try {
if (isHome){
ExternalInterface.call("submitScore", score, hash);
} else {
openKingPage(LINK_TYPE_HIGHSCORES, ((((("game/" + gameName) + "/submit/") + score) + ":") + hash));
};
} catch(e:Error) {
trace(e);
};
}
public static function submitLevel(_arg1:int):void{
var level = _arg1;
var hash:String = md5.encrypt(((((level + ":") + gameName) + ":") + SSK));
try {
if (isHome){
ExternalInterface.call("submitLevel", level, hash);
};
} catch(e:Error) {
trace(e);
};
}
public static function openHighscoresLink():void{
openKingPage(LINK_TYPE_HIGHSCORES, (("game/" + gameName) + "/highscores"));
}
public static function openSignLink():void{
if (!isHome){
openKingPage(LINK_TYPE_SIGN);
};
}
public static function openRightClickLink():void{
openKingPage(LINK_TYPE_RIGHT_CLICK);
}
private static function checkScore():void{
if (check != null){
if (check != md5.encrypt(((((iscore + ":") + gameName) + ":") + SK))){
SSK = "ng41ui54hy35tdsnd6f54rews";
};
};
}
public static function addScore(_arg1:int):int{
checkScore();
var _local2:int = ((iscore - 123) / 2);
_local2 = (_local2 + _arg1);
iscore = ((_local2 * 2) + 123);
check = md5.encrypt(((((iscore + ":") + gameName) + ":") + SK));
return (_local2);
}
public static function openLoaderProgressLink():void{
openKingPage(LINK_TYPE_LOADER_PROGRESS);
}
public static function openAddToWebsiteLink():void{
openKingPage(LINK_TYPE_ADD_GAME, "website_content.jsp");
}
public static function submitAchievement(_arg1:String):void{
var achievement = _arg1;
var hash:String = md5.encrypt(((((achievement + ":") + gameName) + ":") + SAK));
try {
if (isHome){
ExternalInterface.call("submitAchievement", achievement, hash);
};
} catch(e:Error) {
trace(e);
};
}
}
}//package com.midasplayer
Section 116
//MainLoader (com.midasplayer.MainLoader)
package com.midasplayer {
import flash.events.*;
import flash.display.*;
import caurina.transitions.*;
import utils.*;
import fl.transitions.*;
import flash.geom.*;
import com.midasplayer.extras.*;
import flash.media.*;
import Types.*;
import fl.transitions.easing.*;
import flash.text.*;
import flash.filters.*;
import flash.net.*;
public class MainLoader extends MovieClip {
public var cross666Button:SimpleButton;
private var m_tween:Tween;
public var nowLevelAvailable:int;
public var redBall1BannerButton:SimpleButton;
private var m_dist:Number;
private var m_yellowDest:Number;
private var m_logoHolder:Sprite;
public var FWGLogo:SimpleButton;
public var i:int;
public var creditsButton:SimpleButton;
private var m_maskRown:MovieClip;
public var levelButton10:LevelButton;
public var levelButton11:LevelButton;
public var levelButton12:LevelButton;
public var levelButton13:LevelButton;
public var levelButton14:LevelButton;
public var levelButton15:LevelButton;
public var levelButton16:LevelButton;
public var levelButton17:LevelButton;
public var levelButton18:LevelButton;
public var levelButton19:LevelButton;
private var m_rootRef:MovieClip;
public var badimButton:SimpleButton;
public var program:Sprite;
public var preloader:Preloader;
public var johnnyKButton:SimpleButton;
private var m_GREEN:MovieClip;
public var levelButton20:LevelButton;
private var m_bounce:Boolean;// = false
private var m_loaderContent:Array;
private var m_colorOff:Boolean;// = false
public var redBall1Dialog:HelpText;
private var m_otherGames:Sprite;
private var m_pressBtn:Boolean;// = false
private var m_ferryRed:MovieClip;
private var m_streamGreen:Boolean;// = true
public var crown:MovieClip;
private var GAME_NAME:String;// = "red-ball-2"
public var colorFilter:BitmapFilter;
public var moreGamesButton:SimpleButton;
private var m_sampleLoadPerc:Number;// = -1
private var m_count;// = 0
private var m_clsBlue:Water;
public var backToMenuButton:SimpleButton;
public var tombor911Button:SimpleButton;
public var title2:TextField;
public var fglButton:SimpleButton;
public var cgpButton:SimpleButton;
public var title1:MovieClip;
private var m_endColor:ColorTransform;
public var playRedBall1Button:SimpleButton;
private var m_BLUE:MovieClip;
public var box2DButton:SimpleButton;
private var m_greenDest:Number;
public var backButton:SimpleButton;
public var bright:Number;
private var m_waveEngineLogo:WaveEngine;
private var STAGE_WIDTH:Number;// = 550
public var afterGameComics:AfterGameComics;
private var m_waveEngineCrown:WaveEngine;
private var m_streamBlue:Boolean;// = false
public var preGameComics:PreGameComics;
public var levelFlag:MovieClip;
private var m_clsRed:Water;
public var levelButton1:LevelButton;
public var levelButton2:LevelButton;
public var levelButton3:LevelButton;
public var levelButton4:LevelButton;
public var levelButton5:LevelButton;
public var levelButton6:LevelButton;
public var levelButton7:LevelButton;
public var levelButton8:LevelButton;
public var levelButton9:LevelButton;
private var m_overBtn:Boolean;// = false
private var m_ferryGreen:MovieClip;
public var walkthroughButton:SimpleButton;
public var efButton:SimpleButton;
public var bonusLevelsButton:SimpleButton;
private var m_ferryBlue:MovieClip;
public var efCreditsButton:SimpleButton;
private var m_tweenBounceLogo:Tween;
private var m_startColor:ColorTransform;
private var m_bg:Sprite;
private var m_prevPerc:Number;// = -1
public var programClass:Class;
private var m_step:Number;
public var filterMatrix:Array;
public var resetButton:SimpleButton;
private var m_logoFill:Boolean;// = true
private var m_streamHeight:Number;
private var m_waveHolderLogo:MovieClip;
private var m_isLoaded:Boolean;// = false
private var m_sun:Sprite;
private var m_mask:MovieClip;
private var m_clsGreen:Water;
private var m_crownFill:Boolean;// = false
public var levelCrown:MovieClip;
public var embedPreloader:EmbedPreloader;
private var m_RED:MovieClip;
private var MOCHI:String;// = "517d0932"
private var STAGE_HEIGHT:Number;// = 400
public var kingButton:SimpleButton;
private var m_streamRed:Boolean;// = false
public var startGameButton:SimpleButton;
private var m_gameFrameRate:int;
private var m_play:Sprite;
public var levelButton:LevelButton;
public var downloadButton:SimpleButton;
private var m_waveHolderCrown:MovieClip;
public var soundsnapButton:SimpleButton;
public function MainLoader(){
m_loaderContent = new Array();
m_waveHolderLogo = new MovieClip();
m_waveHolderCrown = new MovieClip();
m_mask = new MovieClip();
m_maskRown = new MovieClip();
m_RED = new WaterHolderR();
m_GREEN = new WaterHolderG();
m_BLUE = new WaterHolderB();
m_ferryGreen = new ferryGreen();
m_ferryRed = new ferryRed();
m_ferryBlue = new ferryBlue();
super();
addFrameScript(0, frame1, 2, frame3, 3, frame4, 4, frame5, 7, frame8, 8, frame9);
trace("MainLoader()");
stop();
m_rootRef = this;
m_bg = new Sprite();
m_bg.graphics.beginFill(0x333333, 1);
m_bg.graphics.drawRect(0, 0, STAGE_WIDTH, STAGE_HEIGHT);
m_bg.addEventListener(MouseEvent.CLICK, openKingPage);
m_rootRef.addChild(m_bg);
m_loaderContent.push(m_bg);
stage.scaleMode = StageScaleMode.NO_SCALE;
KingAPI.addEventListener(KingAPI.INITIALIZED_EVENT, onKingApiInit);
KingAPI.addEventListener(KingAPI.HOST_BANNED_EVENT, onKingApiInit);
KingAPI.init(GAME_NAME, root.loaderInfo.url);
}
public function bonusLevelsButtonClickHandler(_arg1:MouseEvent):void{
Preloader.bonusPlaying = true;
StartGame(21);
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function onBtnOut(_arg1:MouseEvent):void{
_arg1.target.removeEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
if (m_pressBtn){
_arg1.target.x = (_arg1.target.x - 1);
_arg1.target.y = (_arg1.target.y - 2);
m_pressBtn = false;
};
}
private function onLoaderMovieFinished():void{
trace("onGameLoaded()");
m_tween.removeEventListener(TweenEvent.MOTION_CHANGE, tweenTransformCrown);
m_rootRef.removeEventListener(Event.ENTER_FRAME, update);
}
public function fglButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.flashgamelicense.com/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function onPlayReleased(_arg1:MouseEvent):void{
cleanUp();
gotoGame();
}
public function soundsnapButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.soundsnap.com/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function redBall1BannerButtonOverHandler(_arg1:MouseEvent):void{
Preloader.sound.Play(SoundID.MENU_MOVE);
Tweener.addTween(redBall1Dialog, {scaleX:0.9, scaleY:0.9, time:0.5, transition:"easeOutBack"});
}
public function backButtonClickHandler(_arg1:MouseEvent):void{
gotoAndStop("mainMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function onBtnPress(_arg1:MouseEvent):void{
m_pressBtn = true;
_arg1.target.x = (_arg1.target.x + 1);
_arg1.target.y = (_arg1.target.y + 2);
}
function frame1(){
preloader = new Preloader();
addChild(preloader);
preloader.Init();
embedPreloader.stop();
}
function frame4(){
efCreditsButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
box2DButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
cgpButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
fglButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
johnnyKButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
badimButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
backButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
soundsnapButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
tombor911Button.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
cross666Button.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
efCreditsButton.addEventListener(MouseEvent.CLICK, efCreditsButtonClickHandler, false, 0, true);
box2DButton.addEventListener(MouseEvent.CLICK, box2DButtonClickHandler, false, 0, true);
cgpButton.addEventListener(MouseEvent.CLICK, cgpButtonClickHandler, false, 0, true);
fglButton.addEventListener(MouseEvent.CLICK, fglButtonClickHandler, false, 0, true);
johnnyKButton.addEventListener(MouseEvent.CLICK, johnnyKButtonClickHandler, false, 0, true);
badimButton.addEventListener(MouseEvent.CLICK, badimButtonClickHandler, false, 0, true);
backButton.addEventListener(MouseEvent.CLICK, backButtonClickHandler, false, 0, true);
soundsnapButton.addEventListener(MouseEvent.CLICK, soundsnapButtonClickHandler, false, 0, true);
tombor911Button.addEventListener(MouseEvent.CLICK, tombor911ButtonClickHandler, false, 0, true);
cross666Button.addEventListener(MouseEvent.CLICK, cross666ButtonClickHandler, false, 0, true);
}
function frame5(){
if (Preloader.levelAvailable > Preloader.levelTotal){
crown.visible = true;
} else {
crown.visible = false;
};
}
function frame8(){
Preloader.sound.Play(SoundID.LOOP1);
levelFlag.gotoAndStop(10);
if (Preloader.levelAvailable <= Preloader.levelTotal){
levelFlag.visible = true;
levelCrown.visible = false;
} else {
levelFlag.visible = false;
levelCrown.visible = true;
};
nowLevelAvailable = (Preloader.continueGame) ? Preloader.levelStart : Preloader.levelAvailable;
i = 1;
while (i <= Preloader.levelTotal) {
levelButton = (getChildByName(("levelButton" + i)) as LevelButton);
levelButton.Init(i);
if (levelButton.n <= nowLevelAvailable){
levelButton.gotoAndStop(3);
} else {
levelButton.gotoAndStop(1);
};
if (i == nowLevelAvailable){
levelButton.filters = [new GlowFilter(0xFF0000, 1, 2, 2, 10, 1, false, false)];
levelFlag.visible = true;
levelFlag.x = (levelButton.x + 4);
levelFlag.y = (levelButton.y - 29);
};
if (!Preloader.continueGame){
levelButton.addEventListener(MouseEvent.MOUSE_OVER, mouseOverLevelButtonHandler, false, 0, true);
levelButton.addEventListener(MouseEvent.MOUSE_OUT, mouseOutLevelButtonHandler, false, 0, true);
levelButton.addEventListener(MouseEvent.CLICK, mouseClickLevelButtonHandler, false, 0, true);
};
i++;
};
filterMatrix = new Array();
bright = 0.38;
filterMatrix = filterMatrix.concat([bright, bright, bright, 0, 0]);
filterMatrix = filterMatrix.concat([bright, bright, bright, 0, 0]);
filterMatrix = filterMatrix.concat([bright, bright, bright, 0, 0]);
filterMatrix = filterMatrix.concat([0, 0, 0, 1, 0]);
colorFilter = new ColorMatrixFilter(filterMatrix);
backToMenuButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
resetButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
resetButton.addEventListener(MouseEvent.CLICK, resetButtonClickHandler, false, 0, true);
backToMenuButton.addEventListener(MouseEvent.CLICK, backToMenuButtonClickHandler, false, 0, true);
if (Preloader.continueGame){
resetButton.visible = false;
backToMenuButton.visible = false;
} else {
resetButton.visible = true;
backToMenuButton.visible = true;
};
if (Preloader.continueGame){
Preloader.stageLink.addEventListener(KeyboardEvent.KEY_DOWN, continueGame, false, 0, true);
Preloader.stageLink.addEventListener(MouseEvent.CLICK, continueGame, false, 0, true);
};
}
private function onBtnOver(_arg1:MouseEvent):void{
_arg1.target.addEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
}
function frame9(){
programClass = (loaderInfo.applicationDomain.getDefinition("Game") as Class);
program = (getWR(new programClass()).object as Sprite);
addChild(program);
}
function frame3(){
stop();
Preloader.sound.Play(SoundID.LOOP1);
startGameButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
bonusLevelsButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
walkthroughButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
moreGamesButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
creditsButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
playRedBall1Button.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
downloadButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
efButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
kingButton.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
redBall1BannerButton.addEventListener(MouseEvent.MOUSE_OVER, redBall1BannerButtonOverHandler, false, 0, true);
redBall1BannerButton.addEventListener(MouseEvent.MOUSE_OUT, redBall1BannerButtonOutHandler, false, 0, true);
startGameButton.addEventListener(MouseEvent.CLICK, startGameButtonClickHandler, false, 0, true);
bonusLevelsButton.addEventListener(MouseEvent.CLICK, bonusLevelsButtonClickHandler, false, 0, true);
walkthroughButton.addEventListener(MouseEvent.CLICK, walktroughButtonClickHandler, false, 0, true);
moreGamesButton.addEventListener(MouseEvent.CLICK, moreGamesButtonClickHandler, false, 0, true);
creditsButton.addEventListener(MouseEvent.CLICK, creditsButtonClickHandler, false, 0, true);
playRedBall1Button.addEventListener(MouseEvent.CLICK, playRedBall1ButtonClickHandler, false, 0, true);
redBall1BannerButton.addEventListener(MouseEvent.CLICK, playRedBall1ButtonClickHandler, false, 0, true);
downloadButton.addEventListener(MouseEvent.CLICK, downloadButtonClickHandler, false, 0, true);
efButton.addEventListener(MouseEvent.CLICK, efButtonClickHandler, false, 0, true);
kingButton.addEventListener(MouseEvent.CLICK, kingButtonClickHandler, false, 0, true);
title1.x = 676;
title2.x = 552;
Tweener.addTween(title1, {x:275, time:0.5, transition:"easeOutBack"});
Tweener.addTween(title2, {x:151, time:0.5, transition:"easeOutBack"});
redBall1Dialog.scaleX = (redBall1Dialog.scaleY = 0);
if (Preloader.levelAvailable > Preloader.levelTotal){
crown.visible = true;
} else {
crown.visible = false;
};
if (!Preloader.bonusAvailable){
bonusLevelsButton.alpha = 0.7;
bonusLevelsButton.mouseEnabled = false;
};
if (Preloader.isUrl(["freeworldgroup.com"])){
FWGLogo.visible = true;
FWGLogo.addEventListener(MouseEvent.MOUSE_OVER, overButtonHandler, false, 0, true);
FWGLogo.addEventListener(MouseEvent.CLICK, fwgLogoClickHandler, false, 0, true);
} else {
FWGLogo.visible = false;
};
}
private function tweenTransformLogo(_arg1:TweenEvent):void{
m_waveEngineLogo.colorUpdate(interpolateColor(m_startColor, m_endColor, m_tween.position).color);
}
public function moreGamesButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openOtherGamesLink();
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function cgpButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://personal.boristhebrave.com/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function resetButtonClickHandler(_arg1:MouseEvent):void{
Preloader.levelAvailable = 1;
Preloader.levelSave.data.levelAvailable = Preloader.levelAvailable;
Preloader.levelSave.flush(100);
gotoAndStop(15);
gotoAndStop("selectLevelMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function getWR(_arg1):WeakReference{
return (new WeakReference(_arg1));
}
public function badimButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://blog.elite-games.net/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function showBannedScreen():void{
var _local1:Sprite = new mcBannedSign();
_local1.buttonMode = true;
_local1.addEventListener(MouseEvent.CLICK, openKingPage);
m_rootRef.addChild(_local1);
}
public function cross666ButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://cross666.newgrounds.com/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function cleanUp():void{
m_otherGames.removeEventListener(MouseEvent.MOUSE_UP, onOtherReleased);
m_otherGames.removeEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
m_otherGames.removeEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_otherGames.removeEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
m_play.removeEventListener(MouseEvent.MOUSE_UP, onPlayReleased);
m_play.removeEventListener(MouseEvent.MOUSE_DOWN, onBtnPress);
m_play.removeEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_play.removeEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
var _local1:int;
while (_local1 < m_loaderContent.length) {
m_rootRef.removeChild(m_loaderContent[_local1]);
m_loaderContent[_local1] = null;
_local1++;
};
}
private function onOtherReleased(_arg1:MouseEvent):void{
KingAPI.openOtherGamesLink();
}
public function johnnyKButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("mailto:johnny@johnny-k.ru"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function interpolateColor(_arg1:ColorTransform, _arg2:ColorTransform, _arg3:Number):ColorTransform{
var _local4:ColorTransform = new ColorTransform();
_local4.redMultiplier = (_arg1.redMultiplier + ((_arg2.redMultiplier - _arg1.redMultiplier) * _arg3));
_local4.greenMultiplier = (_arg1.greenMultiplier + ((_arg2.greenMultiplier - _arg1.greenMultiplier) * _arg3));
_local4.blueMultiplier = (_arg1.blueMultiplier + ((_arg2.blueMultiplier - _arg1.blueMultiplier) * _arg3));
_local4.alphaMultiplier = (_arg1.alphaMultiplier + ((_arg2.alphaMultiplier - _arg1.alphaMultiplier) * _arg3));
_local4.redOffset = (_arg1.redOffset + ((_arg2.redOffset - _arg1.redOffset) * _arg3));
_local4.greenOffset = (_arg1.greenOffset + ((_arg2.greenOffset - _arg1.greenOffset) * _arg3));
_local4.blueOffset = (_arg1.blueOffset + ((_arg2.blueOffset - _arg1.blueOffset) * _arg3));
_local4.alphaOffset = (_arg1.alphaOffset + ((_arg2.alphaOffset - _arg1.alphaOffset) * _arg3));
return (_local4);
}
public function kingButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openOtherGamesLink();
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function mouseOutLevelButtonHandler(_arg1:MouseEvent):void{
if (_arg1.target.n <= Preloader.levelAvailable){
_arg1.target.gotoAndStop(3);
} else {
_arg1.target.gotoAndStop(1);
};
}
private function update(_arg1:Event):void{
var _local2:int;
var _local3:int;
var _local4:MovieClip;
var _local5:Sound;
var _local6:Sound;
if ((((stage.loaderInfo.bytesLoaded == stage.loaderInfo.bytesTotal)) && (!(m_isLoaded)))){
m_isLoaded = true;
trace("LOADED COMPLETWE");
};
m_count++;
if (m_streamGreen){
if (m_count == 1){
m_GREEN.height = (m_GREEN.height - m_GREEN.height);
m_GREEN.alpha = 1;
m_ferryGreen.gotoAndStop("on");
};
m_GREEN.height = (m_GREEN.height + 20);
if (m_GREEN.height >= m_streamHeight){
m_GREEN.height = m_streamHeight;
if (m_clsGreen.decrThickness(false)){
m_streamGreen = false;
m_streamBlue = true;
m_count = 0;
};
};
};
if (m_streamBlue){
if (m_count >= 40){
if (m_count == 40){
m_BLUE.height = (m_BLUE.height - m_BLUE.height);
m_BLUE.alpha = 1;
m_ferryBlue.gotoAndStop("on");
m_tween = new Tween(m_waveHolderLogo, "", None.easeNone, 0, 1, 2, true);
m_tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenTransformLogo);
};
m_BLUE.height = (m_BLUE.height + 20);
if (m_BLUE.height >= m_streamHeight){
m_BLUE.height = m_streamHeight;
if (m_clsBlue.decrThickness(false)){
m_streamBlue = false;
};
};
};
};
if (m_logoFill){
if (m_waveHolderLogo.y > m_greenDest){
m_waveHolderLogo.y = (m_waveHolderLogo.y - 0.3);
} else {
m_waveHolderLogo.y = m_greenDest;
if (!m_streamBlue){
m_colorOff = true;
m_waveEngineLogo.stopWave();
};
};
};
if (m_colorOff){
if (m_logoFill){
if (m_clsBlue.decrThickness(true)){
if (m_BLUE.rotation != 180){
m_BLUE.rotation = 180;
m_BLUE.y = (STAGE_HEIGHT / 2);
m_ferryBlue.gotoAndStop("off");
};
m_BLUE.scaleY = (m_BLUE.scaleY - 0.1);
if (m_BLUE.scaleY < 0){
m_BLUE.alpha = 0;
m_colorOff = false;
m_logoFill = false;
m_count = 0;
m_crownFill = true;
m_streamRed = true;
m_startColor = new ColorTransform();
m_startColor.color = 0xFF00;
m_endColor = new ColorTransform();
m_endColor.color = 0xFFAA00;
m_tween.removeEventListener(TweenEvent.MOTION_CHANGE, tweenTransformLogo);
m_tween = new Tween(m_waveHolderCrown, "", None.easeNone, 0, 1, 2, true);
m_tween.addEventListener(TweenEvent.MOTION_CHANGE, tweenTransformCrown);
};
};
};
if (m_crownFill){
if (((m_clsRed.decrThickness(true)) && (m_clsGreen.decrThickness(true)))){
if (m_GREEN.rotation != 180){
m_GREEN.rotation = 180;
m_RED.rotation = 180;
m_GREEN.y = (STAGE_HEIGHT / 2);
m_RED.y = (STAGE_HEIGHT / 2);
m_ferryGreen.gotoAndStop("off");
m_ferryRed.gotoAndStop("off");
};
m_GREEN.scaleY = (m_GREEN.scaleY - 0.1);
m_RED.scaleY = (m_RED.scaleY - 0.1);
if ((((m_GREEN.scaleY < 0)) && ((m_RED.scaleY < 0)))){
m_GREEN.alpha = 0;
m_RED.alpha = 0;
m_colorOff = false;
m_crownFill = false;
m_bounce = true;
m_count = 0;
};
};
};
};
if (m_crownFill){
if (m_sampleLoadPerc == -1){
m_sampleLoadPerc = (100 - (100 * (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal)));
m_step = (m_dist / 100);
};
_local2 = (100 - (100 * (stage.loaderInfo.bytesLoaded / stage.loaderInfo.bytesTotal)));
_local2 = ((100 * (m_sampleLoadPerc - _local2)) / m_sampleLoadPerc);
if (m_waveHolderCrown.y > m_yellowDest){
if ((m_waveHolderCrown.y - m_step) < m_yellowDest){
m_waveHolderCrown.y = m_yellowDest;
} else {
if (m_isLoaded){
m_waveHolderCrown.y = (m_waveHolderCrown.y - 0.5);
} else {
trace(m_prevPerc, _local2);
if (m_prevPerc != _local2){
_local3 = (_local2 - m_prevPerc);
m_waveHolderCrown.y = (m_waveHolderCrown.y - m_step);
m_prevPerc = _local2;
};
};
};
} else {
m_colorOff = true;
m_waveEngineCrown.stopWave();
};
};
if (m_streamRed){
if (m_count >= 20){
if (m_count == 20){
m_RED.height = (m_RED.height - m_RED.height);
m_RED.alpha = 1;
m_ferryRed.gotoAndStop("on");
};
m_RED.height = (m_RED.height + 20);
if (m_RED.height >= m_streamHeight){
m_RED.height = m_streamHeight;
if (m_clsRed.decrThickness(false)){
m_streamRed = false;
};
};
};
};
if (m_bounce){
if (m_count == 1){
_local4 = new mcWaterRing();
_local4.x = (STAGE_WIDTH / 2);
_local4.y = ((STAGE_HEIGHT / 2) + 30);
m_rootRef.addChild(_local4);
m_loaderContent.push(_local4);
};
if (m_count == 2){
_local5 = new sfxBounce();
_local5.play();
};
if (m_count < 3){
m_logoHolder.y = (m_logoHolder.y + 1);
m_waveHolderCrown.y = (m_waveHolderCrown.y + 1);
m_waveHolderLogo.y = (m_waveHolderLogo.y + 1);
m_maskRown.y = (m_maskRown.y + 1);
m_mask.y = (m_mask.y + 1);
};
if ((((m_count > 2)) && ((m_count < 4)))){
m_logoHolder.y = (m_logoHolder.y - 1);
m_waveHolderCrown.y = (m_waveHolderCrown.y - 1);
m_waveHolderLogo.y = (m_waveHolderLogo.y - 1);
m_maskRown.y = (m_maskRown.y - 1);
m_mask.y = (m_mask.y - 1);
};
if (m_count == 4){
_local6 = new sfxBell();
_local6.play();
};
if (m_count == 30){
m_play.visible = true;
m_otherGames.visible = true;
};
if (m_count > 30){
m_play.alpha = (m_play.alpha + 0.05);
if (m_count > 40){
m_otherGames.alpha = (m_otherGames.alpha + 0.05);
};
if ((((m_play.alpha >= 1)) && ((m_otherGames.alpha >= 1)))){
m_bounce = false;
onLoaderMovieFinished();
};
};
};
}
private function playLoaderMovie():void{
var _local1:MovieClip = new mcFerryLine();
m_rootRef.addChild(m_ferryGreen);
m_rootRef.addChild(m_ferryRed);
m_rootRef.addChild(m_ferryBlue);
m_ferryGreen.x = ((STAGE_WIDTH / 2) - 2);
m_ferryRed.x = ((m_ferryGreen.x - (m_ferryGreen.width / 2)) + 15);
m_ferryBlue.x = ((m_ferryGreen.x + (m_ferryGreen.width / 2)) - 17);
m_ferryBlue.y = (m_ferryGreen.y = (m_ferryRed.y = (m_bg.y + 15)));
m_loaderContent.push(m_ferryGreen);
m_loaderContent.push(m_ferryRed);
m_loaderContent.push(m_ferryBlue);
_local1.x = (STAGE_WIDTH / 2);
_local1.y = ((m_ferryGreen.y + m_ferryGreen.height) - 9);
m_streamHeight = ((STAGE_HEIGHT / 2) - 40);
m_clsRed = m_RED.RED;
m_clsRed.init(m_streamHeight, 1);
m_clsGreen = m_GREEN.GREEN;
m_clsGreen.init(m_streamHeight, 1);
m_clsBlue = m_BLUE.BLUE;
m_clsBlue.init(m_streamHeight, 1);
m_RED.alpha = (m_GREEN.alpha = (m_BLUE.alpha = 0));
m_rootRef.addChild(m_RED);
m_rootRef.addChild(m_GREEN);
m_rootRef.addChild(m_BLUE);
m_loaderContent.push(m_RED);
m_loaderContent.push(m_GREEN);
m_loaderContent.push(m_BLUE);
m_RED.x = ((STAGE_WIDTH / 2) - 22);
m_GREEN.x = ((STAGE_WIDTH / 2) - 4);
m_BLUE.x = ((STAGE_WIDTH / 2) + 16);
m_RED.y = (m_GREEN.y = (m_BLUE.y = _local1.y));
m_waveEngineLogo = new WaveEngine(m_rootRef, 205.8, 120, 0xFF00, 0xFF00, m_waveHolderLogo);
m_waveHolderLogo = m_waveEngineLogo.getWave();
m_rootRef.addChild(m_waveHolderLogo);
m_loaderContent.push(m_waveHolderLogo);
m_waveEngineCrown = new WaveEngine(m_rootRef, 67.5, 100, 0xFFAA00, 0xFFAA00, m_waveHolderCrown);
m_waveHolderCrown = m_waveEngineCrown.getWave();
m_rootRef.addChild(m_waveHolderCrown);
m_loaderContent.push(m_waveHolderCrown);
m_logoHolder = new mcLogoHolder();
m_logoHolder.x = (STAGE_WIDTH / 2);
m_logoHolder.y = ((STAGE_HEIGHT / 2) - 2);
m_logoHolder.mouseEnabled = false;
m_rootRef.addChild(m_logoHolder);
m_loaderContent.push(m_logoHolder);
m_mask = new mcLogoMask();
m_mask.x = m_logoHolder.x;
m_mask.y = m_logoHolder.y;
m_rootRef.addChild(m_mask);
m_loaderContent.push(m_mask);
m_maskRown = new mcCrownMask();
m_maskRown.x = m_logoHolder.x;
m_maskRown.y = m_logoHolder.y;
m_rootRef.addChild(m_maskRown);
m_loaderContent.push(m_maskRown);
m_waveHolderLogo.mask = m_mask;
m_waveHolderLogo.x = ((STAGE_WIDTH / 2) - (m_mask.width / 2));
m_waveHolderLogo.y = (((STAGE_HEIGHT / 2) + (m_mask.height / 2)) + 15);
m_waveHolderCrown.mask = m_maskRown;
m_waveHolderCrown.x = (m_logoHolder.x - (m_maskRown.width / 2));
m_waveHolderCrown.y = (m_logoHolder.y + 4);
m_waveEngineLogo.startWave();
m_waveEngineCrown.startWave();
m_greenDest = ((m_waveHolderLogo.y - (120 / 2)) - 10);
m_yellowDest = (m_waveHolderCrown.y - (100 / 2));
m_dist = (m_waveHolderCrown.y - m_yellowDest);
m_startColor = new ColorTransform();
m_startColor.color = 0xFF00;
m_endColor = new ColorTransform();
m_endColor.color = 35886;
m_play = new mcPlay();
m_play.x = (STAGE_WIDTH / 2);
m_play.y = ((m_logoHolder.y + m_logoHolder.height) - 5);
m_play.buttonMode = true;
m_play.alpha = 0;
m_play.visible = false;
m_play.addEventListener(MouseEvent.MOUSE_UP, onPlayReleased);
m_play.addEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_play.addEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
m_rootRef.addChild(m_play);
m_loaderContent.push(m_play);
m_otherGames = new mcOtherGames();
m_otherGames.x = (STAGE_WIDTH / 2);
m_otherGames.y = ((m_play.y + m_play.height) + 15);
m_otherGames.buttonMode = true;
m_otherGames.alpha = 0;
m_otherGames.visible = false;
m_otherGames.addEventListener(MouseEvent.MOUSE_UP, onOtherReleased);
m_otherGames.addEventListener(MouseEvent.MOUSE_OVER, onBtnOver);
m_otherGames.addEventListener(MouseEvent.MOUSE_OUT, onBtnOut);
m_rootRef.addChild(m_otherGames);
m_loaderContent.push(m_otherGames);
m_rootRef.addEventListener(Event.ENTER_FRAME, update);
}
public function backToMenuButtonClickHandler(_arg1:MouseEvent):void{
gotoAndStop("mainMenu");
Preloader.continueGame = false;
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function playRedBall1ButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openKingPage("red-ball", "/game/red-ball");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function openKingPage(_arg1:Event):void{
trace(("openKingPage() " + _arg1));
KingAPI.openLoaderMovieLink();
}
public function box2DButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.box2d.org/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function creditsButtonClickHandler(_arg1:MouseEvent):void{
gotoAndStop("creditsMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function continueGame(_arg1:Event):void{
Preloader.stageLink.removeEventListener(KeyboardEvent.KEY_DOWN, continueGame);
Preloader.stageLink.removeEventListener(MouseEvent.CLICK, continueGame);
StartGame(nowLevelAvailable);
}
public function overButtonHandler(_arg1:MouseEvent):void{
Preloader.sound.Play(SoundID.MENU_MOVE);
}
public function StartGame(_arg1:int):void{
Preloader.levelStart = _arg1;
gotoAndStop("game");
}
public function walktroughButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openSignLink();
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function onKingApiInit(_arg1:Event):void{
trace(("onKingApiInit() :" + _arg1.type));
if (MOCHI != ""){
MochiBot.track(this, MOCHI);
};
m_gameFrameRate = root.stage.frameRate;
root.stage.frameRate = 30;
if (KingAPI.banned){
showBannedScreen();
return;
};
if (KingAPI.isHome){
gotoGame();
} else {
playLoaderMovie();
};
}
public function efButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("mailto:evgeniy_fedoseev@yahoo.com"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function startGameButtonClickHandler(_arg1:MouseEvent):void{
gotoAndStop("selectLevelMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function efCreditsButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("mailto:evgeniy_fedoseev@yahoo.com"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function mouseOverLevelButtonHandler(_arg1:MouseEvent):void{
if (_arg1.target.n <= Preloader.levelAvailable){
_arg1.target.gotoAndStop(4);
} else {
_arg1.target.gotoAndStop(2);
};
Preloader.sound.Play(SoundID.MENU_MOVE);
}
public function tombor911ButtonClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://tombor911.newgrounds.com/"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function redBall1BannerButtonOutHandler(_arg1:MouseEvent):void{
Tweener.addTween(redBall1Dialog, {scaleX:0, scaleY:0, time:0.4, transition:"easeOutQuint"});
}
public function downloadButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openAddToWebsiteLink();
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function fwgLogoClickHandler(_arg1:MouseEvent):void{
navigateToURL(new URLRequest("http://www.freeworldgroup.com"), "_blank");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function mouseClickLevelButtonHandler(_arg1:MouseEvent):void{
if (_arg1.target.n <= Preloader.levelAvailable){
_arg1.target.removeEventListener(MouseEvent.MOUSE_OVER, mouseOverLevelButtonHandler);
_arg1.target.removeEventListener(MouseEvent.MOUSE_OUT, mouseOutLevelButtonHandler);
_arg1.target.removeEventListener(MouseEvent.CLICK, mouseClickLevelButtonHandler);
StartGame(_arg1.target.n);
Preloader.sound.Play(SoundID.MENU_SELECT);
} else {
Preloader.sound.Play(SoundID.NOT_AVAILABLE);
};
}
private function gotoGame():void{
root.stage.frameRate = m_gameFrameRate;
if (Preloader.isUrl(["freeworldgroup.com"])){
m_rootRef.gotoAndStop("fwgSplash");
} else {
m_rootRef.gotoAndStop("preGameComics");
};
}
private function tweenTransformCrown(_arg1:TweenEvent):void{
m_waveEngineCrown.colorUpdate(interpolateColor(m_startColor, m_endColor, m_tween.position).color);
}
}
}//package com.midasplayer
Section 117
//BitmapEmitter (com.roguedevelopment.pulse.emitter.BitmapEmitter)
package com.roguedevelopment.pulse.emitter {
import flash.display.*;
import com.roguedevelopment.pulse.*;
import flash.events.*;
import flash.geom.*;
import flash.filters.*;
public class BitmapEmitter extends GenericEmitter {
protected var origin:Point;
protected var bitmap:BitmapData;
protected var fullRect:Rectangle;
protected var fader:ColorMatrixFilter;
public function BitmapEmitter(_arg1:Number, _arg2:BitmapData, _arg3:Number=0.85){
origin = new Point(0, 0);
fader = new ColorMatrixFilter([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, _arg3, 0]);
super(_arg1);
this.bitmap = _arg2;
fullRect = new Rectangle(0, 0, _arg2.width, _arg2.height);
root = new Sprite();
}
override public function stop():void{
super.stop();
}
override public function start():void{
PulseEngine.instance.root.addEventListener(Event.ENTER_FRAME, onEnterFrame);
super.start();
}
protected function onEnterFrame(_arg1:Event):void{
bitmap.applyFilter(bitmap, fullRect, origin, fader);
var _local2:Matrix = new Matrix();
_local2.rotate(((root.rotation * Math.PI) / 180));
_local2.translate(root.x, root.y);
_local2.scale(root.scaleX, root.scaleY);
bitmap.draw(root, _local2);
}
}
}//package com.roguedevelopment.pulse.emitter
Section 118
//GenericEmitter (com.roguedevelopment.pulse.emitter.GenericEmitter)
package com.roguedevelopment.pulse.emitter {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
import com.roguedevelopment.pulse.*;
import flash.events.*;
import flash.utils.*;
public class GenericEmitter implements IParticleEmitter {
protected var _y:Number;// = 10
protected var timer:Timer;
public var width:Number;// = 1
public var newParticlesOnTop:Boolean;// = true
protected var factory:IParticleFactory;
public var particleLimit:uint;// = 0
public var root:DisplayObjectContainer;// = null
public var height:Number;// = 1
protected var particleCount:uint;// = 0
protected var _x:Number;// = 10
public function GenericEmitter(_arg1:Number){
pps = _arg1;
root = PulseEngine.instance.root;
}
public function get y():Number{
return (_y);
}
public function stop():void{
if (factory != null){
factory.cleanup();
};
timer.stop();
}
public function setFactory(_arg1:IParticleFactory):void{
this.factory = _arg1;
}
protected function emit(_arg1:TimerEvent):void{
if (factory == null){
return;
};
if (particleLimit > 0){
particleCount++;
if (particleCount > particleLimit){
timer.stop();
return;
};
};
var _local2:IParticle = factory.newParticle();
_local2.x = (x + (Math.random() * width));
_local2.y = (y + (Math.random() * height));
if ((_local2 is DisplayObject)){
if (newParticlesOnTop){
root.addChild((_local2 as DisplayObject));
} else {
root.addChildAt((_local2 as DisplayObject), 0);
};
};
PulseEngine.instance.addParticle(_local2);
}
public function getFactory():IParticleFactory{
return (factory);
}
public function set y(_arg1:Number):void{
_y = _arg1;
}
public function set pps(_arg1:Number):void{
if (timer != null){
timer.stop();
};
timer = new Timer((1000 / _arg1));
timer.addEventListener(TimerEvent.TIMER, emit);
timer.start();
}
public function set x(_arg1:Number):void{
_x = _arg1;
}
public function start():void{
particleCount = 0;
timer.start();
}
public function get pps():Number{
return (10);
}
public function get x():Number{
return (_x);
}
}
}//package com.roguedevelopment.pulse.emitter
Section 119
//IParticleEmitter (com.roguedevelopment.pulse.emitter.IParticleEmitter)
package com.roguedevelopment.pulse.emitter {
import com.roguedevelopment.pulse.particle.*;
public interface IParticleEmitter {
function set x(_arg1:Number):void;
function stop():void;
function set y(_arg1:Number):void;
function get x():Number;
function get y():Number;
function start():void;
function setFactory(_arg1:IParticleFactory):void;
}
}//package com.roguedevelopment.pulse.emitter
Section 120
//MovieClipEmitter (com.roguedevelopment.pulse.emitter.MovieClipEmitter)
package com.roguedevelopment.pulse.emitter {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
import com.roguedevelopment.pulse.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import com.roguedevelopment.pulse.simple.*;
public final class MovieClipEmitter extends MovieClip implements IParticleEmitter {
protected var _clipName:String;
private var _config:String;
protected var origin:Point;
protected var _rootClip:Boolean;
private var realEmitter:GenericEmitter;
public function MovieClipEmitter(){
realEmitter = new GenericEmitter(20);
origin = new Point(0, 0);
super();
width = 10;
height = 10;
addEventListener(Event.ADDED_TO_STAGE, onAdded);
addEventListener(Event.REMOVED_FROM_STAGE, onRemoved);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
visible = false;
}
protected function setupEmitter():void{
var _local1:IParticleFactory;
var _local3:Class;
if (realEmitter != null){
realEmitter.stop();
};
var _local2:Array = [];
if ((((movieClipName == "")) || ((movieClipName == null)))){
_local1 = new GenericFactory(DotParticle, _local2, []);
} else {
_local3 = (getDefinitionByName(_clipName) as Class);
_local1 = new GenericFactory(_local3, _local2, []);
};
realEmitter.setFactory(_local1);
SimpleParticles.configureEmitter(realEmitter, config);
realEmitter.start();
realEmitter.x = x;
realEmitter.y = y;
if ((((parent is Sprite)) && (!(_rootClip)))){
realEmitter.root = parent;
} else {
realEmitter.root = stage;
};
}
protected function onRemoved(_arg1:Event):void{
realEmitter.stop();
}
public function setSize(_arg1:Number, _arg2:Number):void{
trace(((("setSize: " + _arg1) + " ") + _arg2));
this.width = _arg1;
this.height = _arg2;
}
public function set config(_arg1:String):void{
_config = _arg1;
setupEmitter();
}
public function setFactory(_arg1:IParticleFactory):void{
throw (new Error("MovieClip Emitter will worry about creating it's own factory based on the Flash authoring environment."));
}
override public function set y(_arg1:Number):void{
super.y = _arg1;
realEmitter.y = _arg1;
}
public function get movieClipName():String{
return (_clipName);
}
public function get config():String{
return (_config);
}
public function get rootEffect():Boolean{
return (_rootClip);
}
public function set movieClipName(_arg1:String):void{
_clipName = _arg1;
setupEmitter();
}
public function move(_arg1:Number, _arg2:Number):void{
trace(("moved " + _arg1));
}
override public function stop():void{
realEmitter.stop();
}
protected function onAdded(_arg1:Event):void{
if (PulseEngine.instance.root == null){
if (stage != null){
PulseEngine.instance.root = stage;
} else {
PulseEngine.instance.root = parent;
};
};
setupEmitter();
}
public function start():void{
realEmitter.start();
}
public function set rootEffect(_arg1:Boolean):void{
_rootClip = _arg1;
setupEmitter();
}
public function set pps(_arg1:Number):void{
realEmitter.pps = _arg1;
}
protected function onEnterFrame(_arg1:Event):void{
if ((((realEmitter == null)) || ((realEmitter.root == null)))){
return;
};
var _local2:Point = localToGlobal(origin);
_local2 = realEmitter.root.globalToLocal(_local2);
realEmitter.x = _local2.x;
realEmitter.y = _local2.y;
}
override public function set x(_arg1:Number):void{
super.x = _arg1;
realEmitter.x = _arg1;
}
}
}//package com.roguedevelopment.pulse.emitter
Section 121
//AngleRandomizerInitializer (com.roguedevelopment.pulse.initializers.AngleRandomizerInitializer)
package com.roguedevelopment.pulse.initializers {
public class AngleRandomizerInitializer extends ParameterRandomizerInitializer {
public function AngleRandomizerInitializer(_arg1:Number, _arg2:Number){
super("angle", ((_arg1 * Math.PI) / 180), ((_arg2 * Math.PI) / 180), round);
}
}
}//package com.roguedevelopment.pulse.initializers
Section 122
//IPulseInitializer (com.roguedevelopment.pulse.initializers.IPulseInitializer)
package com.roguedevelopment.pulse.initializers {
import com.roguedevelopment.pulse.particle.*;
public interface IPulseInitializer {
function init(_arg1:IParticle):void;
}
}//package com.roguedevelopment.pulse.initializers
Section 123
//ParameterInitializer (com.roguedevelopment.pulse.initializers.ParameterInitializer)
package com.roguedevelopment.pulse.initializers {
import com.roguedevelopment.pulse.particle.*;
public class ParameterInitializer implements IPulseInitializer {
protected var value:Object;
protected var propName:String;
public function ParameterInitializer(_arg1:String, _arg2:Object){
this.propName = _arg1;
this.value = _arg2;
}
public function init(_arg1:IParticle):void{
var _local2:Object = (_arg1 as Object);
if (_local2.hasOwnProperty(propName)){
_local2[propName] = value;
} else {
if (_local2.hasOwnProperty("params")){
_local2.params[propName] = value;
};
};
}
}
}//package com.roguedevelopment.pulse.initializers
Section 124
//ParameterRandomizerInitializer (com.roguedevelopment.pulse.initializers.ParameterRandomizerInitializer)
package com.roguedevelopment.pulse.initializers {
import com.roguedevelopment.pulse.particle.*;
public class ParameterRandomizerInitializer implements IPulseInitializer {
protected var propName:String;
protected var round:Boolean;
protected var maxValue:Number;
protected var minValue:Number;
public function ParameterRandomizerInitializer(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false){
this.minValue = _arg2;
this.maxValue = _arg3;
this.propName = _arg1;
this.round = _arg4;
}
public function init(_arg1:IParticle):void{
var _local2:Object = _arg1;
var _local3:Number = (minValue + (Math.random() * (maxValue - minValue)));
if (round){
_local3 = Math.round(_local3);
};
if (_local2.hasOwnProperty(propName)){
_local2[propName] = _local3;
} else {
if (_local2.hasOwnProperty("params")){
_local2.params[propName] = _local3;
};
};
}
}
}//package com.roguedevelopment.pulse.initializers
Section 125
//RandomFrameInit (com.roguedevelopment.pulse.initializers.RandomFrameInit)
package com.roguedevelopment.pulse.initializers {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
public class RandomFrameInit implements IPulseInitializer {
public function init(_arg1:IParticle):void{
var mc:MovieClip;
var particle = _arg1;
if ((particle is MovieClip)){
mc = (particle as MovieClip);
mc.gotoAndStop(Math.round((Math.random() * mc.totalFrames)));
} else {
if ((particle is Sprite)){
try {
mc = ((particle as Sprite).getChildAt(0) as MovieClip);
if (mc != null){
mc.gotoAndStop(Math.round((Math.random() * mc.totalFrames)));
};
} catch(e:Error) {
};
};
};
}
}
}//package com.roguedevelopment.pulse.initializers
Section 126
//ScaleRandomizerInitializer (com.roguedevelopment.pulse.initializers.ScaleRandomizerInitializer)
package com.roguedevelopment.pulse.initializers {
import com.roguedevelopment.pulse.particle.*;
public class ScaleRandomizerInitializer implements IPulseInitializer {
protected var maxValue:Number;
protected var minValue:Number;
public function ScaleRandomizerInitializer(_arg1:Number, _arg2:Number){
this.minValue = _arg1;
this.maxValue = _arg2;
}
public function init(_arg1:IParticle):void{
var _local2:Object = _arg1;
var _local3:Number = (minValue + (Math.random() * (maxValue - minValue)));
_local2["scaleX"] = _local3;
_local2["scaleY"] = _local3;
}
}
}//package com.roguedevelopment.pulse.initializers
Section 127
//DotParticle (com.roguedevelopment.pulse.particle.DotParticle)
package com.roguedevelopment.pulse.particle {
public class DotParticle extends GenericParticle {
protected var _size:Number;// = 1
protected var _color:uint;// = 0xFFFFFF
public function DotParticle(){
redraw();
}
public function set size(_arg1:Number):void{
_size = _arg1;
redraw();
}
public function set color(_arg1:uint):void{
_color = _arg1;
redraw();
}
protected function redraw():void{
graphics.clear();
graphics.beginFill(_color, 1);
graphics.drawCircle(0, 0, _size);
graphics.endFill();
}
}
}//package com.roguedevelopment.pulse.particle
Section 128
//GenericFactory (com.roguedevelopment.pulse.particle.GenericFactory)
package com.roguedevelopment.pulse.particle {
import flash.display.*;
import com.roguedevelopment.pulse.initializers.*;
public final class GenericFactory implements IParticleFactory {
protected var partClass:Class;
protected var _initializers:Array;
protected var recycled:Array;
public var isRunning:Boolean;// = true
protected var _rules:Array;
public function GenericFactory(_arg1:Class, _arg2:Array, _arg3:Array){
recycled = [];
super();
this.partClass = _arg1;
_rules = _arg2;
this.initializers = _arg3;
}
public function cleanup():void{
var _local1:IParticle;
isRunning = false;
for each (_local1 in recycled) {
_local1.remove();
};
recycled = [];
}
public function newParticle():IParticle{
var _local1:IParticle;
var _local2:IPulseInitializer;
var _local3:Object;
isRunning = true;
if (recycled.length > 0){
_local1 = (recycled.shift() as IParticle);
(_local1 as IRecyleableParticle).recycle();
} else {
_local3 = new partClass();
if ((_local3 is IParticle)){
_local1 = (_local3 as IParticle);
} else {
if ((_local3 is Sprite)){
_local1 = new GenericParticle();
(_local1 as GenericParticle).addChild((_local3 as Sprite));
};
};
if ((_local1 is IRecyleableParticle)){
(_local1 as IRecyleableParticle).factory = this;
};
};
_local1.rules = _rules.concat();
for each (_local2 in _initializers) {
trace(_local2);
_local2.init(_local1);
};
return (_local1);
}
public function set initializers(_arg1:Array):void{
_initializers = _arg1;
}
public function recycle(_arg1:IParticle):void{
if (isRunning){
_arg1.visible = false;
recycled.push(_arg1);
} else {
_arg1.remove();
};
}
public function set rules(_arg1:Array):void{
_rules = _arg1;
}
}
}//package com.roguedevelopment.pulse.particle
Section 129
//GenericParticle (com.roguedevelopment.pulse.particle.GenericParticle)
package com.roguedevelopment.pulse.particle {
import flash.display.*;
import flash.geom.*;
public class GenericParticle extends Sprite implements IRecyleableParticle {
protected var _birth:Number;
protected var _factory:IParticleFactory;
protected var _params:Object;
protected var _rules:Array;
public function GenericParticle(){
_params = {angle:0, speed:0};
super();
_birth = new Date().time;
}
public function remove():void{
if (parent != null){
parent.removeChild(this);
};
}
public function get params():Object{
return (_params);
}
public function get factory():IParticleFactory{
return (_factory);
}
public function recycle():void{
_birth = new Date().time;
scaleX = 1;
rotation = 0;
scaleY = 1;
alpha = 1;
visible = true;
transform.colorTransform = new ColorTransform();
}
public function set factory(_arg1:IParticleFactory):void{
_factory = _arg1;
}
public function get rules():Array{
return (_rules);
}
public function get birthTime():Number{
return (_birth);
}
public function set rules(_arg1:Array):void{
_rules = _arg1;
}
}
}//package com.roguedevelopment.pulse.particle
Section 130
//ImageParticle (com.roguedevelopment.pulse.particle.ImageParticle)
package com.roguedevelopment.pulse.particle {
import flash.display.*;
import flash.geom.*;
public final class ImageParticle extends GenericParticle implements IRecyleableParticle {
protected var imaged:Boolean;// = false
public function set image(_arg1:Class):void{
if (imaged){
return;
};
imaged = true;
var _local2:Bitmap = new (_arg1);
addChild(_local2);
}
override public function recycle():void{
_birth = new Date().time;
scaleX = 1;
rotation = 0;
scaleY = 1;
alpha = 1;
visible = true;
transform.colorTransform = new ColorTransform();
}
}
}//package com.roguedevelopment.pulse.particle
Section 131
//IParticle (com.roguedevelopment.pulse.particle.IParticle)
package com.roguedevelopment.pulse.particle {
public interface IParticle {
function get visible():Boolean;
function set alpha(_arg1:Number):void;
function set visible(_arg1:Boolean):void;
function get alpha():Number;
function get params():Object;
function set rotation(_arg1:Number):void;
function get birthTime():Number;
function get rotation():Number;
function set rules(_arg1:Array):void;
function get scaleY():Number;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function remove():void;
function get scaleX():Number;
function get rules():Array;
function get x():Number;
function get y():Number;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
}
}//package com.roguedevelopment.pulse.particle
Section 132
//IParticleFactory (com.roguedevelopment.pulse.particle.IParticleFactory)
package com.roguedevelopment.pulse.particle {
public interface IParticleFactory {
function set initializers(_arg1:Array):void;
function cleanup():void;
function newParticle():IParticle;
function recycle(_arg1:IParticle):void;
function set rules(_arg1:Array):void;
}
}//package com.roguedevelopment.pulse.particle
Section 133
//IRecyleableParticle (com.roguedevelopment.pulse.particle.IRecyleableParticle)
package com.roguedevelopment.pulse.particle {
public interface IRecyleableParticle extends IParticle {
function get factory():IParticleFactory;
function recycle():void;
function set factory(_arg1:IParticleFactory):void;
}
}//package com.roguedevelopment.pulse.particle
Section 134
//LineParticle (com.roguedevelopment.pulse.particle.LineParticle)
package com.roguedevelopment.pulse.particle {
public class LineParticle extends GenericParticle {
protected var _size:Number;// = 1
protected var _color:uint;// = 0xFFFFFF
public function LineParticle(){
redraw();
}
public function set size(_arg1:Number):void{
_size = _arg1;
redraw();
}
public function set color(_arg1:uint):void{
_color = _arg1;
redraw();
}
protected function redraw():void{
graphics.clear();
graphics.lineStyle(1, _color);
graphics.moveTo(0, 0);
graphics.lineTo(_size, 0);
}
}
}//package com.roguedevelopment.pulse.particle
Section 135
//AccelerationRule (com.roguedevelopment.pulse.rule.AccelerationRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public final class AccelerationRule implements IPulseRule {
protected var amount:Number;// = 1
public function AccelerationRule(_arg1:Number=1){
this.amount = _arg1;
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number;
if (_arg1.params.hasOwnProperty("speed")){
_local4 = _arg1.params["speed"];
_local4 = (_local4 + amount);
if ((((amount < 0)) && ((_local4 < 0)))){
_local4 = 0;
};
};
_arg1.params["speed"] = _local4;
}
public function configure(_arg1:Array):void{
amount = _arg1[0];
}
}
}//package com.roguedevelopment.pulse.rule
Section 136
//BoundingBoxRule (com.roguedevelopment.pulse.rule.BoundingBoxRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import flash.geom.*;
public final class BoundingBoxRule implements IPulseRule {
protected var box:Rectangle;
public function BoundingBoxRule(_arg1:Rectangle=null){
this.box = _arg1;
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local4:Number = _arg1.params.angle;
if ((((((((_arg1.x <= box.x)) && ((_local4 > (Math.PI / 2))))) && ((_local4 < ((3 * Math.PI) / 2))))) || ((((_arg1.x >= box.right)) && ((((_local4 > ((3 * Math.PI) / 2))) || ((_local4 < (Math.PI / 2))))))))){
_local5 = _arg1.params.speed;
_local6 = (Math.cos(_local4) * _local5);
_local7 = (Math.sin(_local4) * _local5);
_local6 = (_local6 * -1);
_local4 = Math.atan2(_local7, _local6);
if (_local4 < 0){
_local4 = (_local4 + (2 * Math.PI));
};
if (_local4 > (2 * Math.PI)){
_local4 = (_local4 - (2 * Math.PI));
};
_arg1.params.angle = _local4;
};
if ((((((((_arg1.y <= box.y)) && ((_local4 > Math.PI)))) && ((_local4 < (2 * Math.PI))))) || ((((((_arg1.y >= box.bottom)) && ((_local4 > 0)))) && ((_local4 < Math.PI)))))){
_local5 = _arg1.params.speed;
_local6 = (Math.cos(_local4) * _local5);
_local7 = (Math.sin(_local4) * _local5);
_local7 = (_local7 * -1);
_local4 = Math.atan2(_local7, _local6);
if (_local4 < 0){
_local4 = (_local4 + (2 * Math.PI));
};
if (_local4 > 360){
_local4 = (_local4 - (2 * Math.PI));
};
_arg1.params.angle = _local4;
};
}
public function configure(_arg1:Array):void{
if (_arg1.length != 4){
return;
};
box = new Rectangle(_arg1[0], _arg1[1], _arg1[2], _arg1[3]);
}
}
}//package com.roguedevelopment.pulse.rule
Section 137
//ColorTransformRule (com.roguedevelopment.pulse.rule.ColorTransformRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
import flash.geom.*;
public class ColorTransformRule implements IPulseRule {
public var rMult:Number;// = 1
public var rOffset:Number;// = 0
public var endTime:Number;
public var startTime:Number;
public var bMult:Number;// = 1
public var bOffset:Number;// = 0
public var gMult:Number;// = 1
public var gOffset:Number;// = 0
public function ColorTransformRule(){
var _local1:ColorTransform = new ColorTransform();
}
public function configure(_arg1:Array):void{
if (_arg1.length != 8){
return;
};
startTime = (_arg1.shift() as Number);
endTime = (_arg1.shift() as Number);
rMult = (_arg1.shift() as Number);
gMult = (_arg1.shift() as Number);
bMult = (_arg1.shift() as Number);
rOffset = (_arg1.shift() as Number);
gOffset = (_arg1.shift() as Number);
bOffset = (_arg1.shift() as Number);
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = (_arg2 - _arg1.birthTime);
if ((((_local4 < startTime)) || ((_local4 > endTime)))){
return;
};
var _local5:DisplayObject = (_arg1 as DisplayObject);
if (_local5 == null){
return;
};
var _local6:Number = ((_local4 - startTime) / (endTime - startTime));
_local5.transform.colorTransform = new ColorTransform((1 + ((rMult - 1) * _local6)), (1 + ((gMult - 1) * _local6)), (1 + ((bMult - 1) * _local6)), 1, (rOffset * _local6), (gOffset * _local6), (bOffset * _local6), 0);
}
}
}//package com.roguedevelopment.pulse.rule
Section 138
//DeathRule (com.roguedevelopment.pulse.rule.DeathRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import com.roguedevelopment.pulse.*;
public final class DeathRule implements IPulseRule {
protected var maxAge:Number;
public function DeathRule(_arg1:Number=3000){
this.maxAge = _arg1;
}
public function configure(_arg1:Array):void{
maxAge = (_arg1[0] as Number);
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
if (_arg2 > (maxAge + _arg1.birthTime)){
PulseEngine.instance.removeParticle(_arg1);
_arg1.rules.splice(_arg1.rules.indexOf(this), 1);
};
}
}
}//package com.roguedevelopment.pulse.rule
Section 139
//FadeRule (com.roguedevelopment.pulse.rule.FadeRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public final class FadeRule implements IPulseRule {
protected var maxAge:Number;
public function FadeRule(_arg1:Number=3000){
this.maxAge = _arg1;
}
public function configure(_arg1:Array):void{
maxAge = (_arg1[0] as Number);
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
if (_arg2 == _arg1.birthTime){
return;
};
var _local4:Number = (_arg2 - _arg1.birthTime);
if (_local4 > maxAge){
_arg1.rules.splice(_arg1.rules.indexOf(this), 1);
return;
};
_arg1.alpha = (1 - (_local4 / maxAge));
}
}
}//package com.roguedevelopment.pulse.rule
Section 140
//GravityRule (com.roguedevelopment.pulse.rule.GravityRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public final class GravityRule implements IPulseRule {
protected var gravityAmount:Number;
public function GravityRule(_arg1:Number=5){
this.gravityAmount = _arg1;
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = _arg1.params.speed;
var _local5:Number = _arg1.params.angle;
var _local6:Number = (Math.cos(_local5) * _local4);
var _local7:Number = ((Math.sin(_local5) * _local4) + gravityAmount);
_local5 = Math.atan2(_local7, _local6);
if (_local5 < 0){
_local5 = (_local5 + (2 * Math.PI));
};
if (_local5 > (2 * Math.PI)){
_local5 = (_local5 - (2 * Math.PI));
};
_arg1.params.angle = _local5;
_arg1.params.speed = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
}
public function configure(_arg1:Array):void{
gravityAmount = (_arg1[0] as Number);
}
}
}//package com.roguedevelopment.pulse.rule
Section 141
//IPulseRule (com.roguedevelopment.pulse.rule.IPulseRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public interface IPulseRule {
function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void;
function configure(_arg1:Array):void;
}
}//package com.roguedevelopment.pulse.rule
Section 142
//MouseSwarmRule (com.roguedevelopment.pulse.rule.MouseSwarmRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public final class MouseSwarmRule implements IPulseRule {
protected var mouse:Point;
public function MouseSwarmRule(_arg1:Stage=null){
mouse = new Point();
super();
if (_arg1 != null){
_arg1.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
};
}
public function configure(_arg1:Array):void{
(_arg1[0] as Stage).addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
protected function onMouseMove(_arg1:MouseEvent):void{
mouse.x = _arg1.stageX;
mouse.y = _arg1.stageY;
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = Math.atan2((mouse.y - _arg1.y), (mouse.x - _arg1.x));
if (_local4 < 0){
_local4 = (_local4 + (2 * Math.PI));
};
if (_arg1.params.angle < 0){
_arg1.params.angle = (_arg1.params.angle + (2 * Math.PI));
};
if (_arg1.params.angle > (2 * Math.PI)){
_arg1.params.angle = (_arg1.params.angle - (2 * Math.PI));
};
var _local5:Number = (_arg1.params.angle - _local4);
if ((((((_local5 > 0)) && ((_local5 <= Math.PI)))) || ((_local5 < -(Math.PI))))){
_arg1.params.angle = (_arg1.params.angle - Math.min(0.1, Math.abs(_local5)));
} else {
if ((((((_local5 >= -(Math.PI))) && ((_local5 < 0)))) || ((_local5 > Math.PI)))){
_arg1.params.angle = (_arg1.params.angle + Math.min(0.1, Math.abs(_local5)));
};
};
}
}
}//package com.roguedevelopment.pulse.rule
Section 143
//MovementRule (com.roguedevelopment.pulse.rule.MovementRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import com.roguedevelopment.pulse.*;
public final class MovementRule implements IPulseRule {
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = 1;
var _local5:Number = 0;
if (_arg1.params.hasOwnProperty("speed")){
_local4 = _arg1.params["speed"];
};
if (_arg1.params.hasOwnProperty("angle")){
_local5 = _arg1.params["angle"];
};
var _local6:Number = ((PulseEngine.PARTICLE_LOOP_TIME / 1000) * _local4);
var _local7:Number = (Math.cos(_local5) * _local6);
var _local8:Number = (Math.sin(_local5) * _local6);
_arg1.x = (_arg1.x + _local7);
_arg1.y = (_arg1.y + _local8);
}
public function configure(_arg1:Array):void{
}
}
}//package com.roguedevelopment.pulse.rule
Section 144
//MovementStopRule (com.roguedevelopment.pulse.rule.MovementStopRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import flash.geom.*;
public final class MovementStopRule implements IPulseRule {
protected var box:Rectangle;
public function MovementStopRule(_arg1:Rectangle=null){
this.box = _arg1;
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:IPulseRule;
var _local5:int;
if (box.contains(_arg1.x, _arg1.y)){
for each (_local4 in _arg1.rules) {
if ((_local4 is MovementRule)){
_local5 = _arg1.rules.lastIndexOf(_local4);
_arg1.rules.splice(_local5, 1);
};
};
_arg1.params.speed = 0;
};
}
public function configure(_arg1:Array):void{
if (_arg1.length != 4){
return;
};
box = new Rectangle(_arg1[0], _arg1[1], _arg1[2], _arg1[3]);
}
}
}//package com.roguedevelopment.pulse.rule
Section 145
//PointSwarmRule (com.roguedevelopment.pulse.rule.PointSwarmRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import flash.geom.*;
public final class PointSwarmRule implements IPulseRule {
protected var dest:Point;
public function PointSwarmRule(_arg1:Point=null){
dest = new Point();
super();
if (_arg1 != null){
dest = _arg1;
};
}
public function configure(_arg1:Array):void{
if ((_arg1[0] is Point)){
dest = (_arg1[0] as Point);
} else {
dest.x = (_arg1[0] as Number);
dest.y = (_arg1[1] as Number);
};
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = Math.atan2((dest.y - _arg1.y), (dest.x - _arg1.x));
if (_local4 < 0){
_local4 = (_local4 + (2 * Math.PI));
};
if (_arg1.params.angle < 0){
_arg1.params.angle = (_arg1.params.angle + (2 * Math.PI));
};
if (_arg1.params.angle > (2 * Math.PI)){
_arg1.params.angle = (_arg1.params.angle - (2 * Math.PI));
};
var _local5:Number = (_arg1.params.angle - _local4);
if ((((((_local5 > 0)) && ((_local5 <= Math.PI)))) || ((_local5 < -(Math.PI))))){
_arg1.params.angle = (_arg1.params.angle - Math.min(0.1, Math.abs(_local5)));
} else {
if ((((((_local5 >= -(Math.PI))) && ((_local5 < 0)))) || ((_local5 > Math.PI)))){
_arg1.params.angle = (_arg1.params.angle + Math.min(0.1, Math.abs(_local5)));
};
};
}
}
}//package com.roguedevelopment.pulse.rule
Section 146
//RotateRule (com.roguedevelopment.pulse.rule.RotateRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public final class RotateRule implements IPulseRule {
protected var min:Number;
protected var max:Number;
public function RotateRule(_arg1:Number=1, _arg2:Number=3){
this.min = _arg1;
this.max = _arg2;
}
public function configure(_arg1:Array):void{
min = (_arg1[0] as Number);
max = (_arg1[1] as Number);
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
if (!_arg1.params.hasOwnProperty("rotationSpeed")){
_arg1.params["rotationSpeed"] = (min + (Math.random() * (max - min)));
};
_arg1.rotation = (_arg1.rotation + _arg1.params["rotationSpeed"]);
}
}
}//package com.roguedevelopment.pulse.rule
Section 147
//RotateToAngleRule (com.roguedevelopment.pulse.rule.RotateToAngleRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public final class RotateToAngleRule implements IPulseRule {
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
_arg1.rotation = ((_arg1.params.angle * 180) / Math.PI);
}
public function configure(_arg1:Array):void{
}
}
}//package com.roguedevelopment.pulse.rule
Section 148
//ScaleRule (com.roguedevelopment.pulse.rule.ScaleRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import com.roguedevelopment.*;
public final class ScaleRule implements IPulseRule {
protected var startScale:Number;
protected var targetScale:Number;
protected var maxAge:Number;
public function ScaleRule(_arg1:Number=3000, _arg2:Number=1, _arg3:Number=5){
this.maxAge = _arg1;
this.targetScale = _arg3;
this.startScale = _arg2;
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = (_arg2 - _arg1.birthTime);
if (_local4 > maxAge){
_arg1.rules.splice(_arg1.rules.indexOf(this), 1);
return;
};
if (startScale > targetScale){
_arg1.scaleX = (startScale - PennerEasing.sineEaseInOut(_local4, targetScale, startScale, maxAge));
} else {
_arg1.scaleX = PennerEasing.sineEaseInOut(_local4, startScale, targetScale, maxAge);
};
_arg1.scaleY = _arg1.scaleX;
}
public function configure(_arg1:Array):void{
maxAge = (_arg1[0] as Number);
startScale = (_arg1[1] as Number);
targetScale = (_arg1[2] as Number);
}
}
}//package com.roguedevelopment.pulse.rule
Section 149
//TweenRule (com.roguedevelopment.pulse.rule.TweenRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
import com.roguedevelopment.*;
public final class TweenRule implements IPulseRule {
protected var start:Number;
protected var maxAge:Number;
protected var ease:Function;
protected var field:String;
protected var end:Number;
public function TweenRule(_arg1:String="", _arg2:Number=1, _arg3:Number=1, _arg4:Number=1, _arg5:Function=null){
this.field = _arg1;
this.start = _arg2;
this.end = _arg3;
this.maxAge = _arg4;
this.ease = _arg5;
if (this.ease == null){
this.ease = PennerEasing.linearEaseNone;
};
}
public function configure(_arg1:Array):void{
field = _arg1[0];
start = _arg1[1];
end = _arg1[2];
maxAge = _arg1[3];
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
var _local4:Number = (_arg2 - _arg1.birthTime);
if (_local4 > maxAge){
_arg1.rules.splice(_arg1.rules.indexOf(this), 1);
return;
};
var _local5:Object = _arg1;
if (end > start){
_local5[field] = ease(_local4, start, end, maxAge);
} else {
_local5[field] = (start - ease(_local4, end, start, maxAge));
};
}
}
}//package com.roguedevelopment.pulse.rule
Section 150
//XOscillatorRule (com.roguedevelopment.pulse.rule.XOscillatorRule)
package com.roguedevelopment.pulse.rule {
import com.roguedevelopment.pulse.particle.*;
public final class XOscillatorRule implements IPulseRule {
protected var amount:Number;// = 5
protected var dampen:Number;// = 100
public function XOscillatorRule(_arg1:Number=1, _arg2:Number=100){
this.amount = _arg1;
this.dampen = _arg2;
}
public function configure(_arg1:Array):void{
amount = (_arg1[0] as Number);
dampen = (_arg1[1] as Number);
}
public function applyRule(_arg1:IParticle, _arg2:Number, _arg3:Number):void{
_arg1.x = (_arg1.x + (Math.cos(((_arg2 - _arg1.birthTime) / dampen)) * amount));
}
}
}//package com.roguedevelopment.pulse.rule
Section 151
//SimpleParticles (com.roguedevelopment.pulse.simple.SimpleParticles)
package com.roguedevelopment.pulse.simple {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
import com.roguedevelopment.pulse.*;
import com.roguedevelopment.pulse.emitter.*;
import com.adobe.serialization.json.*;
import com.roguedevelopment.pulse.rule.*;
import com.roguedevelopment.pulse.initializers.*;
public class SimpleParticles {
protected static var rules:Object = {scale:ScaleRule, fade:FadeRule, gravity:GravityRule, movement:MovementRule, lifespan:DeathRule, mouseSwarm:MouseSwarmRule, rotateToAngle:RotateToAngleRule, xOscillate:XOscillatorRule, tween:TweenRule, pointSwarm:PointSwarmRule, rotate:RotateRule, accel:AccelerationRule, bound:BoundingBoxRule, stop:MovementStopRule, colorTransform:ColorTransformRule};
public static function createEmitter(_arg1:Object):IParticleEmitter{
var _local2:GenericEmitter;
var _local4:BitmapData;
var _local5:Bitmap;
var _local3 = 10;
if (_arg1.hasOwnProperty("pps")){
_local3 = _arg1.pps;
};
if (((_arg1.hasOwnProperty("bme")) && (_arg1.bme))){
_local4 = new BitmapData(PulseEngine.instance.root.stage.width, PulseEngine.instance.root.stage.height, true, 0);
_local5 = new Bitmap(_local4);
PulseEngine.instance.root.addChild(_local5);
_local2 = new BitmapEmitter(_local3, _local4);
} else {
_local2 = new GenericEmitter(_local3);
};
configureEmitterByObject(_local2, _arg1);
return (_local2);
}
protected static function doInitializer(_arg1:String, _arg2:Object, _arg3:Array):Boolean{
var _local4:Array = (_arg2 as Array);
switch (_arg1){
case "startScale":
_arg3.push(new ScaleRandomizerInitializer(_local4[0], _local4[1]));
return (true);
case "angle":
_arg3.push(new AngleRandomizerInitializer(_local4[0], _local4[1]));
return (true);
case "randomFrame":
_arg3.push(new RandomFrameInit());
return (true);
};
return (false);
}
public static function configureEmitter(_arg1:GenericEmitter, _arg2:String):IParticleEmitter{
var r:RegExp;
var d:JSONDecoder;
var o:Object;
var emitter = _arg1;
var params = _arg2;
try {
r = /([a-zA-Z0-9_]+):/g;
params = params.replace(r, "\"$1\":");
d = new JSONDecoder(params);
o = d.getValue();
} catch(e:Error) {
return (emitter);
};
return (configureEmitterByObject(emitter, o));
}
protected static function createLineFactory(_arg1:Object, _arg2:Array, _arg3:Array):IParticleFactory{
return (new GenericFactory(LineParticle, _arg2, _arg3));
}
protected static function createImageFactory(_arg1:Object, _arg2:Array, _arg3:Array):IParticleFactory{
return (new GenericFactory(ImageParticle, _arg2, _arg3));
}
protected static function createDotFactory(_arg1:Object, _arg2:Array, _arg3:Array):IParticleFactory{
return (new GenericFactory(DotParticle, _arg2, _arg3));
}
public static function configureEmitterByObject(_arg1:GenericEmitter, _arg2:Object):IParticleEmitter{
var _local7:String;
var _local8:Array;
var _local3:Boolean;
var _local4:IParticleFactory = _arg1.getFactory();
var _local5:Array = [];
var _local6:Array = [];
if (((_arg2.hasOwnProperty("minSpeed")) && (_arg2.hasOwnProperty("maxSpeed")))){
_local6.push(new ParameterRandomizerInitializer("speed", _arg2.minSpeed, _arg2.maxSpeed, true));
};
if (((_arg2.hasOwnProperty("minAngle")) && (_arg2.hasOwnProperty("maxAngle")))){
_local6.push(new AngleRandomizerInitializer(_arg2.minAngle, _arg2.maxAngle));
};
if (((_arg2.hasOwnProperty("minScale")) && (_arg2.hasOwnProperty("maxScale")))){
_local6.push(new ScaleRandomizerInitializer(_arg2.minScale, _arg2.maxScale));
};
for (_local7 in _arg2) {
switch (_local7){
case "start":
_local3 = _arg2.start;
break;
case "x":
_arg1.x = _arg2.x;
break;
case "y":
_arg1.y = _arg2.y;
break;
case "dot":
_local4 = createDotFactory(_arg2[_local7], _local5, _local6);
break;
case "line":
_local4 = createLineFactory(_arg2[_local7], _local5, _local6);
break;
case "image":
_local6.push(new ParameterInitializer("image", _arg2[_local7]));
_local4 = createImageFactory(_arg2[_local7], _local5, _local6);
break;
case "width":
_arg1.width = (_arg2[_local7] as Number);
break;
case "height":
_arg1.height = (_arg2[_local7] as Number);
break;
case "limit":
_arg1.particleLimit = (_arg2[_local7] as Number);
break;
default:
if (((!(doRule(_local7, _arg2[_local7], _local5))) && (!(doInitializer(_local7, _arg2[_local7], _local6))))){
if ((_arg2[_local7] is Array)){
_local8 = (_arg2[_local7] as Array);
_local6.push(new ParameterRandomizerInitializer(_local7, _local8[0], _local8[1], true));
};
if ((_arg2[_local7] is Number)){
_local6.push(new ParameterInitializer(_local7, (_arg2[_local7] as Number)));
};
};
break;
};
};
if (_local4 == null){
_local4 = createDotFactory(null, _local5, _local6);
} else {
_local4.rules = _local5;
_local4.initializers = _local6;
};
_arg1.setFactory(_local4);
if (_local3){
_arg1.start();
};
return (_arg1);
}
protected static function doRule(_arg1:String, _arg2:Object, _arg3:Array):Boolean{
if (!rules.hasOwnProperty(_arg1)){
return (false);
};
var _local4:Class = rules[_arg1];
var _local5:IPulseRule = new (_local4);
if ((_arg2 is Array)){
_local5.configure((_arg2 as Array));
} else {
_local5.configure([_arg2]);
};
_arg3.push(_local5);
return (true);
}
}
}//package com.roguedevelopment.pulse.simple
Section 152
//PulseEngine (com.roguedevelopment.pulse.PulseEngine)
package com.roguedevelopment.pulse {
import com.roguedevelopment.pulse.particle.*;
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import com.roguedevelopment.pulse.rule.*;
public final class PulseEngine {
public var root:DisplayObjectContainer;
protected var emitters:Array;
protected var timer:Timer;
protected var particles:Array;
public var updateAfterTimer:Boolean;// = false
protected var lastUpdate:Number;
public static const PARTICLE_LOOP_TIME:Number = 30;
protected static var _instance:PulseEngine;
public function PulseEngine(){
emitters = [];
particles = [];
super();
if (_instance != null){
throw (new Error("only one engine allowed"));
};
timer = new Timer(PARTICLE_LOOP_TIME);
timer.addEventListener(TimerEvent.TIMER, onTime);
timer.start();
lastUpdate = new Date().time;
}
public function addParticle(_arg1:IParticle):void{
_arg1.visible = false;
particles.push(_arg1);
}
public function addEmitter(_arg1:IParticleFactory):void{
emitters.push(_arg1);
}
public function removeParticle(_arg1:IParticle):void{
particles.splice(particles.indexOf(_arg1), 1);
if ((_arg1 is IRecyleableParticle)){
(_arg1 as IRecyleableParticle).factory.recycle(_arg1);
} else {
_arg1.remove();
};
}
protected function onTime(_arg1:TimerEvent):void{
var _local3:IParticle;
var _local4:IPulseRule;
var _local2:Date = new Date();
for each (_local3 in particles) {
_local3.visible = true;
for each (_local4 in _local3.rules) {
_local4.applyRule(_local3, _local2.time, lastUpdate);
};
};
lastUpdate = _local2.time;
if (updateAfterTimer){
_arg1.updateAfterEvent();
};
}
public function stopAndRemoveAllParticles():void{
var _local1:IParticle;
for each (_local1 in particles) {
_local1.remove();
};
particles = [];
}
public static function get instance():PulseEngine{
if (_instance == null){
_instance = new (PulseEngine);
};
return (_instance);
}
}
}//package com.roguedevelopment.pulse
Section 153
//PennerEasing (com.roguedevelopment.PennerEasing)
package com.roguedevelopment {
public class PennerEasing {
public static function quartEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((-(_arg3) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 1)) + _arg2));
}
public static function circEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((-(_arg3) / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (Math.sqrt((1 - (_arg1 * _arg1))) + 1)) + _arg2));
}
public static function expoEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1)==0) ? _arg2 : ((_arg3 * Math.pow(2, (10 * ((_arg1 / _arg4) - 1)))) + _arg2));
}
public static function elasticEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 == 2){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * (0.3 * 1.5));
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
if (_arg1 < 1){
--_arg1;
return (((-0.5 * ((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2));
};
--_arg1;
return ((((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) * 0.5) + _arg3) + _arg2));
}
public static function expoEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg1 == 0){
return (_arg2);
};
if (_arg1 == _arg4){
return ((_arg2 + _arg3));
};
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((_arg3 / 2) * Math.pow(2, (10 * (_arg1 - 1)))) + _arg2));
};
--_arg1;
return ((((_arg3 / 2) * (-(Math.pow(2, (-10 * _arg1))) + 2)) + _arg2));
}
public static function linearEaseNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function sineEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) / 2) * (Math.cos(((Math.PI * _arg1) / _arg4)) - 1)) + _arg2));
}
public static function quintEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 2)) + _arg2));
}
public static function quartEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function quadEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2));
};
--_arg1;
return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2));
}
public static function cubicEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * _arg1) + 1)) + _arg2));
}
public static function bounceEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
if (_arg1 < (1 / 2.75)){
return (((_arg3 * ((7.5625 * _arg1) * _arg1)) + _arg2));
};
if (_arg1 < (2 / 2.75)){
_arg1 = (_arg1 - (1.5 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.75)) + _arg2));
};
if (_arg1 < (2.5 / 2.75)){
_arg1 = (_arg1 - (2.25 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.9375)) + _arg2));
};
_arg1 = (_arg1 - (2.625 / 2.75));
return (((_arg3 * (((7.5625 * _arg1) * _arg1) + 0.984375)) + _arg2));
}
public static function backEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 1)) + _arg2));
}
public static function quadEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((_arg3 * _arg1) * _arg1) + _arg2));
}
public static function bounceEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 - bounceEaseOut((_arg4 - _arg1), 0, _arg3, _arg4)) + _arg2));
}
public static function quartEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return (((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((-(_arg3) / 2) * ((((_arg1 * _arg1) * _arg1) * _arg1) - 2)) + _arg2));
}
public static function cubicEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function quintEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((((((_arg3 * _arg1) * _arg1) * _arg1) * _arg1) * _arg1) + _arg2));
}
public static function sineEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((-(_arg3) * Math.cos(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg3) + _arg2));
}
public static function backEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = (_arg1 / _arg4);
return (((((_arg3 * _arg1) * _arg1) * (((_arg5 + 1) * _arg1) - _arg5)) + _arg2));
}
public static function elasticEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * 0.3);
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
--_arg1;
return ((-(((_arg5 * Math.pow(2, (10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6)))) + _arg2));
}
public static function circEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * Math.sqrt((1 - (_arg1 * _arg1)))) + _arg2));
}
public static function circEaseIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return (((-(_arg3) * (Math.sqrt((1 - (_arg1 * _arg1))) - 1)) + _arg2));
}
public static function elasticEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
var _local7:Number;
if (_arg1 == 0){
return (_arg2);
};
_arg1 = (_arg1 / _arg4);
if (_arg1 == 1){
return ((_arg2 + _arg3));
};
if (!_arg6){
_arg6 = (_arg4 * 0.3);
};
if (((!(_arg5)) || ((_arg5 < Math.abs(_arg3))))){
_arg5 = _arg3;
_local7 = (_arg6 / 4);
} else {
_local7 = ((_arg6 / (2 * Math.PI)) * Math.asin((_arg3 / _arg5)));
};
return (((((_arg5 * Math.pow(2, (-10 * _arg1))) * Math.sin(((((_arg1 * _arg4) - _local7) * (2 * Math.PI)) / _arg6))) + _arg3) + _arg2));
}
public static function expoEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg1)==_arg4) ? (_arg2 + _arg3) : ((_arg3 * (-(Math.pow(2, ((-10 * _arg1) / _arg4))) + 1)) + _arg2));
}
public static function cubicEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
return ((((((_arg3 / 2) * _arg1) * _arg1) * _arg1) + _arg2));
};
_arg1 = (_arg1 - 2);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * _arg1) + 2)) + _arg2));
}
public static function sineEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return (((_arg3 * Math.sin(((_arg1 / _arg4) * (Math.PI / 2)))) + _arg2));
}
public static function backEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number=1.70158):Number{
_arg1 = (_arg1 / (_arg4 / 2));
if (_arg1 < 1){
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * ((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) - _arg5))) + _arg2));
};
_arg1 = (_arg1 - 2);
_arg5 = (_arg5 * 1.525);
return ((((_arg3 / 2) * (((_arg1 * _arg1) * (((_arg5 + 1) * _arg1) + _arg5)) + 2)) + _arg2));
}
public static function quintEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = ((_arg1 / _arg4) - 1);
return (((_arg3 * (((((_arg1 * _arg1) * _arg1) * _arg1) * _arg1) + 1)) + _arg2));
}
public static function quadEaseOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
_arg1 = (_arg1 / _arg4);
return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
}
public static function bounceEaseInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
if (_arg1 < (_arg4 / 2)){
return (((bounceEaseIn((_arg1 * 2), 0, _arg3, _arg4) * 0.5) + _arg2));
};
return ((((bounceEaseOut(((_arg1 * 2) - _arg4), 0, _arg3, _arg4) * 0.5) + (_arg3 * 0.5)) + _arg2));
}
}
}//package com.roguedevelopment
Section 154
//None (fl.transitions.easing.None)
package fl.transitions.easing {
public class None {
public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
public static function easeNone(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
}
}
}//package fl.transitions.easing
Section 155
//Tween (fl.transitions.Tween)
package fl.transitions {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Tween extends EventDispatcher {
private var _position:Number;// = NAN
public var prevTime:Number;// = NAN
public var prevPos:Number;// = NAN
public var isPlaying:Boolean;// = false
private var _fps:Number;// = NAN
private var _time:Number;// = NAN
public var begin:Number;// = NAN
private var _finish:Number;// = NAN
public var change:Number;// = NAN
public var looping:Boolean;// = false
private var _intervalID:uint;// = 0
public var func:Function;
private var _timer:Timer;// = null
private var _startTime:Number;// = NAN
public var prop:String;// = ""
private var _duration:Number;// = NAN
public var obj:Object;// = null
public var useSeconds:Boolean;// = false
protected static var _mc:MovieClip = new MovieClip();
public function Tween(_arg1:Object, _arg2:String, _arg3:Function, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Boolean=false){
this.func = function (_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
return ((((_arg3 * _arg1) / _arg4) + _arg2));
};
super();
if (!arguments.length){
return;
};
this.obj = _arg1;
this.prop = _arg2;
this.begin = _arg4;
this.position = _arg4;
this.duration = _arg6;
this.useSeconds = _arg7;
if ((_arg3 is Function)){
this.func = _arg3;
};
this.finish = _arg5;
this._timer = new Timer(100);
this.start();
}
public function continueTo(_arg1:Number, _arg2:Number):void{
this.begin = this.position;
this.finish = _arg1;
if (!isNaN(_arg2)){
this.duration = _arg2;
};
this.start();
}
protected function startEnterFrame():void{
var _local1:Number;
if (isNaN(this._fps)){
_mc.addEventListener(Event.ENTER_FRAME, this.onEnterFrame, false, 0, true);
} else {
_local1 = (1000 / this._fps);
this._timer.delay = _local1;
this._timer.addEventListener(TimerEvent.TIMER, this.timerHandler, false, 0, true);
this._timer.start();
};
this.isPlaying = true;
}
public function stop():void{
this.stopEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_STOP, this._time, this._position));
}
private function fixTime():void{
if (this.useSeconds){
this._startTime = (getTimer() - (this._time * 1000));
};
}
public function set FPS(_arg1:Number):void{
var _local2:Boolean = this.isPlaying;
this.stopEnterFrame();
this._fps = _arg1;
if (_local2){
this.startEnterFrame();
};
}
public function get finish():Number{
return ((this.begin + this.change));
}
public function get duration():Number{
return (this._duration);
}
protected function stopEnterFrame():void{
if (isNaN(this._fps)){
_mc.removeEventListener(Event.ENTER_FRAME, this.onEnterFrame);
} else {
this._timer.stop();
};
this.isPlaying = false;
}
public function set time(_arg1:Number):void{
this.prevTime = this._time;
if (_arg1 > this.duration){
if (this.looping){
this.rewind((_arg1 - this._duration));
this.update();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_LOOP, this._time, this._position));
} else {
if (this.useSeconds){
this._time = this._duration;
this.update();
};
this.stop();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_FINISH, this._time, this._position));
};
} else {
if (_arg1 < 0){
this.rewind();
this.update();
} else {
this._time = _arg1;
this.update();
};
};
}
public function getPosition(_arg1:Number=NaN):Number{
if (isNaN(_arg1)){
_arg1 = this._time;
};
return (this.func(_arg1, this.begin, this.change, this._duration));
}
public function set finish(_arg1:Number):void{
this.change = (_arg1 - this.begin);
}
public function set duration(_arg1:Number):void{
this._duration = ((_arg1)<=0) ? Infinity : _arg1;
}
public function get position():Number{
return (this.getPosition(this._time));
}
public function setPosition(_arg1:Number):void{
this.prevPos = this._position;
if (this.prop.length){
this.obj[this.prop] = (this._position = _arg1);
};
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_CHANGE, this._time, this._position));
}
public function resume():void{
this.fixTime();
this.startEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_RESUME, this._time, this._position));
}
public function fforward():void{
this.time = this._duration;
this.fixTime();
}
protected function onEnterFrame(_arg1:Event):void{
this.nextFrame();
}
public function yoyo():void{
this.continueTo(this.begin, this.time);
}
public function nextFrame():void{
if (this.useSeconds){
this.time = ((getTimer() - this._startTime) / 1000);
} else {
this.time = (this._time + 1);
};
}
protected function timerHandler(_arg1:TimerEvent):void{
this.nextFrame();
_arg1.updateAfterEvent();
}
public function get FPS():Number{
return (this._fps);
}
public function rewind(_arg1:Number=0):void{
this._time = _arg1;
this.fixTime();
this.update();
}
public function set position(_arg1:Number):void{
this.setPosition(_arg1);
}
public function get time():Number{
return (this._time);
}
private function update():void{
this.setPosition(this.getPosition(this._time));
}
public function start():void{
this.rewind();
this.startEnterFrame();
this.dispatchEvent(new TweenEvent(TweenEvent.MOTION_START, this._time, this._position));
}
public function prevFrame():void{
if (!this.useSeconds){
this.time = (this._time - 1);
};
}
}
}//package fl.transitions
Section 156
//TweenEvent (fl.transitions.TweenEvent)
package fl.transitions {
import flash.events.*;
public class TweenEvent extends Event {
public var position:Number;// = NAN
public var time:Number;// = NAN
public static const MOTION_START:String = "motionStart";
public static const MOTION_STOP:String = "motionStop";
public static const MOTION_LOOP:String = "motionLoop";
public static const MOTION_CHANGE:String = "motionChange";
public static const MOTION_FINISH:String = "motionFinish";
public static const MOTION_RESUME:String = "motionResume";
public function TweenEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){
super(_arg1, _arg4, _arg5);
this.time = _arg2;
this.position = _arg3;
}
override public function clone():Event{
return (new TweenEvent(this.type, this.time, this.position, this.bubbles, this.cancelable));
}
}
}//package fl.transitions
Section 157
//BodyInfo (Info.BodyInfo)
package Info {
import flash.display.*;
public class BodyInfo {
public var geomParams:Array;
public var bodyParams:Array;
public var clip:MovieClip;
public var geomType:int;
public var bodyType:int;
public var outBoundary:Boolean;// = false
public function BodyInfo(_arg1:MovieClip, _arg2:int, _arg3:int, _arg4:Array, _arg5:Array){
bodyParams = new Array();
geomParams = new Array();
super();
clip = _arg1;
bodyType = _arg2;
geomType = _arg3;
bodyParams = _arg4.slice();
geomParams = _arg5.slice();
}
}
}//package Info
Section 158
//ControllerInfo (Info.ControllerInfo)
package Info {
public class ControllerInfo {
public var clip:Array;
public var controllerParams:Array;
public var controllerType:int;
public function ControllerInfo(_arg1:Array, _arg2:int, _arg3:Array){
clip = new Array();
controllerParams = new Array();
super();
clip = _arg1.slice();
controllerType = _arg2;
controllerParams = _arg3.slice();
}
}
}//package Info
Section 159
//JointInfo (Info.JointInfo)
package Info {
public class JointInfo {
public var clip:Array;
public var jointType:int;
public var jointParams:Array;
public function JointInfo(_arg1:Array, _arg2:int, _arg3:Array){
jointParams = new Array();
super();
if (_arg1){
clip = _arg1.slice();
};
jointType = _arg2;
jointParams = _arg3.slice();
}
}
}//package Info
Section 160
//Level_1 (Levels.Level_1)
package Levels {
import flash.display.*;
import Types.*;
public class Level_1 extends Level {
public var star2:StarCollect;
public var checkPoint0:MovieClip;
public var barier1:MovieClip;
public var firstGround:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public function Level_1():void{
id = 1;
super();
CreateBody(firstGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-199, -48], [-129, -20], [-364, -20], [-294, -48]], [[-129, -20], [380, -20], [-560, -20], [-364, -20]], [[-560, -20], [380, -20], [574, 0], [-560, 0]], [[380, -20], [380, -40], [400, -40], [574, 0]], [[574, -80], [574, 0], [420, -60], [420, -80]], [[420, -60], [574, 0], [400, -40], [400, -60]]]]);
CreateBody(barier1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-10, -50], [10, -50], [10, 0], [-10, 0]]]]);
if (!instructions[0]){
player.Tell("Use arrow keys to move and jump.");
instructions[0] = true;
};
}
}
}//package Levels
Section 161
//Level_10 (Levels.Level_10)
package Levels {
import Box2D.Dynamics.Joints.*;
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_10 extends Level {
public var upGround:MovieClip;
public var crane:MovieClip;
public var water:MovieClip;
public var balanceBody:MovieClip;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star0:StarCollect;
public var star8:StarCollect;
public var movePlat:MovieClip;
public var balancePlat:MovieClip;
public var star7:StarCollect;
public var star9:StarCollect;
public var toxic:MovieClip;
public var rightGround:MovieClip;
public var checkPoint0:MovieClip;
public var balance1:MovieClip;
public var flagShip:FlagShip;
public var disPlat:MovieClip;
public var balance2:MovieClip;
public var leftGround:MovieClip;
public var upGround2:MovieClip;
public var balancePlatPris:MovieClip;
public function Level_10():void{
id = 10;
super();
CreateBody(leftGround, BodyType.STATIC, GeomType.POLYGON, [[], [0, 0.4, 0.1]], [[[[-82.5, -101], [-82.5, -14], [-186.5, -81], [-186.5, -101]], [[-186.5, -81], [-82.5, -14], [-206.5, -61], [-206.5, -81]], [[-206.5, -61], [-82.5, -14], [-396.5, 101], [-396.5, -61]], [[-82.5, -14], [242.5, -14], [366.5, 101], [-396.5, 101]], [[242.5, -14], [242.5, -84], [271.5, -101], [366.5, -101], [366.5, 101]]]]);
CreateBody(upGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[63.5, -10], [304.5, -10], [304.5, 10], [63.5, 10]]]]);
CreateBody(upGround2, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[15, -10], [15, 10], [-116, 10], [-116, -10]]]]);
CreateBody(movePlat, BodyType.MOVE_Y, GeomType.POLYGON, [[], Materials.STEEL, 41.5, 214.5, -1, 2.5], [[[[-45, 5], [-45, -5], [45, -5], [45, 5]]]]);
CreateBody(balancePlat, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-65, -5], [65, -5], [65, 5], [-65, 5]]]]);
CreateBody(rightGround, BodyType.STATIC, GeomType.POLYGON, [[], [0, 0.4, 0.1]], [[[[211, -101], [344, -101], [344, 101], [211, 10]], [[-272, -101], [-272, 10], [-398, 101], [-398, -101]], [[-272, 10], [211, 10], [344, 101], [-398, 101]]]]);
CreateBody(flagShip, BodyType.STANDART, GeomType.POLYGON, [[], [1, 0.3, 0.2]], [[[[2, -31.5], [2, -11.5], [0, -25.5], [-1, -39.5], [1, -40.5]], [[0, -25.5], [2, -11.5], [0, -10.5]], [[0, -10.5], [2, -11.5], [1, -0.5], [-1, -0.5]], [[-52, 0.5], [-1, -0.5], [1, -0.5], [37, 17.5], [-42, 17.5]], [[53, -1.5], [37, 17.5], [1, -0.5]]]]);
CreateBody(balanceBody, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-2.5, -2.5], [2.5, -2.5], [2.5, 2.5], [-2.5, 2.5]]]]);
CreateBody(crane, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[8.95, 0.3], [8.95, 8.25], [-8.9, 3.65], [-8.9, 0.3]], [[-8.9, 3.65], [8.95, 8.25], [-18.8, 8.25], [-10.9, 3.65]], [[-10.9, 1.65], [-10.9, 3.65], [-18.8, 8.25], [-18.8, 1.65]], [[0, -8], [5.6, -5.7], [8, 0], [5.6, 5.65], [0, 8], [-5.7, 5.65], [-8, 0], [-5.7, -5.7]]]]);
CreateBody(disPlat, BodyType.LOST, GeomType.POLYGON, [[], Materials.GROUND, 500, 2500, 1500], [[[[-40, -6], [40, -6], [40, 6], [-40, 6]]]]);
CreateJoint([balancePlatPris], JointType.PRISMATIC, [false, false]);
CreateJoint([balance2, balance1], JointType.PULLEY, [1]);
CreateController([water], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([toxic], ControllerType.BUOYANCY, [Materials.TOXIC, 0, 0, 0, Damage.INJURE, 100]);
crane.stop();
m_joint.addChild(crane);
}
override public function Update(_arg1:Event):void{
var _local2:b2PulleyJoint;
super.Update(_arg1);
if (contactListener.Touch(player.body, GetBodyByClip(crane))){
_local2 = (GetJointByClip(balance2) as b2PulleyJoint);
if (_local2.m_maxLength2 > (40.05 / m_physScale)){
if (crane.currentFrame == 1){
sound.Play(SoundID.BUTTON);
};
_local2.m_maxLength2 = (_local2.m_maxLength2 - 0.05);
GetBodyByClip(balancePlat).WakeUp();
crane.gotoAndStop(2);
crane.disk.rotation = (crane.disk.rotation + 6);
};
} else {
crane.gotoAndStop(1);
};
}
}
}//package Levels
Section 162
//Level_11 (Levels.Level_11)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_11 extends Level {
public var checkPoint0:MovieClip;
public var ground1:MovieClip;
public var box:MovieClip;
public var ground2:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var platControl:MovieClip;
public var movePlatX:MovieClip;
public var movePlatY:MovieClip;
public function Level_11():void{
id = 11;
super();
CreateBody(ground1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[289, -29], [289, -80], [393, -80], [523, -29]], [[332, 64], [523, 64], [597, 232], [332, 113]], [[-404, 64], [-404, 113], [-597, 232], [-597, 64]], [[-404, 113], [332, 113], [597, 232], [-597, 232]], [[523, 64], [523, -29], [597, -272], [597, 232]], [[-597, -272], [597, -272], [428, -144], [-597, -144]], [[597, -272], [523, -29], [428, -115], [428, -144]], [[428, -115], [523, -29], [393, -80]]]]);
CreateBody(ground2, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-204, -22], [-204, -6], [-423.5, 26], [-423.5, -25], [-208, -25]], [[-423.5, 26], [-204, -6], [-145, -6], [423.5, 26]], [[423.5, -25], [423.5, 26], [-145, -6], [-145, -21], [-141, -25]]]]);
CreateBody(box, BodyType.STANDART, GeomType.POLYGON, [[], [0.7, 0.7, 0.2]], [[[[-13, -13], [13, -13], [13, 13], [-13, 13]]]]);
CreateBody(movePlatX, BodyType.MOVE_X, GeomType.POLYGON, [[], [4, 0.85, 0.2], -274, 368, -1, 2], [[[[45, -4], [45, 4], [-45, 4], [-45, -4]]]]);
CreateBody(movePlatY, BodyType.MOVE_Y, GeomType.POLYGON, [[], Materials.STEEL, 51, 0xFF, 1, 2], [[[[41.15, -0.5], [41.15, 7.5], [-34.85, -0.5]], [[-34.85, -20.5], [-34.85, -0.5], [-37.85, -0.5], [-37.85, -20.5]], [[-34.85, -0.5], [41.15, 7.5], [-37.85, -0.5]], [[-37.85, -0.5], [41.15, 7.5], [-38.85, 7.5], [-38.85, -0.5]]]]);
CreateBody(platControl, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-28.5, 7], [-28.5, -7], [28.5, -7], [28.5, 7]]]]);
platControl.gotoAndStop(1);
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
if (((contactListener.Touch(player.body, GetBodyByClip(platControl))) || (contactListener.Touch(GetBodyByClip(box), GetBodyByClip(platControl))))){
if (platControl.currentFrame == 1){
sound.Play(SoundID.BUTTON);
};
GetBodyByClip(movePlatX).WakeUp();
platControl.gotoAndStop(2);
} else {
GetBodyByClip(movePlatX).PutToSleep();
platControl.gotoAndStop(1);
};
}
}
}//package Levels
Section 163
//Level_12 (Levels.Level_12)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
import caurina.transitions.*;
public class Level_12 extends Level {
public var checkPoint0:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var plat6:MovieClip;
public var plat7:MovieClip;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat5:MovieClip;
public var flagRev:MovieClip;
public var plat8:MovieClip;
public var plat9:MovieClip;
public var flag:FlagDis;
public function Level_12():void{
id = 12;
super();
CreateBody(plat1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-75, -10], [75, -10], [75, 10], [-75, 10]]]]);
CreateBody(plat2, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-125, -10], [125, -10], [125, 10], [-125, 10]]]]);
CreateBody(plat3, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-200, -10], [200, -10], [200, 10], [-200, 10]]]]);
CreateBody(plat4, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-150, 10], [-150, -10], [150, -10], [150, 10]]]]);
CreateBody(plat5, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[206.95, 43.75], [197, 61.05], [-5.4, -55.75], [-6.45, -79.45]], [[-206.95, 63.15], [-6.45, -79.45], [-5.4, -55.75], [-195.4, 79.5]]]]);
CreateBody(plat6, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-125, -10], [125, -10], [125, 10], [-125, 10]]]]);
CreateBody(plat7, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-150, 10], [-150, -10], [150, -10], [150, 10]]]]);
CreateBody(plat8, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-125, -10], [125, -10], [125, 10], [-125, 10]]]]);
CreateBody(plat9, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[100, -10], [100, 10], [-100, 10], [-100, -10]]]]);
CreateBody(flag, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-0.3, -40], [1.7, -40], [1.7, 0], [-0.3, 0]]]]);
CreateJoint([flagRev], JointType.REVOLUTE, [false, true, 0, 0, -40, 120]);
plat9.alpha = 0;
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
if (contactListener.Touch(player.body, GetBodyByClip(plat9))){
if (plat9.alpha == 0){
Tweener.addTween(plat9, {alpha:1, time:1, transition:"easeOutQuart"});
};
};
}
}
}//package Levels
Section 164
//Level_13 (Levels.Level_13)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_13 extends Level {
public var upBounce:MovieClip;
public var checkPoint0:MovieClip;
public var checkPoint1:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var star9:StarCollect;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var mainGround:MovieClip;
public var star10:StarCollect;
private var dark:Dark;
public var toxic:MovieClip;
public var movePlat:MovieClip;
public function Level_13():void{
id = 13;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[801.5, -21], [801.5, -41], [883.5, -34], [873.5, -21]], [[883.5, -34], [801.5, -41], [1073.5, -215], [966.5, -34]], [[801.5, 19], [966.5, 19], [1073.5, 215], [801.5, 78]], [[345.5, 19], [345.5, 78], [11.5, 39], [11.5, 19]], [[11.5, 39], [345.5, 78], [-8.5, 59], [-8.5, 39]], [[-8.5, 59], [345.5, 78], [-323.5, 79], [-323.5, 59]], [[345.5, 78], [801.5, 78], [-303.5, 79], [-323.5, 79]], [[-303.5, 79], [801.5, 78], [-189.5, 99], [-303.5, 99]], [[-189.5, 99], [801.5, 78], [-189.5, 124]], [[-345.5, 99], [-345.5, 124], [-365.5, 99]], [[-365.5, 79], [-365.5, 99], [-385.5, 79]], [[-365.5, 99], [-345.5, 124], [-1073.5, 215], [-863.5, 59], [-385.5, 79]], [[-385.5, 59], [-385.5, 79], [-863.5, 59]], [[-863.5, 39], [-863.5, 59], [-883.5, 39]], [[-883.5, 19], [-883.5, 39], [-973.5, 19]], [[-883.5, 39], [-863.5, 59], [-1073.5, 215], [-973.5, 19]], [[-973.5, -21], [-973.5, 19], [-1073.5, 215], [-1073.5, -215]], [[-345.5, 124], [-189.5, 124], [-1073.5, 215]], [[-189.5, 124], [801.5, 78], [1073.5, 215], [-1073.5, 215]], [[966.5, 19], [966.5, -34], [1073.5, -215], [1073.5, 215]], [[801.5, -41], [781.5, -41], [781.5, -61], [1073.5, -215]], [[-973.5, -21], [-1073.5, -215], [-714.5, -41], [-714.5, -21]], [[-714.5, -41], [-1073.5, -215], [-694.5, -61], [-694.5, -41]], [[-1073.5, -215], [1073.5, -215], [110.5, -121], [-694.5, -61]], [[-458.5, -41], [-458.5, -61], [-438.5, -41]], [[-438.5, -21], [-438.5, -41], [110.5, -21]], [[-438.5, -41], [-458.5, -61], [110.5, -121], [110.5, -21]], [[-458.5, -61], [-694.5, -61], [110.5, -121]], [[110.5, -121], [1073.5, -215], [186.5, -121]], [[186.5, -21], [186.5, -121], [345.5, -41], [345.5, -21]], [[345.5, -41], [186.5, -121], [365.5, -61], [365.5, -41]], [[186.5, -121], [1073.5, -215], [781.5, -61], [365.5, -61]]]]);
var _local1 = 1;
while (_local1 <= 2) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-25, 5], [-25, -5], [25, -5], [25, 5]]]]);
_local1++;
};
CreateBody(movePlat, BodyType.MOVE_X, GeomType.POLYGON, [[], Materials.STEEL, 1290, 1672, -1, 1], [[[[35, -5], [35, 5], [-35, 5], [-35, -5]]]]);
CreateController([upBounce], ControllerType.BUOYANCY, [Materials.STAR]);
CreateController([toxic], ControllerType.BUOYANCY, [Materials.TOXIC, 0, 0, 0, Damage.INJURE, 100]);
dark = new Dark();
dark.x = player.x;
dark.y = player.y;
m_joint.addChildAt(dark, m_joint.numChildren);
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
dark.x = player.x;
dark.y = player.y;
}
}
}//package Levels
Section 165
//Level_14 (Levels.Level_14)
package Levels {
import Box2D.Dynamics.Joints.*;
import com.boristhebrave.Box2D.Controllers.*;
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_14 extends Level {
public var pipe1:MovieClip;
public var pipe2:MovieClip;
public var pipe3:MovieClip;
public var pipe4:MovieClip;
public var checkPoint0:MovieClip;
public var doorRev:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var waterFromPipe1:MovieClip;
public var waterFromPipe3:MovieClip;
public var kolesoRev:MovieClip;
public var door:MovieClip;
public var redButton2:MovieClip;
public var redButton3:MovieClip;
public var redButton1:MovieClip;
public var mainGround:MovieClip;
public var koleso:MovieClip;
public var water1:MovieClip;
public var water2:MovieClip;
public function Level_14():void{
var _local1:int;
id = 14;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-644.5, -115.5], [-449, -115], [-449, 35], [-644.5, 184.5]], [[462, -35], [718, -35], [462, -27]], [[454, -27], [462, -27], [454, 49]], [[462, -27], [718, -35], [533, 31], [454, 49]], [[0x0202, 49], [454, 49], [533, 31]], [[533, 31], [718, -35], [591, 40]], [[718, -35], [717.5, 184.5], [599, 79], [591, 40]], [[717.5, 184.5], [-644.5, 184.5], [424, 79], [599, 79]], [[424, 79], [-644.5, 184.5], [-133, 35], [424, -35]], [[85, -55], [85, -35], [65, -55]], [[65, -75], [65, -55], [45, -75]], [[65, -55], [85, -35], [25, -95], [45, -75]], [[45, -95], [45, -75], [25, -95]], [[25, -115], [25, -95], [-133, -115]], [[25, -95], [85, -35], [-133, 35], [-133, -115]], [[85, -35], [424, -35], [-133, 35]], [[-133, 35], [-644.5, 184.5], [-234, 35]], [[-234, -115], [-234, 35], [-340, 35], [-340, -115]], [[-234, 35], [-644.5, 184.5], [-340, 35]], [[-340, 35], [-644.5, 184.5], [-449, 35]]]]);
CreateBody(koleso, BodyType.STANDART, GeomType.POLYGON, [[Damage.NO, 0, 1], Materials.WOOD], [[[[2.5, -40], [2.5, -29.95], [-2.5, -29.9], [-2.5, -40]], [[2.5, -29.95], [19.4, -23], [-29.85, -2.5], [-23.05, -19.55], [-19.5, -23.1], [-2.5, -29.9]], [[-26.5, -30.1], [-19.5, -23.1], [-23.05, -19.55], [-30.05, -26.55]], [[-40, -2.5], [-29.85, -2.5], [-40, 2.5]], [[-29.85, -2.5], [19.4, -23], [-29.85, 2.5], [-40, 2.5]], [[-29.85, 2.5], [19.4, -23], [-22.9, 19.3]], [[-30.1, 26.5], [-22.9, 19.3], [-26.55, 30.05]], [[-22.9, 19.3], [19.4, -23], [-19.35, 22.8], [-26.55, 30.05]], [[-19.35, 22.8], [19.4, -23], [-2.5, 29.9]], [[-2.5, 29.9], [19.4, -23], [2.5, 29.9], [-2.5, 40]], [[2.5, 40], [-2.5, 40], [2.5, 29.9]], [[2.5, 29.9], [19.4, -23], [22.95, -19.45], [29.95, -2.5], [29.95, 2.5], [22.8, 19.2], [19.25, 22.75]], [[26.55, 30.05], [19.25, 22.75], [22.8, 19.2], [30.1, 26.5]], [[40, 2.5], [29.95, 2.5], [29.95, -2.5], [40, -2.5]], [[22.95, -19.45], [19.4, -23], [26.5, -30.1], [30.05, -26.55]]]]);
CreateBody(door, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-36, -3.5], [0, -3.5], [0, 3.5], [-36, 3.5]]]]);
_local1 = 1;
while (_local1 <= 3) {
CreateBody(("redButton" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[12.5, 0], [12.5, 5], [-12.5, 5], [-12.5, 0]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 4) {
CreateBody(("pipe" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-5.5, -2.5], [5.9, -2.5], [5.9, 2.5], [-5.5, 2.5]]]]);
_local1++;
};
CreateJoint([kolesoRev], JointType.REVOLUTE, [false, false]);
CreateJoint([doorRev], JointType.REVOLUTE, [false, true, 0, 0, 0, 80]);
CreateJoint([kolesoRev, doorRev], JointType.GEAR, [-8]);
CreateController([water1], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([water2], ControllerType.BUOYANCY, [Materials.WATER]);
SetBodiesFilter([mainGround, door, koleso], -1);
}
override public function Update(_arg1:Event):void{
var _local2:*;
var _local3:*;
super.Update(_arg1);
var _local4:Boolean;
if ((((water1.y > 117)) && (contactListener.Touch(player.body, GetBodyByClip(redButton1))))){
water1.y = (water1.y - 0.5);
water1.mask.height = (water1.mask.height + 0.5);
(GetControllerByClip(water1) as b2BuoyancyController).offset = (-(water1.y) / m_physScale);
waterFromPipe1.emiter.start();
sound.Play(SoundID.WATER_STREAM);
_local2 = true;
} else {
waterFromPipe1.emiter.stop();
};
if ((((((water2.y > 117)) && ((water1.y < water2.y)))) && (contactListener.Touch(player.body, GetBodyByClip(redButton2))))){
water1.y = (water1.y + 0.5);
water1.mask.height = (water1.mask.height - 0.5);
water2.y = (water2.y - 0.5);
water2.mask.height = (water2.mask.height + 0.5);
(GetControllerByClip(water1) as b2BuoyancyController).offset = (-(water1.y) / m_physScale);
(GetControllerByClip(water2) as b2BuoyancyController).offset = (-(water2.y) / m_physScale);
sound.Play(SoundID.WATER_STREAM);
_local3 = true;
};
if ((((water2.y < 175)) && (contactListener.Touch(player.body, GetBodyByClip(redButton3))))){
water2.y = (water2.y + 0.5);
water2.mask.height = (water2.mask.height - 0.5);
(GetControllerByClip(water2) as b2BuoyancyController).offset = (-(water2.y) / m_physScale);
waterFromPipe3.emiter.start();
GetBodyByClip(koleso).SetAngularVelocity(2);
GetBodyByClip(koleso).WakeUp();
sound.Play(SoundID.WATER_STREAM);
_local4 = true;
} else {
waterFromPipe3.emiter.stop();
};
if (((((!(_local2)) && (!(_local3)))) && (!(_local4)))){
sound.Stop(SoundID.WATER_STREAM);
};
}
}
}//package Levels
Section 166
//Level_15 (Levels.Level_15)
package Levels {
import Box2D.Dynamics.Joints.*;
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_15 extends Level {
public var upBounce:MovieClip;
public var block1:MovieClip;
public var block2:MovieClip;
public var block3:MovieClip;
public var ballCheck:MovieClip;
public var checkPoint0:MovieClip;
public var block1Pris:MovieClip;
public var block2Pris:MovieClip;
public var block3Pris:MovieClip;
public var box:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var triangleCheck:MovieClip;
public var star2:StarCollect;
public var triangle:MovieClip;
public var mainGround:MovieClip;
public var movePlat:MovieClip;
public var boxCheck:MovieClip;
public var ball:MovieClip;
public function Level_15():void{
id = 15;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[567, 0], [566.55, 97.5], [270, 15.5], [270, 0]], [[270, 15.5], [566.55, 97.5], [218, 15.5]], [[218, 0], [218, 15.5], [200, 15.5], [200, 0]], [[218, 15.5], [566.55, 97.5], [200, 15.5]], [[200, 15.5], [566.55, 97.5], [148, 15.5]], [[148, 0], [148, 15.5], [130.5, 15.5], [130.5, 0]], [[148, 15.5], [566.55, 97.5], [130.5, 15.5]], [[130.5, 15.5], [566.55, 97.5], [78.5, 15.5]], [[78.5, 0], [78.5, 15.5], [-183, 0]], [[78.5, 15.5], [566.55, 97.5], [95.5, 97.5], [-183, 0]], [[-567, 144], [-183, 144], [-113.5, 194.5], [-567, 298.5]], [[567, 298.5], [-567, 298.5], [403.5, 262.5], [566.5, 262.5]], [[403.5, 262.5], [-567, 298.5], [410.5, 210.5]], [[410.5, 210.5], [-567, 298.5], [-113.5, 194.5], [0xFF, 195], [470.5, 200.5]], [[532.5, 223.5], [470.5, 200.5], [566.5, 134], [566.5, 217.5]], [[566.5, 134], [470.5, 200.5], [0xFF, 195], [0xFF, 134]], [[-183, 144], [-183, 0], [-101, 145], [-113.5, 194.5]], [[-101, 145], [-183, 0], [-31.5, 144.5]], [[-25, 170], [-31.5, 144.5], [96, 170]], [[-31.5, 144.5], [-183, 0], [95.5, 97.5], [96, 170]]]]);
CreateBody(movePlat, BodyType.MOVE_Y, GeomType.POLYGON, [[], Materials.STEEL, 132, 453, 1, 2], [[[[37.15, -20.5], [40.15, -20.5], [40.15, -0.5], [37.15, -0.5]], [[-38.85, -0.5], [37.15, -0.5], [41.15, 6.5], [-38.85, 6.5]], [[41.15, -0.5], [41.15, 6.5], [40.15, -0.5]], [[41.15, 6.5], [37.15, -0.5], [40.15, -0.5]]]]);
CreateBody(block1, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-128, -5], [-55, -5], [-55, 5], [-128, 5]], [[128, 5], [-25, 5], [-25, -5], [128, -5]]]]);
CreateBody(block2, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-128, 5], [-128, -5], [25, -5], [25, 5]], [[55, -5], [128, -5], [128, 5], [55, 5]]]]);
CreateBody(block3, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-128, -5], [-55, -5], [-55, 5], [-128, 5]], [[128, 5], [-25, 5], [-25, -5], [128, -5]]]]);
CreateBody(ballCheck, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[25, 0], [25, 15], [-25, 15], [-25, 0]]]]);
CreateBody(boxCheck, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[25, 0], [25, 15], [-25, 15], [-25, 0]]]]);
CreateBody(triangleCheck, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[25, 0], [25, 15], [-25, 15], [-25, 0]]]]);
CreateBody(ball, BodyType.STANDART, GeomType.CIRCLE, [[], [1, 0.5, Materials.materialParams[Materials.WOOD][2]]], [[25]]);
CreateBody(box, BodyType.STANDART, GeomType.POLYGON, [[], [1, 0.5, Materials.materialParams[Materials.WOOD][2]]], [[[[-11.5, 11.5], [-11.5, -11.5], [11.5, -11.5], [11.5, 11.5]]]]);
CreateBody(triangle, BodyType.STANDART, GeomType.POLYGON, [[], [1.1, 0.5, Materials.materialParams[Materials.WOOD][2]]], [[[[-13.15, 9.45], [0.5, -14.3], [14.15, 9.45]]]]);
CreateJoint([block1Pris], JointType.PRISMATIC, [true, true, -0.75, 20, 0, 40]);
CreateJoint([block2Pris], JointType.PRISMATIC, [true, true, 0.75, 20, -40, 0]);
CreateJoint([block3Pris], JointType.PRISMATIC, [true, true, -0.75, 200, 0, 40]);
CreateController([upBounce], ControllerType.BUOYANCY, [Materials.STAR]);
ballCheck.gotoAndStop(1);
boxCheck.gotoAndStop(1);
triangleCheck.gotoAndStop(1);
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
var _local2:b2PrismaticJoint = (GetJointByClip(block1Pris) as b2PrismaticJoint);
var _local3:b2PrismaticJoint = (GetJointByClip(block2Pris) as b2PrismaticJoint);
var _local4:b2PrismaticJoint = (GetJointByClip(block3Pris) as b2PrismaticJoint);
if (((contactListener.Touch(GetBodyByClip(ball), GetBodyByClip(ballCheck))) || (contactListener.Touch(player.body, GetBodyByClip(ballCheck))))){
_local2.SetMotorSpeed(0.75);
if (ballCheck.currentFrame == 1){
sound.Play(SoundID.BUTTON);
};
ballCheck.gotoAndStop(2);
GetBodyByClip(ball).m_linearVelocity.x = (GetBodyByClip(ball).m_linearVelocity.x * 0.95);
} else {
_local2.SetMotorSpeed(-0.75);
ballCheck.gotoAndStop(1);
};
if (contactListener.Touch(GetBodyByClip(box), GetBodyByClip(boxCheck))){
_local3.SetMotorSpeed(-0.75);
if (boxCheck.currentFrame == 1){
sound.Play(SoundID.BUTTON);
};
boxCheck.gotoAndStop(2);
GetBodyByClip(box).m_linearVelocity.x = (GetBodyByClip(box).m_linearVelocity.x * 0.95);
} else {
_local3.SetMotorSpeed(0.75);
boxCheck.gotoAndStop(1);
};
if (contactListener.Touch(GetBodyByClip(triangle), GetBodyByClip(triangleCheck))){
_local4.SetMotorSpeed(0.75);
if (triangleCheck.currentFrame == 1){
sound.Play(SoundID.BUTTON);
};
triangleCheck.gotoAndStop(2);
GetBodyByClip(triangle).m_linearVelocity.x = (GetBodyByClip(triangle).m_linearVelocity.x * 0.95);
} else {
_local4.SetMotorSpeed(-0.75);
triangleCheck.gotoAndStop(1);
};
GetBodyByClip(block1).WakeUp();
GetBodyByClip(block2).WakeUp();
GetBodyByClip(block3).WakeUp();
}
}
}//package Levels
Section 167
//Level_16 (Levels.Level_16)
package Levels {
import flash.display.*;
import Types.*;
public class Level_16 extends Level {
public var mainPlat:MovieClip;
public var box1:MovieClip;
public var box2:MovieClip;
public var box3:MovieClip;
public var upPlat3:MovieClip;
public var checkPoint0:MovieClip;
public var upPlat1:MovieClip;
public var checkPoint1:MovieClip;
public var toxic1:MovieClip;
public var star0:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star1:StarCollect;
public var upPlat2:MovieClip;
public var upPlat20:MovieClip;
public var disPlat1:MovieClip;
public var disPlat2:MovieClip;
public var disPlat3:MovieClip;
public function Level_16():void{
var _local1:int;
id = 16;
super();
CreateBody(mainPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-235, -54.5], [-221, -3.5], [-310, -54.5]], [[-221, -3.5], [-207, 15.5], [-310, -54.5]], [[-207, 15.5], [-164, 53.5], [-407, -45.5], [-433, -74.5], [-310, -54.5]], [[-319, -66.5], [-310, -54.5], [-433, -74.5]], [[-433, -50.5], [-433, -74.5], [-407, -45.5]], [[-407, -45.5], [-164, 53.5], [-439, -27.5], [-433, -45.5]], [[-475, -38.5], [-439, -27.5], [-522, -11.5]], [[-439, -27.5], [-164, 53.5], [-517, 18.5], [-522, -11.5]], [[-517, 18.5], [-164, 53.5], [-569, 39.5], [-574, 27.5]], [[-569, 39.5], [-164, 53.5], [-574, 54.5]], [[-164, 53.5], [492, 53.5], [731, 74.5], [-731, 74.5], [-574, 54.5]], [[-731, 54.5], [-574, 54.5], [-731, 74.5]], [[492, 53.5], [537, 15.5], [731, 74.5]], [[537, 15.5], [551, -3.5], [731, 74.5]], [[551, -3.5], [565, -54.5], [731, -54.5], [731, 74.5]]]]);
_local1 = 1;
while (_local1 <= 3) {
CreateBody(("disPlat" + _local1), BodyType.LOST, GeomType.POLYGON, [[], Materials.GROUND, (1500 * (_local1 - 1)), 3000, 2000], [[[[-25, 5], [-25, -5], [24.95, -5], [24.95, 5]]]]);
_local1++;
};
CreateBody(upPlat1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-140, 10], [-140, -10], [140, -10], [140, 10]]]]);
CreateBody(upPlat2, BodyType.STATIC, GeomType.POLYGON, [[], [Materials.materialParams[Materials.GROUND][0], 0.25, Materials.materialParams[Materials.GROUND][2]]], [[[[-60, 10], [-60, -10], [60, -10], [60, 10]]]]);
CreateBody(upPlat20, BodyType.STATIC, GeomType.POLYGON, [[], [Materials.materialParams[Materials.GROUND][0], 0.25, Materials.materialParams[Materials.GROUND][2]]], [[[[-60, 10], [-60, -10], [60, -10], [60, 10]]]]);
CreateBody(upPlat3, BodyType.STATIC, GeomType.POLYGON, [[], [Materials.materialParams[Materials.GROUND][0], 0.25, Materials.materialParams[Materials.GROUND][2]]], [[[[-100, 10], [-100, -10], [100, -10], [100, 10]]]]);
_local1 = 1;
while (_local1 <= 3) {
CreateBody(("box" + _local1), BodyType.STANDART, GeomType.POLYGON, [[], [1.2, 0.25, Materials.materialParams[Materials.WOOD][2]]], [[[[35, -10.05], [35, 9.95], [-35, 9.95], [-35, -10.05]]]]);
_local1++;
};
CreateController([toxic1], ControllerType.BUOYANCY, [Materials.TOXIC, 0, 0, 0, Damage.INJURE, 100]);
}
}
}//package Levels
Section 168
//Level_17 (Levels.Level_17)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
import caurina.transitions.*;
public class Level_17 extends Level {
public var checkPoint0:MovieClip;
public var wall:MovieClip;
public var star0:StarCollect;
public var plat1:MovieClip;
public var flag:MovieClip;
public var invPlat1:MovieClip;
public var invPlat2:MovieClip;
public var invPlat4:MovieClip;
public var invPlat5:MovieClip;
public var invPlat6:MovieClip;
public var invPlat7:MovieClip;
public var invPlat3:MovieClip;
public function Level_17():void{
var _local1:int;
id = 17;
super();
CreateBody(plat1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-100, -10], [100, -10], [100, 10], [-100, 10]]]]);
CreateBody(wall, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-10, 75], [-10, -75], [10, -75], [10, 75]]]]);
_local1 = 1;
while (_local1 <= 7) {
CreateBody(("invPlat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-39, 2], [-39, -10], [61, -10], [61, 2]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 6) {
getChildByName(("invPlat" + _local1)).alpha = 0;
_local1++;
};
}
override public function Update(_arg1:Event):void{
var _local4:MovieClip;
super.Update(_arg1);
var _local2 = 1;
while (_local2 <= 6) {
_local4 = (getChildByName(("invPlat" + _local2)) as MovieClip);
if (contactListener.Touch(player.body, GetBodyByClip(_local4))){
if (_local4.alpha == 0){
Tweener.addTween(_local4, {alpha:1, time:1, transition:"easeOutQuart"});
sound.Play(SoundID.APPEAR);
};
};
_local2++;
};
var _local3:Boolean;
if (player.x < -6){
if (checkPoint0.x > -6){
Tweener.addTween(checkPoint0, {x:-68, time:2, transition:"easeOutElastic"});
_local3 = true;
};
if (flag.x < -6){
Tweener.addTween(flag, {x:50, time:2, transition:"easeOutElastic"});
_local3 = true;
};
} else {
if (checkPoint0.x < -6){
Tweener.addTween(checkPoint0, {x:50, time:2, transition:"easeOutElastic"});
_local3 = true;
};
if (flag.x > -6){
Tweener.addTween(flag, {x:-68, time:2, transition:"easeOutElastic"});
_local3 = true;
};
};
if (_local3){
sound.Play(SoundID.CHANGE);
};
}
}
}//package Levels
Section 169
//Level_18 (Levels.Level_18)
package Levels {
import flash.display.*;
import Types.*;
public class Level_18 extends Level {
public var star10:StarCollect;
public var plat33:MovieClip;
public var plat50:MovieClip;
public var plat51:MovieClip;
public var plat52:MovieClip;
public var plat53:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var star9:StarCollect;
public var plat10:MovieClip;
public var plat11:MovieClip;
public var plat13:MovieClip;
public var plat14:MovieClip;
public var plat15:MovieClip;
public var plat16:MovieClip;
public var plat17:MovieClip;
public var plat18:MovieClip;
public var plat19:MovieClip;
public var plat12:MovieClip;
public var plat20:MovieClip;
public var plat21:MovieClip;
public var plat22:MovieClip;
public var plat23:MovieClip;
public var plat24:MovieClip;
public var plat25:MovieClip;
public var plat26:MovieClip;
public var plat27:MovieClip;
public var plat28:MovieClip;
public var plat29:MovieClip;
public var checkPoint0:MovieClip;
public var plat30:MovieClip;
public var plat31:MovieClip;
public var plat35:MovieClip;
public var plat36:MovieClip;
public var plat37:MovieClip;
public var plat38:MovieClip;
public var plat39:MovieClip;
public var plat34:MovieClip;
public var plat32:MovieClip;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat5:MovieClip;
public var plat6:MovieClip;
public var plat7:MovieClip;
public var plat9:MovieClip;
public var plat40:MovieClip;
public var plat41:MovieClip;
public var plat42:MovieClip;
public var plat43:MovieClip;
public var plat44:MovieClip;
public var plat45:MovieClip;
public var plat46:MovieClip;
public var plat47:MovieClip;
public var plat48:MovieClip;
public var plat49:MovieClip;
public var plat8:MovieClip;
public var star11:StarCollect;
public function Level_18():void{
var _local1:int;
id = 18;
super();
_local1 = 1;
while (_local1 <= 2) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-10, 10], [-10, -10], [10, -10], [10, 10]]]]);
_local1++;
};
_local1 = 3;
while (_local1 <= 53) {
CreateBody(("plat" + _local1), BodyType.DISAP, GeomType.POLYGON, [[], Materials.STONE], [[[[-10, 10], [-10, -10], [10, -10], [10, 10]]]]);
_local1++;
};
}
}
}//package Levels
Section 170
//Level_19 (Levels.Level_19)
package Levels {
import flash.display.*;
import Types.*;
public class Level_19 extends Level {
public var balk9:MovieClip;
public var mainPlat:MovieClip;
public var balk10:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var balk11:MovieClip;
public var star8:StarCollect;
public var star9:StarCollect;
public var star7:StarCollect;
public var steps:MovieClip;
public var checkPoint0:MovieClip;
public var star10:StarCollect;
public var balk1:MovieClip;
public var balk2:MovieClip;
public var balk3:MovieClip;
public var balk5:MovieClip;
public var balk6:MovieClip;
public var balk7:MovieClip;
public var balk8:MovieClip;
public var balk4:MovieClip;
public function Level_19():void{
var _local1:int;
id = 19;
super();
CreateBody(mainPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-500, -10], [500, -10], [500, 10], [-500, 10]]]]);
CreateBody(steps, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[54, -40], [54, -20], [-34, -20], [-34, -40]], [[54, -20], [74, -20], [-54, -20], [-34, -20]], [[-54, -20], [74, -20], [-54, 0]], [[-74, 0], [-54, 0], [-74, 20]], [[-54, 0], [74, -20], [-74, 20]], [[-94, 20], [-74, 20], [-94, 40]], [[-74, 20], [74, -20], [74, 0], [-94, 40]], [[114, 40], [-94, 40], [94, 20], [114, 20]], [[94, 20], [-94, 40], [74, 0], [94, 0]]]]);
_local1 = 1;
while (_local1 <= 6) {
CreateBody(("balk" + _local1), BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-50, -5], [50, -5], [50, 5], [-50, 5]]]]);
_local1++;
};
_local1 = 7;
while (_local1 <= 9) {
CreateBody(("balk" + _local1), BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-60, 5], [-60, -5], [60, -5], [60, 5]]]]);
_local1++;
};
_local1 = 10;
while (_local1 <= 11) {
CreateBody(("balk" + _local1), BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-75, 5], [-75, -5], [75, -5], [75, 5]]]]);
_local1++;
};
_local1 = 0;
while (_local1 <= 10) {
(getChildByName(("star" + _local1)) as MovieClip).stop();
CreateBody(("star" + _local1), BodyType.STANDART, GeomType.POLYGON, [[], Materials.STEEL], [[[[0, -7], [1.85, -1.85], [-1.9, -1.85]], [[-1.9, -1.85], [1.85, -1.85], [-3, 1.7], [-7.4, -1.7]], [[-3, 1.7], [1.85, -1.85], [0, 3.85], [-4.6, 7]], [[0, 3.85], [1.85, -1.85], [3, 1.7], [4.6, 7]], [[7.4, -1.7], [3, 1.7], [1.85, -1.85]]]]);
_local1++;
};
}
}
}//package Levels
Section 171
//Level_2 (Levels.Level_2)
package Levels {
import flash.display.*;
import Types.*;
public class Level_2 extends Level {
public var checkPoint0:MovieClip;
public var checkPoint1:MovieClip;
public var upBounce1:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var movePlat:MovieClip;
public var finishPlat:MovieClip;
public var firstPlat:MovieClip;
public function Level_2():void{
id = 2;
super();
CreateBody(firstPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[180.5, -71], [180.5, -51], [-0.5, 51], [-0.5, -71]], [[180.5, -51], [200.5, -51], [200.5, -31], [-0.5, 51]], [[-453.5, 51], [-0.5, 51], [453.5, 71], [-453.5, 71]], [[453.5, 71], [-0.5, 51], [240.5, 9], [453.5, 9]], [[240.5, 9], [-0.5, 51], [220.5, -11], [240.5, -11]], [[220.5, -11], [-0.5, 51], [200.5, -31], [220.5, -31]]]]);
CreateBody(movePlat, BodyType.MOVE_X, GeomType.POLYGON, [[], Materials.STEEL, 456, 759, -1, 3], [[[[-50, 5], [-50, -5], [50, -5], [50, 5]]]]);
CreateBody(finishPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-100, 10], [-100, -10], [100, -10], [100, 10]]]]);
CreateController([upBounce1], ControllerType.BUOYANCY, [Materials.STAR]);
if (!instructions[4]){
player.Tell("Use down key to stop.");
instructions[4] = true;
};
}
}
}//package Levels
Section 172
//Level_20 (Levels.Level_20)
package Levels {
import com.boristhebrave.Box2D.Controllers.*;
import flash.display.*;
import flash.events.*;
import Types.*;
import caurina.transitions.*;
public class Level_20 extends Level {
public var star11:StarCollect;
public var upBounce:MovieClip;
public var plat90:MovieClip;
public var star21:StarCollect;
public var star22:StarCollect;
var crownOnBall:Boolean;// = false
public var movePlat1:MovieClip;
public var movePlat2:MovieClip;
public var stepPlat:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var star9:StarCollect;
public var star20:StarCollect;
public var plat801:MovieClip;
public var plat803:MovieClip;
public var plat804:MovieClip;
public var plat805:MovieClip;
public var mainGround:MovieClip;
public var star4:StarCollect;
public var plat802:MovieClip;
public var toxic:MovieClip;
public var plat130:MovieClip;
public var checkPoint0:MovieClip;
public var flagShip:FlagShip;
public var crown:PlayerCrown;
public var disPlat:MovieClip;
public var plat180:MovieClip;
public var star10:StarCollect;
public var star12:StarCollect;
public var star13:StarCollect;
public var star15:StarCollect;
public var star16:StarCollect;
public var star17:StarCollect;
public var star18:StarCollect;
public var star19:StarCollect;
public var star14:StarCollect;
public function Level_20():void{
id = 20;
super();
levelWinTerm = false;
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[450.05, -592], [451, -592], [451, 600], [220, 384], [219.5, -333.5]], [[219.5, -333.5], [-220, -333], [-454, -592], [450.05, -592]], [[-220, -333], [-220, 384], [-454, 600], [-454, -592]], [[-220, 384], [220, 384], [451, 600], [-454, 600]]]]);
var _local1 = 1;
while (_local1 <= 5) {
CreateBody(("plat80" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-40, 10], [-40, -10], [40, -10], [40, 10]]]]);
_local1++;
};
CreateBody(disPlat, BodyType.LOST, GeomType.POLYGON, [[], [0, 0.7, 0.2], 0, 4000, 2000], [[[[-30, 6], [-30, -6], [30, -6], [30, 6]]]]);
CreateBody(movePlat1, BodyType.MOVE_X, GeomType.POLYGON, [[], Materials.STEEL, -12, 167, 1, 2.5], [[[[-35, 5], [-35, -5], [35, -5], [35, 5]]]]);
CreateBody(movePlat2, BodyType.MOVE_XY, GeomType.POLYGON, [[], Materials.STEEL, 179, 686, -24, 542, 1, 2.5], [[[[-35, 5], [-35, -5], [35, -5], [35, 5]]]]);
CreateBody(plat180, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-90, 10], [-90, -10], [90, -10], [90, 10]]]]);
CreateBody(plat90, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-45, -10], [45, -10], [45, 10], [-45, 10]]]]);
CreateBody(plat130, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[65, -10], [65, 10], [-65, 10], [-65, -10]]]]);
CreateBody(flagShip, BodyType.STANDART, GeomType.POLYGON, [[], [1, 0.3, 0.2]], [[[[2, -31.5], [2, -11.5], [0, -25.5], [-1, -39.5], [1, -40.5]], [[0, -25.5], [2, -11.5], [0, -10.5]], [[0, -10.5], [2, -11.5], [1, -0.5], [-1, -0.5]], [[-52, 0.5], [-1, -0.5], [1, -0.5], [37, 17.5], [-42, 17.5]], [[53, -1.5], [37, 17.5], [1, -0.5]]]]);
CreateBody(stepPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-13.05, -20], [6.95, -20], [-13.05, 0]], [[-33.05, 0], [-13.05, 0], [-33.05, 20]], [[-13.05, 0], [6.95, -20], [85, 40], [-33.05, 20]], [[-85, 20], [-33.05, 20], [85, 40], [-85, 40]], [[6.95, -20], [6.95, -40], [84.95, 20], [85, 40]], [[85, 20], [85, 40], [84.95, 20]], [[84.95, -40], [84.95, 20], [6.95, -40]]]]);
CreateController([upBounce], ControllerType.BUOYANCY, [Materials.STAR]);
CreateController([toxic], ControllerType.BUOYANCY, [Materials.TOXIC, 0, 0, 0, Damage.INJURE, 100]);
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
if (toxic.y > 415){
toxic.y = (toxic.y - 0.4);
(GetControllerByClip(toxic) as b2BuoyancyController).offset = (-(toxic.y) / m_physScale);
GetBodyByClip(flagShip).WakeUp();
};
if (((!(crownOnBall)) && (player.HitTestObjectControlPoints(crown, true)))){
crownOnBall = true;
Tweener.addTween(crown, {scaleX:1, scaleY:1, time:0.5, transition:"linear"});
levelWinTerm = true;
sound.Play(SoundID.CROWN);
};
if (crownOnBall){
crown.x = player.x;
crown.y = player.y;
crown.rotation = player.rotation;
};
if (((!(dialogues[0])) && ((player.y < 445)))){
player.Tell("Hey! This is my CROWN!!!");
dialogues[0] = true;
};
}
}
}//package Levels
Section 173
//Level_21 (Levels.Level_21)
package Levels {
import flash.display.*;
import Types.*;
public class Level_21 extends Level {
public var star10:StarCollect;
public var plat10:MovieClip;
public var platLeft1:MovieClip;
public var platLeft2:MovieClip;
public var platLeft3:MovieClip;
public var star0:StarCollect;
public var platLeft5:MovieClip;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var platRight1:MovieClip;
public var platLeft4:MovieClip;
public var star1:StarCollect;
public var star9:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var platLeft6:MovieClip;
public var bigPlat2:MovieClip;
public var bigPlat1:MovieClip;
public var bigPlat3:MovieClip;
public var checkPoint0:MovieClip;
public var mainGround:MovieClip;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat6:MovieClip;
public var plat8:MovieClip;
public var plat5:MovieClip;
public var plat7:MovieClip;
public var plat9:MovieClip;
public var star11:StarCollect;
public var star12:StarCollect;
public var star13:StarCollect;
public var star14:StarCollect;
public var star15:StarCollect;
public var star16:StarCollect;
public var star17:StarCollect;
public function Level_21():void{
var _local1:int;
id = 21;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-350.05, 10], [-350.05, -10], [449.9, -10], [449.9, 10]]]]);
_local1 = 1;
while (_local1 <= 10) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[25, -4], [25, 4], [-25, 4], [-25, -4]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 3) {
CreateBody(("bigPlat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-70, 4], [-70, -4], [70, -4], [70, 4]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 6) {
CreateBody(("platLeft" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-70, -4], [0, -4], [0, 4], [-70, 4]]]]);
_local1++;
};
CreateBody(platRight1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[0, -4], [70, -4], [70, 4], [0, 4]]]]);
}
}
}//package Levels
Section 174
//Level_22 (Levels.Level_22)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
import caurina.transitions.*;
public class Level_22 extends Level {
public var plat47:MovieClip;
public var plat48:MovieClip;
public var star13:StarCollect;
public var star10:StarCollect;
public var plat50:MovieClip;
public var plat51:MovieClip;
public var plat52:MovieClip;
public var plat53:MovieClip;
public var plat54:MovieClip;
public var plat55:MovieClip;
public var plat56:MovieClip;
public var plat57:MovieClip;
public var plat58:MovieClip;
public var plat59:MovieClip;
public var star20:StarCollect;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var star9:StarCollect;
public var plat60:MovieClip;
public var plat61:MovieClip;
public var plat62:MovieClip;
public var plat63:MovieClip;
public var plat65:MovieClip;
public var plat67:MovieClip;
public var plat69:MovieClip;
public var plat64:MovieClip;
public var plat66:MovieClip;
public var plat68:MovieClip;
public var plat49:MovieClip;
public var plat71:MovieClip;
public var plat73:MovieClip;
public var plat75:MovieClip;
public var plat70:MovieClip;
public var plat78:MovieClip;
public var plat79:MovieClip;
public var plat74:MovieClip;
public var plat76:MovieClip;
public var plat72:MovieClip;
public var plat100:MovieClip;
public var plat101:MovieClip;
public var plat102:MovieClip;
public var plat103:MovieClip;
public var plat104:MovieClip;
public var plat80:MovieClip;
public var plat81:MovieClip;
public var plat82:MovieClip;
public var plat83:MovieClip;
public var plat84:MovieClip;
public var plat85:MovieClip;
public var plat86:MovieClip;
public var plat87:MovieClip;
public var plat106:MovieClip;
public var plat89:MovieClip;
public var plat108:MovieClip;
public var plat109:MovieClip;
public var plat105:MovieClip;
public var plat107:MovieClip;
public var plat77:MovieClip;
public var plat88:MovieClip;
public var plat110:MovieClip;
public var plat111:MovieClip;
public var plat112:MovieClip;
public var plat113:MovieClip;
public var plat114:MovieClip;
public var plat90:MovieClip;
public var plat91:MovieClip;
public var plat92:MovieClip;
public var plat93:MovieClip;
public var plat94:MovieClip;
public var plat95:MovieClip;
public var plat96:MovieClip;
public var plat97:MovieClip;
public var plat98:MovieClip;
public var plat99:MovieClip;
public var plat119:MovieClip;
public var plat115:MovieClip;
public var plat117:MovieClip;
public var star11:StarCollect;
public var plat116:MovieClip;
public var plat120:MovieClip;
public var plat121:MovieClip;
public var plat122:MovieClip;
public var plat118:MovieClip;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat5:MovieClip;
public var plat6:MovieClip;
public var plat7:MovieClip;
public var plat8:MovieClip;
public var plat9:MovieClip;
public var plat10:MovieClip;
public var plat11:MovieClip;
public var plat13:MovieClip;
public var plat14:MovieClip;
public var plat15:MovieClip;
public var plat16:MovieClip;
public var plat17:MovieClip;
public var plat18:MovieClip;
public var plat19:MovieClip;
public var plat12:MovieClip;
public var plat20:MovieClip;
public var plat21:MovieClip;
public var plat22:MovieClip;
public var plat23:MovieClip;
public var plat24:MovieClip;
public var plat25:MovieClip;
public var plat26:MovieClip;
public var plat27:MovieClip;
public var plat28:MovieClip;
public var plat29:MovieClip;
public var checkPoint0:MovieClip;
public var plat31:MovieClip;
public var plat35:MovieClip;
public var plat36:MovieClip;
public var plat37:MovieClip;
public var plat38:MovieClip;
public var plat39:MovieClip;
public var plat34:MovieClip;
public var plat30:MovieClip;
public var plat32:MovieClip;
public var plat33:MovieClip;
public var plat40:MovieClip;
public var plat41:MovieClip;
public var plat42:MovieClip;
public var plat44:MovieClip;
public var plat46:MovieClip;
public var star12:StarCollect;
public var star14:StarCollect;
public var star15:StarCollect;
public var star16:StarCollect;
public var star17:StarCollect;
public var star18:StarCollect;
public var star19:StarCollect;
public var plat43:MovieClip;
public var plat45:MovieClip;
public function Level_22():void{
var _local1:int;
id = 22;
super();
_local1 = 1;
while (_local1 <= 122) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[10, -10], [10, 10], [-10, 10], [-10, -10]]]]);
_local1++;
};
_local1 = 4;
while (_local1 <= 122) {
getChildByName(("plat" + _local1)).alpha = 0;
_local1++;
};
}
override public function Update(_arg1:Event):void{
var _local3:MovieClip;
super.Update(_arg1);
var _local2 = 4;
while (_local2 <= 122) {
_local3 = (getChildByName(("plat" + _local2)) as MovieClip);
if (contactListener.Touch(player.body, GetBodyByClip(_local3))){
if (_local3.alpha == 0){
Tweener.addTween(_local3, {alpha:1, time:1, transition:"easeOutQuart"});
sound.Play(SoundID.APPEAR);
};
};
_local2++;
};
}
}
}//package Levels
Section 175
//Level_23 (Levels.Level_23)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_23 extends Level {
public var golfBall:MovieClip;
public var checkPoint0:MovieClip;
public var startGround:MovieClip;
public var wall:MovieClip;
public var stand:MovieClip;
public var water:MovieClip;
public var disPlat:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var stone2:MovieClip;
public var stone3:MovieClip;
public var stone1:MovieClip;
public var finishGround:MovieClip;
public var waterGround:MovieClip;
public function Level_23():void{
id = 23;
super();
levelWinTerm = false;
CreateBody(startGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-355, -79], [355, -79], [355, 79], [-355, 79]]]]);
CreateBody(finishGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-283, -79], [-266, -51], [-475, -79]], [[-266, -51], [-247, -32], [-475, -79]], [[-247, -32], [-220, -14], [-475, -79]], [[-220, -14], [-203, -9], [-480, -54], [-475, -79]], [[-480, -54], [-203, -9], [-633, 79], [-510, -54]], [[-515, -79], [-510, -54], [-633, 79], [-633, -79]], [[-203, -9], [-165, -5], [-633, 79]], [[-165, -5], [36.8, -5], [-633, 79]], [[36.8, -5], [74.8, -9], [633, 79], [-633, 79]], [[633, 79], [74.8, -9], [91.8, -14], [633, -79]], [[155, -79], [633, -79], [137.8, -51]], [[137.8, -51], [633, -79], [118.8, -32]], [[118.8, -32], [633, -79], [91.8, -14]]]]);
CreateBody(stone1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-10.65, -11], [-1.2, -11], [10.2, -7], [18.85, 0], [-18.8, 0]]]]);
CreateBody(stone2, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[24.3, -16], [38.3, -12], [54.75, 0], [4.3, -7]], [[-21.7, -11], [4.3, -7], [-54.7, 0]], [[-54.7, 0], [4.3, -7], [54.75, 0]]]]);
CreateBody(stone3, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[25.5, -4.05], [32.1, 0], [-32.1, 0], [-4.1, -13]]]]);
CreateBody(disPlat, BodyType.LOST, GeomType.POLYGON, [[], Materials.GROUND, 0, 4000, 2000], [[[[-50, 6], [-50, -6], [50, -6], [50, 6]]]]);
CreateBody(golfBall, BodyType.STANDART, GeomType.CIRCLE, [[], [0.8, 0.2, 0.2]], [[16]]);
CreateBody(stand, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[5, -18], [2, -16], [-2, -16], [-5, -18]], [[-2, -16], [2, -16], [1, 0], [-1, 0]]]]);
CreateBody(waterGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[61.5, -14.9], [32.5, -10], [-34.5, -10], [-61.55, -14.9], [-81.5, -25], [-86, -31], [86, -31], [82.5, -25]]]]);
CreateBody(wall, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[12.5, -50], [12.5, 0], [-7.5, 0], [-7.5, -50]]]]);
CreateController([water], ControllerType.BUOYANCY, [Materials.WATER]);
player.Tell("Let's play King golf now!");
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
if ((((((((golfBall.x > -160)) && ((golfBall.x < -130)))) && ((golfBall.y > 145)))) && ((golfBall.y < 220)))){
if (!levelWinTerm){
sound.Play(SoundID.STAR_COLLECT);
};
levelWinTerm = true;
} else {
levelWinTerm = false;
};
}
}
}//package Levels
Section 176
//Level_24 (Levels.Level_24)
package Levels {
import Box2D.Dynamics.Joints.*;
import flash.display.*;
import flash.events.*;
import Types.*;
import flash.filters.*;
import caurina.transitions.*;
public class Level_24 extends Level {
private var check:Array;
public var plat10:MovieClip;
public var plat11:MovieClip;
public var plat13:MovieClip;
public var plat14:MovieClip;
public var plat15:MovieClip;
public var plat16:MovieClip;
public var plat17:MovieClip;
public var plat18:MovieClip;
public var plat19:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var plat12:MovieClip;
public var plat20:MovieClip;
public var mainGround:MovieClip;
public var door:MovieClip;
public var checkPlat1:MovieClip;
public var checkPlat2:MovieClip;
public var checkPlat3:MovieClip;
public var checkPoint0:MovieClip;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat5:MovieClip;
public var plat6:MovieClip;
public var plat7:MovieClip;
public var plat8:MovieClip;
public var plat9:MovieClip;
public var doorPris:MovieClip;
public function Level_24():void{
var _local1:int;
check = [false, false, false];
id = 24;
super();
levelWinTerm = false;
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[713, -235], [713, 0], [583.9, -215], [583.95, -235]], [[583.9, -215], [713, 0], [563.9, -195], [563.95, -215]], [[563.9, -195], [713, 0], [543.9, -175], [543.95, -195]], [[543.9, -175], [713, 0], [523.9, -155], [523.95, -175]], [[523.9, -155], [713, 0], [503.9, -135], [503.95, -155]], [[503.9, -135], [713, 0], [-244, -91], [54, -135]], [[53.95, -155], [54, -135], [34, -155]], [[33.95, -175], [34, -155], [14, -175]], [[34, -155], [54, -135], [-26, -215], [-6, -195], [14, -175]], [[13.95, -195], [14, -175], [-6, -195]], [[-6.05, -215], [-6, -195], [-26, -215]], [[-26.05, -235], [-26, -215], [-236, -235]], [[-26, -215], [54, -135], [-244, -227], [-244.5, -235.5], [-236, -235]], [[-244, -227], [54, -135], [-244, -91]], [[-244, -91], [713, 0], [-713, 0], [-536, -91]], [[-458, -121], [-462.5, -141.5], [-274, -235], [-274, -121]], [[-462.5, -141.5], [-527.5, -141.5], [-400.45, -219.2], [-274, -235]], [[-400.35, -235], [-274, -235], [-400.45, -219.2]], [[-400.45, -219.2], [-527.5, -141.5], [-452.45, -219.2]], [[-452.45, -219.2], [-527.5, -141.5], [-470.45, -219.2], [-452.45, -234.7]], [[-470.45, -234.7], [-452.45, -234.7], [-470.45, -219.2]], [[-470.45, -219.2], [-527.5, -141.5], [-522.45, -219.2]], [[-527.5, -141.5], [-536, -91], [-539.95, -219.2], [-539.95, -234.7], [-522.45, -234.7], [-522.45, -219.2]], [[-539.95, -219.2], [-536, -91], [-591.95, -219.2]], [[-591.95, -234.7], [-591.95, -219.2], [-713, -234.7]], [[-591.95, -219.2], [-536, -91], [-713, 0], [-713, -234.7]]]]);
_local1 = 1;
while (_local1 <= 3) {
CreateBody(("checkPlat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[25, 0], [25, 15], [-25, 15], [-25, 0]]]]);
_local1++;
};
CreateBody(door, BodyType.STANDART, GeomType.POLYGON, [[], Materials.STEEL], [[[[-36, -3.5], [0, -3.5], [0, 3.5], [-36, 3.5]]]]);
_local1 = 1;
while (_local1 <= 20) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-10, 10], [-10, -10], [10, -10], [10, 10]]]]);
_local1++;
};
CreateJoint([doorPris], JointType.PRISMATIC, [true, true, -0.75, 20, 0, 30]);
_local1 = 1;
while (_local1 <= 20) {
getChildByName(("plat" + _local1)).alpha = 0;
_local1++;
};
_local1 = 1;
while (_local1 <= 3) {
(getChildByName(("checkPlat" + _local1)) as MovieClip).symbolShow.gotoAndStop((int((5 * Math.random())) + 1));
_local1++;
};
}
override public function Update(_arg1:Event):void{
var _local3:int;
var _local4:MovieClip;
var _local5:MovieClip;
super.Update(_arg1);
trace(check.toString());
var _local2:b2PrismaticJoint = (GetJointByClip(doorPris) as b2PrismaticJoint);
if ((((((checkPlat1.symbolShow.currentFrame == 1)) && ((checkPlat2.symbolShow.currentFrame == 4)))) && ((checkPlat3.symbolShow.currentFrame == 2)))){
if (!levelWinTerm){
sound.Play(SoundID.STAR_COLLECT);
};
levelWinTerm = true;
_local2.SetMotorSpeed(0.75);
checkPlat1.symbolShow.filters = (checkPlat2.symbolShow.filters = (checkPlat3.symbolShow.filters = [new GlowFilter(0xFF0000, 1, 2, 2, 1.5, 1, false, false)]));
};
GetBodyByClip(door).WakeUp();
if (!levelWinTerm){
_local3 = 1;
while (_local3 <= 3) {
_local4 = (getChildByName(("checkPlat" + _local3)) as MovieClip);
if (((contactListener.Touch(player.body, GetBodyByClip(_local4))) && (!(check[(_local3 - 1)])))){
if (_local4.symbolShow.currentFrame <= 4){
_local4.symbolShow.gotoAndStop((_local4.symbolShow.currentFrame + 1));
} else {
_local4.symbolShow.gotoAndStop(1);
};
check[(_local3 - 1)] = true;
};
if (!contactListener.Touch(player.body, GetBodyByClip(_local4))){
check[(_local3 - 1)] = false;
};
_local3++;
};
};
_local3 = 1;
while (_local3 <= 20) {
_local5 = (getChildByName(("plat" + _local3)) as MovieClip);
if (contactListener.Touch(player.body, GetBodyByClip(_local5))){
if (_local5.alpha == 0){
Tweener.addTween(_local5, {alpha:1, time:1, transition:"easeOutQuart"});
sound.Play(SoundID.APPEAR);
};
};
_local3++;
};
}
}
}//package Levels
Section 177
//Level_25 (Levels.Level_25)
package Levels {
import flash.display.*;
import flash.events.*;
import Types.*;
import caurina.transitions.*;
public class Level_25 extends Level {
public var plat10:MovieClip;
public var plat11:MovieClip;
public var plat13:MovieClip;
public var plat14:MovieClip;
public var plat15:MovieClip;
public var plat16:MovieClip;
public var plat17:MovieClip;
public var plat18:MovieClip;
public var plat19:MovieClip;
public var star1:StarCollect;
public var mainGround:MovieClip;
public var star3:StarCollect;
public var star0:StarCollect;
public var star2:StarCollect;
public var wall2:MovieClip;
public var plat20:MovieClip;
public var wall1:MovieClip;
public var plat12:MovieClip;
private var checkA0:Number;// = -132
public var plat21:MovieClip;
public var checkPoint0:MovieClip;
private var flagX0:Number;// = 266
private var checkX0:Number;// = -266
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat5:MovieClip;
public var plat6:MovieClip;
public var plat7:MovieClip;
public var plat8:MovieClip;
public var plat9:MovieClip;
public var flag:Flag;
private var r:Number;// = 400
private var flagA0:Number;// = -48
public function Level_25():void{
var _local1:int;
id = 25;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[174.7, -99.5], [194.65, -99.5], [364, 0], [174.9, -79.05]], [[-175.3, -99.5], [-175.1, -79], [-195.25, -99.5]], [[-195.3, -119.5], [-195.25, -99.5], [-215.25, -119.5]], [[-195.25, -99.5], [-175.1, -79], [-366, 0], [-366, -140], [-215.25, -119.5]], [[-215, -140], [-215.25, -119.5], [-366, -140]], [[-175.1, -79], [174.9, -79.05], [364, 0], [-366, 0]], [[364, 0], [194.65, -99.5], [214.65, -119.5], [364, -140]], [[214.9, -140], [364, -140], [214.65, -119.5]], [[194.7, -119.5], [214.65, -119.5], [194.65, -99.5]]]]);
_local1 = 1;
while (_local1 <= 2) {
CreateBody(("wall" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[10, -30], [10, 30], [-10, 30], [-10, -30]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 21) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-10, 10], [-10, -10], [10, -10], [10, 10]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 21) {
getChildByName(("plat" + _local1)).alpha = 0;
_local1++;
};
}
override public function Update(_arg1:Event):void{
var _local3:Number;
var _local4:Number;
var _local5:MovieClip;
super.Update(_arg1);
if ((((player.x > checkX0)) && ((player.x < flagX0)))){
_local3 = (checkA0 + (((player.x - checkX0) / (flagX0 - checkX0)) * (flagA0 - checkA0)));
checkPoint0.x = (r * Math.cos(((_local3 * Math.PI) / 180)));
checkPoint0.y = ((r * Math.sin(((_local3 * Math.PI) / 180))) - 20);
_local4 = (flagA0 - (_local3 - checkA0));
flag.x = (r * Math.cos(((_local4 * Math.PI) / 180)));
flag.y = (r * Math.sin(((_local4 * Math.PI) / 180)));
};
var _local2 = 1;
while (_local2 <= 21) {
_local5 = (getChildByName(("plat" + _local2)) as MovieClip);
if (contactListener.Touch(player.body, GetBodyByClip(_local5))){
if (_local5.alpha == 0){
Tweener.addTween(_local5, {alpha:1, time:1, transition:"easeOutQuart"});
sound.Play(SoundID.APPEAR);
};
};
_local2++;
};
}
}
}//package Levels
Section 178
//Level_3 (Levels.Level_3)
package Levels {
import flash.display.*;
import Types.*;
public class Level_3 extends Level {
public var checkPoint0:MovieClip;
public var checkPoint1:MovieClip;
public var checkPoint2:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var woodBox:MovieClip;
public var waterPlat:MovieClip;
public var stepPlat1:MovieClip;
public var stepPlat2:MovieClip;
public var water1:MovieClip;
public var water2:MovieClip;
public var firstPlat:MovieClip;
public function Level_3():void{
id = 3;
super();
CreateBody(firstPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[13, -68.95], [350, -68.95], [350, 59], [13, 39.05]], [[-350, 39], [13, 39.05], [350, 59], [-350, 59]]]]);
CreateBody(woodBox, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[20, -20], [20, 20], [-20, 20], [-20, -20]]]]);
CreateBody(stepPlat1, BodyType.LOST, GeomType.POLYGON, [[], Materials.GROUND, 500, 4000, 2000], [[[[-35, -7.5], [35, -7.5], [35, 7.5], [-35, 7.5]]]]);
CreateBody(stepPlat2, BodyType.LOST, GeomType.POLYGON, [[], Materials.GROUND, 2500, 4000, 2000], [[[[-35, -7.5], [35, -7.5], [35, 7.5], [-35, 7.5]]]]);
CreateBody(waterPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[232.5, -2], [326.5, -2], [232.5, 18]], [[212.5, 18], [232.5, 18], [212.5, 38]], [[232.5, 18], [326.5, -2], [212.5, 38]], [[192.5, 38], [212.5, 38], [192.5, 58]], [[212.5, 38], [326.5, -2], [378.5, 97], [192.5, 58]], [[-226.5, -97], [-226.5, 19], [-378.5, -96.85]], [[-226.5, 19], [-187.5, 58], [-378.5, 97], [-378.5, -96.85]], [[-187.5, 58], [192.5, 58], [378.5, 97], [-378.5, 97]], [[326.5, -2], [326.5, -55], [378.5, -97], [378.5, 97]], [[378.5, -97], [326.5, -55], [213.5, -55], [-15.5, -97]], [[-15.5, 32], [-15.5, -97], [213.5, -55], [124.5, 32]]]]);
CreateController([water1], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([water2], ControllerType.BUOYANCY, [Materials.WATER]);
if (!instructions[1]){
player.Tell("Use R to reset the level.");
instructions[1] = true;
};
}
}
}//package Levels
Section 179
//Level_4 (Levels.Level_4)
package Levels {
import flash.display.*;
import Types.*;
public class Level_4 extends Level {
public var upBounce:MovieClip;
public var checkPoint0:MovieClip;
public var plat10:MovieClip;
public var checkPoint1:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var plat6:MovieClip;
public var plat0:MovieClip;
public var plat1:MovieClip;
public var plat2:MovieClip;
public var plat3:MovieClip;
public var plat4:MovieClip;
public var plat5:MovieClip;
public var plat7:MovieClip;
public var plat8:MovieClip;
public var plat9:MovieClip;
public var firstPlat:MovieClip;
public function Level_4():void{
id = 4;
super();
CreateBody(firstPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-250, 10], [-250, -10], [250, -10], [250, 10]]]]);
var _local1:int;
while (_local1 <= 10) {
CreateBody(("plat" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-31, -7.5], [31, -7.5], [31, 7.5], [-31, 7.5]]]]);
_local1++;
};
CreateController([upBounce], ControllerType.BUOYANCY, [Materials.STAR]);
if (!instructions[2]){
player.Tell("Use P to pause the game.");
instructions[2] = true;
};
}
}
}//package Levels
Section 180
//Level_5 (Levels.Level_5)
package Levels {
import flash.display.*;
import Types.*;
public class Level_5 extends Level {
public var checkPoint0:MovieClip;
public var helpPris:MovieClip;
public var triangle:MovieClip;
public var helpPlat:MovieClip;
public var balance1:MovieClip;
public var backet:MovieClip;
public var balance2:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var afterDisPlat:MovieClip;
public var backetPris:MovieClip;
public var disPlat:MovieClip;
public var movePlat:MovieClip;
public var finishPlat:MovieClip;
public var swingsRev:MovieClip;
public var afterBacketPlat:MovieClip;
public var steelBall:MovieClip;
public var swings:MovieClip;
public var upPlat:MovieClip;
public var firstPlat:MovieClip;
public function Level_5():void{
id = 5;
super();
killHeight = 750;
CreateBody(movePlat, BodyType.MOVE_Y, GeomType.POLYGON, [[], Materials.STEEL, 136, 295, -1, 2.5], [[[[50, -5], [50, 5], [-50, 5], [-50, -5]]]]);
CreateBody(firstPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-358, -9.55], [400.5, -9.5], [606.5, 9.5], [-358, 10]], [[400.5, -9.5], [455.5, -32.5], [606.5, -32.5], [606.5, 9.5]]]]);
CreateBody(upPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-8.5, 40], [-49.5, 20], [125.5, 20], [125.5, 40]], [[125.5, 20], [-49.5, 20], [1.5, 20]], [[1.5, 20], [-49.5, 20], [-125.5, 0], [-38.5, 0]], [[-125.5, 20], [-125.5, 0], [-49.5, 20]]]]);
CreateBody(steelBall, BodyType.STANDART, GeomType.CIRCLE, [[], Materials.WOOD], [[60]]);
CreateBody(triangle, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[3.5, 7.5], [16.5, 29.5], [-16.5, 29.5], [-3.5, 7.5]]]]);
CreateBody(swings, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-120, 2.5], [-120, -2.5], [120, -2.5], [120, 2.5]]]]);
CreateBody(disPlat, BodyType.LOST, GeomType.POLYGON, [[], Materials.GROUND, 0, 4000, 2000], [[[[-50, 6], [-50, -6], [50, -6], [50, 6]]]]);
CreateBody(afterDisPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-107.5, -10], [107.5, -10], [107.5, 10], [-107.5, 10]]]]);
CreateBody(backet, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[44.5, -60], [50.5, -60], [50.5, 0], [41.5, -8]], [[-44.5, -60], [-41.5, -8], [-50.5, 0], [-50.5, -60]], [[-41.5, -8], [41.5, -8], [50.5, 0], [-50.5, 0]]]]);
CreateBody(afterBacketPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-50, -10], [50, -10], [50, 10], [-50, 10]]]]);
CreateBody(helpPlat, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-175, -4], [175, -4], [175, 4], [-175, 4]]]]);
CreateBody(finishPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-159.5, 23.5], [-159.5, 3.5], [-69.5, 3.5], [159.5, 23.5]], [[159.5, -23.5], [159.5, 23.5], [-69.5, 3.5], [-0.5, -23.5]]]]);
CreateJoint([swingsRev], JointType.REVOLUTE, [false, false]);
CreateJoint([backetPris], JointType.PRISMATIC, [false, true]);
CreateJoint([helpPris], JointType.PRISMATIC, [false, true, 0, 0, 0, 170]);
CreateJoint([balance1, balance2], JointType.PULLEY, [1]);
}
}
}//package Levels
Section 181
//Level_6 (Levels.Level_6)
package Levels {
import flash.display.*;
import Types.*;
public class Level_6 extends Level {
public var upBounce:MovieClip;
public var checkPoint0:MovieClip;
public var checkPoint1:MovieClip;
public var movePlat1:MovieClip;
public var movePlat2:MovieClip;
public var movePlat3:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star5:StarCollect;
public var star7:StarCollect;
public var star9:StarCollect;
public var stoneBarier:MovieClip;
public var star4:StarCollect;
public var hammer1:MovieClip;
public var hammer2:MovieClip;
public var hammer3:MovieClip;
public var mainGround:MovieClip;
public var star10:StarCollect;
public var star11:StarCollect;
public var star6:StarCollect;
public var star8:StarCollect;
public function Level_6():void{
id = 6;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-333.5, 58.5], [-333.5, -77.5], [325.5, -65.5], [345.5, -45.5], [347.5, 58.5]], [[395.5, 111.5], [347.5, 58.5], [345.5, -45.5], [518.5, -45.5], [518.5, 111.5]], [[345.5, -65.5], [345.5, -45.5], [325.5, -65.5]], [[325.5, -65.5], [-333.5, -77.5], [325.5, -85.5]], [[-333.5, -77.5], [-563.5, -77.5], [-87.5, -85.5], [325.5, -85.5]], [[-87.5, -85.5], [-563.5, -77.5], [-107.5, -105.5], [-87.5, -105.5]], [[-107.5, -105.5], [-563.5, -77.5], [-626.5, -125.5], [-107.5, -125.5]], [[-563.5, -77.5], [-563.5, -13.5], [-626.5, 210.5], [-626.5, -125.5]], [[-259.5, -210.5], [626.5, -210.5], [-259.5, -190.5]], [[-279.5, -190.5], [-259.5, -190.5], [-279.5, -170.5]], [[-259.5, -190.5], [626.5, -210.5], [-279.5, -170.5]], [[-299.5, -170.5], [-279.5, -170.5], [-299.5, -150.5]], [[-279.5, -170.5], [626.5, -210.5], [332.5, -150.5], [-299.5, -150.5]], [[332.5, -150.5], [626.5, -210.5], [566.5, -70.5], [413.5, -70.5]], [[626.5, -210.5], [626.5, 210.5], [566.5, 155.5], [566.5, -70.5]], [[626.5, 210.5], [-626.5, 210.5], [518.5, 155.5], [566.5, 155.5]], [[518.5, 155.5], [-626.5, 210.5], [-423.5, 143.5], [518.5, 143.5]], [[-626.5, 210.5], [-563.5, -13.5], [-423.5, -13.5], [-423.5, 143.5]]]]);
CreateBody(movePlat1, BodyType.MOVE_X, GeomType.POLYGON, [[], Materials.STEEL, 327, 577, -1, 2], [[[[-40, 5], [-40, -5], [40, -5], [40, 5]]]]);
CreateBody(movePlat2, BodyType.MOVE_X, GeomType.POLYGON, [[], Materials.STEEL, 659, 907, 1, 2], [[[[-40, 5], [-40, -5], [40, -5], [40, 5]]]]);
var _local1 = 1;
while (_local1 <= 3) {
CreateBody(("hammer" + _local1), BodyType.UP_AND_DROP, GeomType.POLYGON, [[], Materials.STEEL, 561, 619, 1, 2], [[[[16, 0], [42, 0], [42, 92], [16, 92]], [[-0.5, 105.5], [16, 92], [42, 92], [58.5, 105.5], [58.5, 109.5], [-0.5, 109.5]]]]);
_local1++;
};
CreateBody(stoneBarier, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[10, -25], [10, 25], [-10, 25], [-10, -25]]]]);
CreateBody(movePlat3, BodyType.MOVE_Y, GeomType.POLYGON, [[], Materials.STEEL, 548, 736, 1, 2], [[[[-22, -5], [22, -5], [22, 5], [-22, 5]]]]);
CreateController([upBounce], ControllerType.BUOYANCY, [Materials.STAR]);
SetBodiesFilter([mainGround, hammer1, hammer2, hammer3], -1);
}
}
}//package Levels
Section 182
//Level_7 (Levels.Level_7)
package Levels {
import Box2D.Dynamics.Joints.*;
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_7 extends Level {
public var water2right:MovieClip;
public var water2left:MovieClip;
public var upBounce1:MovieClip;
public var doorRev:MovieClip;
public var gatePris:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var star9:StarCollect;
public var door:MovieClip;
public var mainGround:MovieClip;
public var rightWaterPlat:MovieClip;
public var leftWaterPlat:MovieClip;
public var checkPoint0:MovieClip;
public var woodBalk:MovieClip;
public var wall:MovieClip;
public var gate:MovieClip;
public var kolesoRev:MovieClip;
public var steelBall:MovieClip;
public var castle:MovieClip;
public var koleso:MovieClip;
public var water1:MovieClip;
public function Level_7():void{
id = 7;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[1335, 8], [1343, 8], [0x0600, 213], [1335, 47]], [[1239, 47], [1335, 47], [0x0600, 213], [1239, 104]], [[764, 104], [1239, 104], [0x0600, 213], [764, 169]], [[234, 149], [234, 169], [214, 149]], [[214, 129], [214, 149], [194, 129]], [[214, 149], [234, 169], [154, 89], [174, 109], [194, 129]], [[194, 109], [194, 129], [174, 109]], [[174, 89], [174, 109], [154, 89]], [[154, 0], [154, 89], [0, 0]], [[154, 89], [234, 169], [0, 213], [0, 0]], [[234, 169], [764, 169], [0x0600, 213], [0, 213]], [[1343, 8], [1343, 0], [0x0600, 0], [0x0600, 213]]]]);
CreateBody(leftWaterPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[244, 0], [244, 10], [0, 54], [0, 0]], [[244, 10], [254, 10], [254, 139], [83, 139], [0, 54]]]]);
CreateBody(rightWaterPlat, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[741, 0], [741, 17], [10, 10], [10, 0]], [[10, 10], [741, 17], [622, 17], [0, 10]], [[0, 139], [0, 10], [171, 74], [171, 139]], [[171, 74], [0, 10], [305, 47], [305, 74]], [[305, 47], [0, 10], [328, 24]], [[328, 24], [0, 10], [622, 17], [465, 24]], [[488, 74], [488, 47], [622, 74]], [[488, 47], [465, 24], [622, 17], [622, 74]]]]);
CreateBody(castle, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[0, -1], [11, -1], [11, 24], [0, 30]], [[27, 160], [27, 51], [35, 158], [35, 160]], [[35, 158], [27, 51], [45, 158]], [[45, 160], [45, 158], [599, 160]], [[45, 158], [27, 51], [558, 140], [599, 160]], [[599, 140], [599, 160], [558, 140]], [[558, 120], [558, 140], [538, 120]], [[558, 140], [27, 51], [538, 120]], [[538, 100], [538, 120], [518, 100]], [[538, 120], [27, 51], [518, 100]], [[518, 80], [518, 100], [498, 80]], [[518, 100], [27, 51], [498, 80]], [[498, 60], [498, 80], [478, 60]], [[498, 80], [27, 51], [478, 60]], [[478, 60], [27, 51], [32, 40], [478, 40]], [[27, 51], [0, 30], [11, 24], [32, 40]]]]);
CreateBody(wall, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[10, -67.5], [10, 67.5], [-10, 67.5], [-10, -67.5]]]]);
CreateBody(steelBall, BodyType.STANDART, GeomType.CIRCLE, [[], Materials.STEEL], [[50]]);
CreateBody(woodBalk, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-71, 4.5], [-71, -4.5], [71, -4.5], [71, 4.5]]]]);
CreateBody(gate, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[4, -110], [4, 0], [-4, 0], [-4, -110]]]]);
CreateBody(koleso, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[26.5, -30.1], [30.05, -26.55], [-12.25, 8.65], [8.65, -12.3]], [[2.5, -40], [2.5, -14.85], [-2.5, -14.8], [-2.5, -40]], [[2.5, -14.85], [8.65, -12.3], [-12.25, 8.65], [-14.8, 2.5], [-14.8, -2.5], [-12.25, -8.75], [-8.7, -12.3], [-2.5, -14.8]], [[-26.5, -30.1], [-8.7, -12.3], [-12.25, -8.75], [-30.05, -26.55]], [[-40, -2.5], [-14.8, -2.5], [-14.8, 2.5], [-40, 2.5]], [[-12.25, 8.65], [30.05, -26.55], [12.2, -8.75], [-30.1, 26.5]], [[-26.55, 30.05], [-30.1, 26.5], [-8.75, 12.2]], [[-2.5, 40], [-2.5, 14.8], [2.5, 14.8], [2.5, 40]], [[-2.5, 14.8], [-8.75, 12.2], [12.2, -8.75], [14.8, -2.5], [14.8, 2.5], [12.25, 8.65], [8.7, 12.2], [2.5, 14.8]], [[26.55, 30.05], [8.7, 12.2], [12.25, 8.65], [30.1, 26.5]], [[40, 2.5], [14.8, 2.5], [14.8, -2.5], [40, -2.5]], [[-8.75, 12.2], [-30.1, 26.5], [12.2, -8.75]]]]);
CreateBody(door, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-36, 3.5], [-36, -3.5], [0, -3.5], [0, 3.5]]]]);
CreateJoint([gatePris], JointType.PRISMATIC, [false, true, 0, 0, 0, 84]);
CreateJoint([kolesoRev], JointType.REVOLUTE, [false, true, 0, 0, 0, 0]);
CreateJoint([gatePris, kolesoRev], JointType.GEAR, [-0.1]);
CreateJoint([doorRev], JointType.REVOLUTE, [false, true, 0, 0, 0, 90]);
CreateController([water1], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([water2left], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([water2right], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([upBounce1], ControllerType.BUOYANCY, [Materials.STAR]);
SetBodiesFilter([koleso, mainGround, door, rightWaterPlat], -1);
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
var _local2:b2RevoluteJoint = (GetJointByClip(kolesoRev) as b2RevoluteJoint);
_local2.SetLimits(_local2.GetJointAngle(), (_local2.GetJointAngle() + Math.PI));
}
}
}//package Levels
Section 183
//Level_8 (Levels.Level_8)
package Levels {
import com.boristhebrave.Box2D.Controllers.*;
import flash.display.*;
import flash.events.*;
import Types.*;
public class Level_8 extends Level {
public var upBounce:MovieClip;
public var balanceGatePris:MovieClip;
public var water:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var star5:StarCollect;
public var star6:StarCollect;
public var star7:StarCollect;
public var star8:StarCollect;
public var mainGround:MovieClip;
public var stoneBlock:MovieClip;
public var redButton:MovieClip;
public var balancePlat:MovieClip;
public var waterFromPipe:MovieClip;
public var littleBlock:MovieClip;
public var pipe1:MovieClip;
public var pipe3:MovieClip;
public var checkPoint0:MovieClip;
public var pipe2:MovieClip;
public var balanceGate:MovieClip;
public var pipe4:MovieClip;
public var balance1:MovieClip;
public var balance2:MovieClip;
public var balancePlatPris:MovieClip;
public var ball:MovieClip;
public function Level_8():void{
id = 8;
super();
CreateBody(mainGround, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[798.5, -135.5], [798.5, 112.5], [250.5, -84.5], [250.5, -135.5]], [[250.5, -84.5], [798.5, 112.5], [134.5, -84.5]], [[134.5, -135.5], [134.5, -84.5], [-82.5, -135.5]], [[134.5, -84.5], [798.5, 112.5], [-88.5, 77.5], [-88.5, -129.5], [-82.5, -135.5]], [[-88.5, 77.5], [798.5, 112.5], [-798.5, 112.5], [-238.5, 77.5]], [[-238.5, -129.5], [-238.5, 77.5], [-313.5, -2.5], [-313.5, -69.5], [-244.5, -135.5]], [[-561.5, -135.5], [-244.5, -135.5], [-313.5, -69.5], [-561.5, -69.5]], [[-313.5, -2.5], [-238.5, 77.5], [-798.5, 112.5], [-474.5, -2.5]], [[-474.5, -44.5], [-474.5, -2.5], [-798.5, 112.5], [-586.5, -44.5]], [[-586.5, -135.5], [-586.5, -44.5], [-798.5, 112.5], [-798.5, -135.5]]]]);
CreateBody(ball, BodyType.STANDART, GeomType.CIRCLE, [[], [0.5, Materials.materialParams[Materials.WOOD][1], Materials.materialParams[Materials.WOOD][2]]], [[50]]);
CreateBody(balancePlat, BodyType.STANDART, GeomType.POLYGON, [[], Materials.WOOD], [[[[-56, 5], [-56, -5], [56, -5], [56, 5]]]]);
CreateBody(stoneBlock, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-160.5, -96.5], [160.5, -96.5], [-3.5, 16.5], [-66.5, 43.5], [-160.5, 43.5]], [[-3.5, 16.5], [160.5, -96.5], [138.5, 16.5]], [[138.5, 16.5], [160.5, -96.5], [160.5, 78.5], [138.5, 78.5]]]]);
CreateBody(balanceGate, BodyType.STANDART, GeomType.POLYGON, [[], Materials.STEEL], [[[[4, -17.5], [4, 17.5], [-4, 17.5], [-4, -17.5]]]]);
CreateBody(redButton, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[12.5, 0], [12.5, 5], [-12.5, 5], [-12.5, 0]]]]);
CreateBody(pipe2, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-80.95, 2.5], [-80.95, -2.5], [81, -2.5], [81, 2.5]]]]);
CreateBody(littleBlock, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-6.5, 0], [-3.5, -20], [2.5, -20], [6.5, 0]]]]);
CreateBody(pipe4, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STEEL], [[[[-5.5, 2.5], [-5.5, -2.5], [5.9, -2.5], [5.9, 2.5]]]]);
CreateJoint([balancePlatPris], JointType.PRISMATIC, [false, false]);
CreateJoint([balanceGatePris], JointType.PRISMATIC, [false, true, 0, 0, 0, 40]);
CreateJoint([balance1, balance2], JointType.PULLEY, [1]);
CreateController([upBounce], ControllerType.BUOYANCY, [Materials.STAR]);
CreateController([water], ControllerType.BUOYANCY, [Materials.WATER]);
m_joint.addChild(stoneBlock);
}
override public function Update(_arg1:Event):void{
super.Update(_arg1);
if ((((water.y > 275)) && (contactListener.Touch(player.body, GetBodyByClip(redButton))))){
water.y = (water.y - 1);
water.mask.height = (water.mask.height + 1);
(GetControllerByClip(water) as b2BuoyancyController).offset = (-(water.y) / m_physScale);
GetBodyByClip(ball).WakeUp();
waterFromPipe.emiter.start();
sound.Play(SoundID.WATER_STREAM);
} else {
waterFromPipe.emiter.stop();
sound.Stop(SoundID.WATER_STREAM);
};
}
}
}//package Levels
Section 184
//Level_9 (Levels.Level_9)
package Levels {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import Types.*;
import caurina.transitions.*;
public class Level_9 extends Level {
public var water1:MovieClip;
public var brick1:MovieClip;
public var brick2:MovieClip;
public var brick3:MovieClip;
public var brick4:MovieClip;
public var brick5:MovieClip;
public var brick6:MovieClip;
public var brick7:MovieClip;
public var brick8:MovieClip;
public var brick9:MovieClip;
public var star0:StarCollect;
public var star1:StarCollect;
public var star2:StarCollect;
public var star3:StarCollect;
public var star4:StarCollect;
public var brick13:MovieClip;
public var brick15:MovieClip;
public var brick16:MovieClip;
public var brick17:MovieClip;
public var brick18:MovieClip;
public var brick19:MovieClip;
public var brick14:MovieClip;
public var brickHalf10:MovieClip;
public var brickHalf11:MovieClip;
public var brickHalf12:MovieClip;
public var brick10:MovieClip;
public var castle1:MovieClip;
public var castle2:MovieClip;
public var brick20:MovieClip;
public var brick22:MovieClip;
public var door2:MovieClip;
public var brick26:MovieClip;
public var brick27:MovieClip;
public var brick28:MovieClip;
public var brick29:MovieClip;
public var brick25:MovieClip;
public var brick11:MovieClip;
public var door1:MovieClip;
public var cannonWheel:MovieClip;
public var brick31:MovieClip;
public var brick32:MovieClip;
public var brick33:MovieClip;
public var brick23:MovieClip;
public var brick30:MovieClip;
public var cannonRev:MovieClip;
public var door1Rev:MovieClip;
public var brick12:MovieClip;
public var brick21:MovieClip;
public var brick24:MovieClip;
private var bulletI:int;// = 0
public var ground1:MovieClip;
private var flareInHands:int;// = 0
public var brickHalf1:MovieClip;
public var brickHalf2:MovieClip;
public var brickHalf3:MovieClip;
public var brickHalf4:MovieClip;
public var brickHalf5:MovieClip;
public var brickHalf6:MovieClip;
public var brickHalf7:MovieClip;
public var brickHalf8:MovieClip;
public var brickHalf9:MovieClip;
public var barier1:MovieClip;
private var framesAfterLastBullet:int;// = 0
public var door2Rev:MovieClip;
private var bulletBody:b2Body;
public var checkPoint0:MovieClip;
public var flare:MovieClip;
public var water2:MovieClip;
public var cannon:MovieClip;
public function Level_9():void{
var _local1:int;
id = 9;
super();
CreateBody(ground1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.GROUND], [[[[-331, -16], [-331, -99], [-152, -95], [-232, -16]], [[-152, -95], [-331, -99], [-323, -99], [-106, -95]], [[-106, -107], [-106, -95], [-323, -99], [-323, -107]], [[680, -107], [680, 92], [-67, -99.05], [-67, -107]], [[-67, -99.05], [680, 92], [-75, -69], [-75, -99.05]], [[-75, -69], [680, 92], [-139, -49], [-139, -69]], [[-139, -49], [680, 92], [-159, -29], [-159, -49]], [[-159, -29], [680, 92], [-179, -9], [-179, -29]], [[-179, -9], [680, 92], [-199, 11], [-199, -9]], [[-199, 11], [680, 92], [-861, 92], [-448, 11]], [[-448, -107], [-448, 11], [-861, 92], [-861, -107]]]]);
CreateBody(castle1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-48, -45], [-48, -23], [-58, -19], [-58, -45]], [[-58, -19], [-48, -23], [-26, -1], [-39, 0]], [[-39, 44], [-39, 0], [-26, -1], [58, -1], [58, 44]]]]);
CreateBody(castle2, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[5, -146], [5, -126.05], [-145, -86], [-145, -144], [-133, -146]], [[-154, -189], [-154, -167], [-164, -163], [-164, -189]], [[-154, -167], [-133, -146], [-145, -144], [-164, -163]], [[65, -86], [-145, -86], [25, -106.05], [65, -106]], [[-145, -86], [5, -126.05], [25, -126], [25, -106.05]], [[125, -28], [145, -28], [125, -8.05]], [[105, -8], [125, -8.05], [105, 11.95]], [[125, -8.05], [145, -28], [211, -48], [237, 68], [85, 32], [105, 11.95]], [[85, 12], [105, 11.95], [85, 32]], [[-145, 32], [85, 32], [237, 68], [-145, 68]], [[237, -145], [237, 68], [211, -48], [211, -145]], [[145, -48], [211, -48], [145, -28]]]]);
CreateBody(door1, BodyType.STANDART, GeomType.POLYGON, [[], Materials.STEEL], [[[[65.5, -3.5], [65.5, 3.5], [-57.5, 3.5], [-57.5, -3.5]]]]);
CreateBody(door2, BodyType.STANDART, GeomType.POLYGON, [[], [1, 0.4, 0.1]], [[[[-18.5, 3.5], [-18.5, -3.5], [18.5, -3.5], [18.5, 3.5]]]]);
_local1 = 1;
while (_local1 <= 33) {
CreateBody(("brick" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-9, -4], [9, -4], [9, 4], [-9, 4]]]]);
_local1++;
};
_local1 = 1;
while (_local1 <= 12) {
CreateBody(("brickHalf" + _local1), BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[4, -4], [4, 4], [-4, 4], [-4, -4]]]]);
_local1++;
};
CreateBody(cannonWheel, BodyType.STANDART, GeomType.CIRCLE, [[], Materials.STEEL], [[26]]);
CreateBody(cannon, BodyType.STANDART, GeomType.POLYGON, [[], [4, 0.6, 0.1]], [[[[5.5, -8.5], [36.5, -5.5], [-36.5, -1.5], [-33.5, -7.5], [-30.5, -8.5], [-25.5, -9.5], [-13.5, -9.5]], [[-36.5, -1.5], [36.5, -5.5], [-36.5, 2.5], [-38, 1], [-37.5, -0.5]], [[-36.5, 2.5], [36.5, -5.5], [36.5, 6.5], [-9.5, 9.5], [-25.5, 9.5], [-33, 8], [-34.5, 6.5]]]]);
CreateBody(barier1, BodyType.STATIC, GeomType.POLYGON, [[], Materials.STONE], [[[[-11.05, -6], [-4.05, -6], [7.95, 10], [-10.95, 10]]]]);
CreateJoint([door1Rev], JointType.REVOLUTE, [true, true, 5, 30, -88, -1]);
CreateJoint([door2Rev], JointType.REVOLUTE, [false, true, 0, 0, 2, 89]);
CreateJoint([cannonRev], JointType.REVOLUTE, [false, false]);
CreateController([water1], ControllerType.BUOYANCY, [Materials.WATER]);
CreateController([water2], ControllerType.BUOYANCY, [Materials.WATER]);
SetBodiesFilter([door1, door2, castle1, ground1], -1);
m_joint.addChild(castle1);
}
override public function Update(_arg1:Event):void{
var _local4:Bullet;
var _local5:Point;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
var _local10:int;
var _local11:b2Body;
var _local12:b2Body;
super.Update(_arg1);
var _local2:Point = m_sprite.globalToLocal(door1.localToGlobal(new Point(-55, 0)));
var _local3:Point = m_sprite.globalToLocal(castle1.localToGlobal(new Point(-35, 41)));
DrawRope(_local3, _local2);
DrawNail(_local2);
DrawNail(_local3);
if ((((flareInHands == 0)) && (player.HitTestObjectControlPoints(flare, true)))){
flareInHands = 1;
Tweener.addTween(flare, {scaleX:0.75, scaleY:0.75, rotation:21, time:1, transition:"linear"});
};
if (flareInHands == 1){
sound.Play(SoundID.FIRE);
} else {
sound.Stop(SoundID.FIRE);
};
if ((((flareInHands == 1)) || ((flareInHands == 2)))){
flare.x = player.x;
flare.y = player.y;
if (player.smile.currentLabel == "underWater"){
flare.emiter.stop();
flareInHands = 2;
};
if ((((((flareInHands == 1)) && (player.HitTestObjectControlPoints(cannon, true)))) && ((framesAfterLastBullet > 60)))){
_local4 = new Bullet();
_local5 = m_sprite.globalToLocal(cannon.localToGlobal(new Point(45, 0)));
_local4.x = _local5.x;
_local4.y = _local5.y;
_local4.name = ("bullet" + bulletI);
m_sprite.addChildAt(_local4, (m_sprite.getChildIndex(cannon) - 1));
bulletBody = CreateBody(_local4.name, BodyType.STANDART, GeomType.CIRCLE, [[], Materials.STEEL], [[10]]);
_local6 = (_local4.x - cannon.x);
_local7 = (_local4.y - cannon.y);
_local8 = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
_local9 = (120 + (80 * Math.random()));
bulletBody.ApplyForce(new b2Vec2(((_local9 * _local6) / _local8), ((_local9 * _local7) / _local8)), bulletBody.GetPosition());
bulletI++;
framesAfterLastBullet = 0;
cannon.fire.gotoAndPlay(1);
sound.Play(SoundID.CANNON);
};
};
framesAfterLastBullet++;
if (bulletBody){
_local10 = 1;
while (_local10 <= 33) {
_local11 = GetBodyByClip(("brick" + _local10));
if (contactListener.Touch(bulletBody, _local11)){
DestroyBody(_local11, true);
DestroyBody(bulletBody, true);
};
_local10++;
};
_local10 = 1;
while (_local10 <= 12) {
_local12 = GetBodyByClip(("brickHalf" + _local10));
if (contactListener.Touch(bulletBody, _local12)){
DestroyBody(_local12, true);
DestroyBody(bulletBody, true);
};
_local10++;
};
if (contactListener.IsTouching(bulletBody)){
DestroyBody(bulletBody, true);
};
};
}
}
}//package Levels
Section 185
//Bubbles_104 (movie_fla.Bubbles_104)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class Bubbles_104 extends MovieClip {
public var __id4_:MovieClipEmitter;
public function Bubbles_104(){
__setProp___id4__Bubbles_Layer1_0();
}
function __setProp___id4__Bubbles_Layer1_0(){
try {
__id4_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id4_.config = "{pps:30,x:0, y:0, width:1, height:1,size:15, color:16777215, movement:true, speed:[55.7,88.2] , angle:[274.2,267.95] , startScale:[0,0.1] , accel:0.95, fade:1190, xOscillate:[0.25,100], lifespan:840}";
__id4_.movieClipName = "";
__id4_.pps = 30;
__id4_.rootEffect = false;
try {
__id4_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 186
//Cannon_192 (movie_fla.Cannon_192)
package movie_fla {
import flash.display.*;
public dynamic class Cannon_192 extends MovieClip {
public var fire:MovieClip;
public function Cannon_192(){
addFrameScript(0, frame1);
}
function frame1(){
fire.gotoAndStop(6);
}
}
}//package movie_fla
Section 187
//CannonFire_193 (movie_fla.CannonFire_193)
package movie_fla {
import flash.display.*;
public dynamic class CannonFire_193 extends MovieClip {
public function CannonFire_193(){
addFrameScript(5, frame6);
}
function frame6(){
stop();
}
}
}//package movie_fla
Section 188
//ComicsFrame1_353 (movie_fla.ComicsFrame1_353)
package movie_fla {
import flash.display.*;
import flash.events.*;
import Types.*;
import com.midasplayer.*;
public dynamic class ComicsFrame1_353 extends MovieClip {
public var kingButton:SimpleButton;
public var backToMainMenuButton:SimpleButton;
public function ComicsFrame1_353(){
addFrameScript(0, frame1);
}
function frame1(){
kingButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
kingButton.addEventListener(MouseEvent.CLICK, kingButtonClickHandler, false, 0, true);
backToMainMenuButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
backToMainMenuButton.addEventListener(MouseEvent.CLICK, backToMainMenuButtonClickHandler, false, 0, true);
}
public function buttonOverHandler(_arg1:MouseEvent):void{
Preloader.sound.Play(SoundID.MENU_MOVE);
}
public function kingButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openOtherGamesLink();
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function backToMainMenuButtonClickHandler(_arg1:MouseEvent):void{
var _local2:MovieClip = (this.parent.parent as MovieClip);
(this.parent as AfterBonusLevelsComics).PrepearToDie();
_local2.gotoAndStop("mainMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
}
}//package movie_fla
Section 189
//ComicsFrame3_348 (movie_fla.ComicsFrame3_348)
package movie_fla {
import flash.display.*;
import flash.events.*;
import Types.*;
import com.midasplayer.*;
public dynamic class ComicsFrame3_348 extends MovieClip {
public var kingButton:SimpleButton;
public var backToMainMenuButton:SimpleButton;
public function ComicsFrame3_348(){
addFrameScript(0, frame1);
}
function frame1(){
kingButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
kingButton.addEventListener(MouseEvent.CLICK, kingButtonClickHandler, false, 0, true);
backToMainMenuButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
backToMainMenuButton.addEventListener(MouseEvent.CLICK, backToMainMenuButtonClickHandler, false, 0, true);
}
public function buttonOverHandler(_arg1:MouseEvent):void{
Preloader.sound.Play(SoundID.MENU_MOVE);
}
public function kingButtonClickHandler(_arg1:MouseEvent):void{
if (Preloader.bonusAvailable){
(this.parent as AfterGameComics).StartBonusGame();
} else {
KingAPI.openSignLink();
};
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function backToMainMenuButtonClickHandler(_arg1:MouseEvent):void{
var _local2:MovieClip = (this.parent.parent as MovieClip);
(this.parent as AfterGameComics).PrepearToDie();
_local2.gotoAndStop("mainMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
}
}//package movie_fla
Section 190
//Flare_199 (movie_fla.Flare_199)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class Flare_199 extends MovieClip {
public var emiter:MovieClipEmitter;
public function Flare_199(){
__setProp_emiter_Flare_Layer1_0();
}
function __setProp_emiter_Flare_Layer1_0(){
try {
emiter["componentInspectorSetting"] = true;
} catch(e:Error) {
};
emiter.config = "{pps:80,x:0, y:0, width:1, height:1,size:15, color:16737792, movement:true, speed:[33.35,37.15] , angle:[246.1,295.6] , startScale:[0,0.15] , fade:420, lifespan:570}";
emiter.movieClipName = "";
emiter.pps = 80;
emiter.rootEffect = false;
try {
emiter["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 191
//LOGO_368 (movie_fla.LOGO_368)
package movie_fla {
import flash.display.*;
public dynamic class LOGO_368 extends MovieClip {
public function LOGO_368(){
addFrameScript(134, frame135);
}
function frame135(){
(parent as MovieClip).gotoAndStop("preGameComics");
}
}
}//package movie_fla
Section 192
//PlayerSmile_40 (movie_fla.PlayerSmile_40)
package movie_fla {
import flash.display.*;
public dynamic class PlayerSmile_40 extends MovieClip {
public function PlayerSmile_40(){
addFrameScript(99, frame100, 199, frame200, 213, frame214, 217, frame218, 221, frame222, 222, frame223);
}
function frame100(){
gotoAndPlay("wink");
}
function frame200(){
gotoAndPlay("wink");
}
function frame223(){
stop();
}
function frame214(){
stop();
}
function frame218(){
gotoAndPlay("wink");
}
function frame222(){
gotoAndPlay("wink");
}
}
}//package movie_fla
Section 193
//UpBounce_131 (movie_fla.UpBounce_131)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_131 extends MovieClip {
public var __id3_:MovieClipEmitter;
public function UpBounce_131(){
__setProp___id3__UpBounce_Layer2_0();
}
function __setProp___id3__UpBounce_Layer2_0(){
try {
__id3_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id3_.config = "{pps:17,x:0, y:0, width:25, height:91, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true, lifespan:1200}";
__id3_.movieClipName = "Star";
__id3_.pps = 17;
__id3_.rootEffect = false;
try {
__id3_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 194
//UpBounce_157 (movie_fla.UpBounce_157)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_157 extends MovieClip {
public var __id2_:MovieClipEmitter;
public function UpBounce_157(){
__setProp___id2__UpBounce_Layer2_0();
}
function __setProp___id2__UpBounce_Layer2_0(){
try {
__id2_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id2_.config = "{pps:30,x:0, y:0, width:98, height:149, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true, lifespan:3000}";
__id2_.movieClipName = "Star";
__id2_.pps = 30;
__id2_.rootEffect = false;
try {
__id2_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 195
//UpBounce_222 (movie_fla.UpBounce_222)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_222 extends MovieClip {
public var __id1_:MovieClipEmitter;
public function UpBounce_222(){
__setProp___id1__UpBounce_Layer1_0();
}
function __setProp___id1__UpBounce_Layer1_0(){
try {
__id1_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id1_.config = "{pps:30,x:0, y:0, width:79, height:111, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true,lifespan:2000}";
__id1_.movieClipName = "Star";
__id1_.pps = 30;
__id1_.rootEffect = false;
try {
__id1_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 196
//UpBounce_246 (movie_fla.UpBounce_246)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_246 extends MovieClip {
public var __id0_:MovieClipEmitter;
public function UpBounce_246(){
__setProp___id0__UpBounce_Layer2_0();
}
function __setProp___id0__UpBounce_Layer2_0(){
try {
__id0_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id0_.config = "{pps:25,x:0, y:0, width:77, height:81, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true, lifespan:1500}";
__id0_.movieClipName = "Star";
__id0_.pps = 25;
__id0_.rootEffect = false;
try {
__id0_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 197
//UpBounce_59 (movie_fla.UpBounce_59)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_59 extends MovieClip {
public var __id8_:MovieClipEmitter;
public function UpBounce_59(){
__setProp___id8__UpBounce_Layer2_0();
}
function __setProp___id8__UpBounce_Layer2_0(){
try {
__id8_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id8_.config = "{pps:30,x:0, y:0, width:82, height:165, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true, lifespan:3000}";
__id8_.movieClipName = "Star";
__id8_.pps = 30;
__id8_.rootEffect = false;
try {
__id8_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 198
//UpBounce_77 (movie_fla.UpBounce_77)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_77 extends MovieClip {
public var __id7_:MovieClipEmitter;
public function UpBounce_77(){
__setProp___id7__UpBounce_Layer2_0();
}
function __setProp___id7__UpBounce_Layer2_0(){
try {
__id7_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id7_.config = "{pps:30, x:0, y:0, width:89, height:200, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true, lifespan:1500}";
__id7_.movieClipName = "Star";
__id7_.pps = 30;
__id7_.rootEffect = false;
try {
__id7_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 199
//UpBounce_97 (movie_fla.UpBounce_97)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce_97 extends MovieClip {
public var __id5_:MovieClipEmitter;
public function UpBounce_97(){
__setProp___id5__UpBounce_Layer1_0();
}
function __setProp___id5__UpBounce_Layer1_0(){
try {
__id5_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id5_.config = "{pps:150,x:0, y:0, width:500, height:1000, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true,lifespan:10000}";
__id5_.movieClipName = "Star";
__id5_.pps = 150;
__id5_.rootEffect = false;
try {
__id5_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 200
//UpBounce1_87 (movie_fla.UpBounce1_87)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class UpBounce1_87 extends MovieClip {
public var __id6_:MovieClipEmitter;
public function UpBounce1_87(){
__setProp___id6__UpBounce1_Layer2_0();
}
function __setProp___id6__UpBounce1_Layer2_0(){
try {
__id6_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id6_.config = "{pps:25,x:0, y:0, width:50, height:116, movement:true, speed:[24.9,51.9] , angle:[271.15,268.8] , startScale:[0,0.4] , accel:0.2, rotateToAngle:true, lifespan:900}";
__id6_.movieClipName = "Star";
__id6_.pps = 25;
__id6_.rootEffect = false;
try {
__id6_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 201
//WaterFromPipe_125 (movie_fla.WaterFromPipe_125)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class WaterFromPipe_125 extends MovieClip {
public var emiter:MovieClipEmitter;
public function WaterFromPipe_125(){
__setProp_emiter_WaterFromPipe_Layer1_0();
}
function __setProp_emiter_WaterFromPipe_Layer1_0(){
try {
emiter["componentInspectorSetting"] = true;
} catch(e:Error) {
};
emiter.config = "{pps:60,x:418, y:251, width:1, height:1,size:15, color:2588900, movement:true, speed:[143.05,161.2] , angle:[0,12.7] , startScale:[0,0.15] , gravity:9, fade:1230, lifespan:1070}";
emiter.movieClipName = "";
emiter.pps = 60;
emiter.rootEffect = false;
try {
emiter["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 202
//WaterFromPipe_249 (movie_fla.WaterFromPipe_249)
package movie_fla {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class WaterFromPipe_249 extends MovieClip {
public var emiter:MovieClipEmitter;
public function WaterFromPipe_249(){
__setProp_emiter_WaterFromPipe_Layer1_0();
}
function __setProp_emiter_WaterFromPipe_Layer1_0(){
try {
emiter["componentInspectorSetting"] = true;
} catch(e:Error) {
};
emiter.config = "{pps:60,x:418, y:251, width:1, height:1,size:15, color:2588900, movement:true, speed:[143.05,161.2] , angle:[0,12.7] , startScale:[0,0.15] , gravity:9, fade:1230, lifespan:1070}";
emiter.movieClipName = "";
emiter.pps = 60;
emiter.rootEffect = false;
try {
emiter["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package movie_fla
Section 203
//WaterGlare_66 (movie_fla.WaterGlare_66)
package movie_fla {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class WaterGlare_66 extends MovieClip {
public function WaterGlare_66(){
addFrameScript(0, frame1);
}
function frame1(){
addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
public function enterFrameHandler(_arg1:Event):void{
var _local2:WaterWave;
if (Math.random() < (0.2 * ((this.parent.width * this.parent.height) / (200 * 150)))){
_local2 = new WaterWave();
_local2.x = (this.parent.width * Math.random());
_local2.y = (this.parent.height * Math.random());
_local2.scaleX = (_local2.ScaleY = (0.3 + (0.5 * Math.random())));
_local2.alpha = 0.3;
addChild(_local2);
};
}
}
}//package movie_fla
Section 204
//BodyType (Types.BodyType)
package Types {
public class BodyType {
public static const PLAYER:int = 0;
public static const LOST:int = 9;
public static const MOVE_XY:int = 7;
public static const MOVE_X:int = 5;
public static const MOVE_Y:int = 6;
public static const DISAP:int = 10;
public static const STANDART:int = 2;
public static const STATIC:int = 1;
public static const DROP:int = 3;
public static const JUMP:int = 8;
public static const UP_AND_DROP:int = 4;
}
}//package Types
Section 205
//ButtonAction (Types.ButtonAction)
package Types {
public class ButtonAction {
public static const DESTROY:int = 0;
public static const FALL:int = 1;
}
}//package Types
Section 206
//ControllerType (Types.ControllerType)
package Types {
public class ControllerType {
public static const BUOYANCY:int = 0;
public static const SPRING:int = 1;
public static const GRAVITY:int = 2;
}
}//package Types
Section 207
//Damage (Types.Damage)
package Types {
public class Damage {
public static var NO:int = 0;
public static var INJURE:int = 2;
public static var KILL:int = 1;
}
}//package Types
Section 208
//GeomType (Types.GeomType)
package Types {
public class GeomType {
public static const CIRCLE:int = 1;
public static const POLYGON:int = 0;
}
}//package Types
Section 209
//JointType (Types.JointType)
package Types {
public class JointType {
public static const REVOLUTE:int = 1;
public static const PRISMATIC:int = 2;
public static const GEAR:int = 4;
public static const DISTANCE:int = 0;
public static const REVOLUTE_ANGLE_TARGET:int = 5;
public static const PULLEY:int = 3;
}
}//package Types
Section 210
//LevelStatus (Types.LevelStatus)
package Types {
public class LevelStatus {
public static const PLAY:int = 0;
public static const LOSE:int = 2;
public static const WIN:int = 1;
}
}//package Types
Section 211
//Materials (Types.Materials)
package Types {
public class Materials {
public static const PLAYER:int = 0;
public static const SNOW:int = 6;
public static const STONE:int = 2;
public static const GROUND:int = 1;
public static const STEEL:int = 4;
public static const WOOD:int = 3;
public static const ICE:int = 7;
public static const WATER:int = 8;
public static const STAR:int = 9;
public static const GLASS:int = 5;
public static const TOXIC:int = 10;
public static var materialParams:Array = new Array(new Array(2, 1, 0), new Array(0, 0.8, 0.1), new Array(2, 0.7, 0.1), new Array(0.5, 0.4, 0.2), new Array(4, 0.5, 0.2), new Array(1.5, 0.1, 0.2), new Array(0, 0.1, 0.1), new Array(1.5, 0, 0.2), new Array(3.5, 5, 2), new Array(3.2, 1.3, 1), new Array(3.5, 5, 2));
}
}//package Types
Section 212
//ObjectType (Types.ObjectType)
package Types {
public class ObjectType {
public static const STAR:int = 1005;
public static const PIN:int = 1001;
public static const BUTTON:int = 1002;
public static const FLAG:int = 1003;
public static const CHECKPOINT:int = 1004;
}
}//package Types
Section 213
//ScoreID (Types.ScoreID)
package Types {
public class ScoreID {
public static const KONGREGATE:int = 2;
public static const KING:int = 1;
}
}//package Types
Section 214
//SoundID (Types.SoundID)
package Types {
public class SoundID {
public static const REMOVE:String = "RemoveFX";
public static const CHECKPOINT:String = "CheckPointFX";
public static const LOOP1:String = "Loop1";
public static const LOOP2:String = "Loop2";
public static const LOOP3:String = "Loop3";
public static const LOOP4:String = "Loop4";
public static const LOOP5:String = "Loop5";
public static const APPEAR:String = "AppearFX";
public static const TURN_PAGE:String = "TurnPageFX";
public static const STAR_COLLECT:String = "StarCollectFX";
public static const NOT_AVAILABLE:String = "NotAvailableFX";
public static const CROWN:String = "CrownFX";
public static const CHANGE:String = "ChangeFX";
public static const BUTTON:String = "ButtonFX";
public static const JUMP:String = "JumpFX";
public static const FIRE:String = "FireFX";
public static const PULLEY:String = "PulleyFX";
public static const WATER_STREAM:String = "WaterStreamFX";
public static const MENU_MOVE:String = "MenuMoveFX";
public static const PAUSE:String = "PauseFX";
public static const MENU_SELECT:String = "MenuSelectFX";
public static const DIE:String = "DieFX";
public static const CREEK:String = "CreekFX";
public static const FLAG:String = "FlagFX";
public static const WATER_IN:String = "WaterInFX";
public static const CANNON:String = "CannonFX";
}
}//package Types
Section 215
//MemoryController (utils.MemoryController)
package utils {
import flash.geom.*;
import flash.utils.*;
import flash.system.*;
import flash.net.*;
public class MemoryController {
private var mWarningFunction:Function;
private var mForcedCleanInterval:int;
private var mForcedIterationsNum:int;
private var mWarningMemoryLimit:int;
private var mInterval:int;
private var mCriticalMemoryLimit:int;
private var mAbortFunction:Function;
private var mIsAbleToForce:Boolean;
public function MemoryController(_arg1:int=1000, _arg2:int=62914560, _arg3:int=104857600, _arg4:int=5000, _arg5:int=1, _arg6:Function=null, _arg7:Function=null):void{
mInterval = _arg1;
mWarningMemoryLimit = _arg2;
mCriticalMemoryLimit = _arg3;
mAbortFunction = _arg6;
mWarningFunction = _arg7;
mForcedIterationsNum = _arg5;
mForcedCleanInterval = _arg4;
mIsAbleToForce = true;
setInterval(checkMemoryUsage, mInterval);
}
private function doForcedClean():void{
if (!mIsAbleToForce){
return;
};
var i:int;
i = 0;
while (i < mForcedIterationsNum) {
try {
new LocalConnection().connect("Crio");
new LocalConnection().connect("Crio");
} catch(e) {
};
i = (i + 1);
};
mIsAbleToForce = false;
setTimeout(MakeAbleToForce, mForcedCleanInterval);
}
private function doSimpleClean():void{
var _local1:Point = new Point();
_local1 = null;
var _local2:String = new String("1234567812345678");
_local2 = null;
var _local3:Array = new Array();
var _local4:int;
_local4 = 0;
while (_local4 < 0x0100) {
_local3.push(new String("a"));
_local4++;
};
_local4 = 0;
while (_local4 < 0x0100) {
delete _local3[_local4];
_local4++;
};
_local3 = null;
}
private function MakeAbleToForce():void{
mIsAbleToForce = true;
}
private function checkMemoryUsage():void{
if (System.totalMemory > mWarningMemoryLimit){
doForcedClean();
if (mWarningFunction){
mWarningFunction();
};
} else {
if (System.totalMemory > mCriticalMemoryLimit){
if (mAbortFunction){
mAbortFunction();
};
doForcedClean();
};
};
}
}
}//package utils
Section 216
//WeakReference (utils.WeakReference)
package utils {
import flash.utils.*;
public class WeakReference {
private var dictionary:Dictionary;
public function WeakReference(_arg1){
dictionary = new Dictionary(true);
dictionary[_arg1] = null;
}
public function get object():Object{
var _local1:Object;
for (_local1 in dictionary) {
return (_local1);
};
return (null);
}
}
}//package utils
Section 217
//AfterBonusLevelsComics (AfterBonusLevelsComics)
package {
import flash.display.*;
import flash.events.*;
public class AfterBonusLevelsComics extends Comics {
public var comicsFrame1:MovieClip;
public function AfterBonusLevelsComics():void{
framesNum = 1;
shouldTurnLastFrame = false;
}
override public function lastFrameDelayHandler(_arg1:TimerEvent):void{
}
}
}//package
Section 218
//AfterGameComics (AfterGameComics)
package {
import flash.events.*;
import flash.display.*;
public class AfterGameComics extends Comics {
public var comicsFrame1:MovieClip;
public var comicsFrame2:MovieClip;
public var comicsFrame3:MovieClip;
public function AfterGameComics():void{
framesNum = 3;
lastFrameDelayTime = 100;
if (Preloader.bonusAvailable){
shouldTurnLastFrame = true;
} else {
shouldTurnLastFrame = false;
};
}
override public function lastFrameDelayHandler(_arg1:TimerEvent):void{
if (Preloader.bonusAvailable){
StartBonusGame();
};
}
public function StartBonusGame():void{
Preloader.levelStart = (Preloader.levelTotal + 1);
Preloader.bonusPlaying = true;
(parent as MovieClip).gotoAndStop("game");
}
}
}//package
Section 219
//AppearFX (AppearFX)
package {
import flash.media.*;
public dynamic class AppearFX extends Sound {
}
}//package
Section 220
//Background (Background)
package {
import flash.display.*;
public dynamic class Background extends MovieClip {
}
}//package
Section 221
//BlueBall (BlueBall)
package {
import flash.display.*;
public dynamic class BlueBall extends MovieClip {
}
}//package
Section 222
//BodyContactFilter (BodyContactFilter)
package {
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
import Types.*;
public class BodyContactFilter extends b2ContactFilter {
public static var b2_defaultFilter:b2ContactFilter = new b2ContactFilter();
override public function ShouldCollide(_arg1:b2Shape, _arg2:b2Shape):Boolean{
var _local3:b2FilterData = _arg1.GetFilterData();
var _local4:b2FilterData = _arg2.GetFilterData();
var _local5:b2Body = _arg1.GetBody();
var _local6:b2Body = _arg2.GetBody();
if ((((_local5.m_userData.bodyType == BodyType.LOST)) && ((_local5.m_userData.bodyParams[6] == false)))){
return (false);
};
if ((((_local6.m_userData.bodyType == BodyType.LOST)) && ((_local6.m_userData.bodyParams[6] == false)))){
return (false);
};
if ((((_local3.groupIndex == _local4.groupIndex)) && (!((_local3.groupIndex == 0))))){
return ((_local3.groupIndex > 0));
};
var _local7:Boolean = ((!(((_local3.maskBits & _local4.categoryBits) == 0))) && (!(((_local3.categoryBits & _local4.maskBits) == 0))));
return (_local7);
}
}
}//package
Section 223
//BodyContactListener (BodyContactListener)
package {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import flash.display.*;
import flash.events.*;
import Box2D.Dynamics.Contacts.*;
import flash.media.*;
public class BodyContactListener extends b2ContactListener {
public var contactPoints:Array;
public function BodyContactListener(){
contactPoints = new Array();
super();
}
override public function Add(_arg1:b2ContactPoint):void{
contactPoints.push(new CustomContactPoint(_arg1.id.key, _arg1.shape1, _arg1.shape2, _arg1.position, _arg1.normal, 0));
}
public function RemoveBodiesCommonPoints(_arg1:b2Body, _arg2:b2Body):void{
var _local3:int;
while (_local3 < contactPoints.length) {
if ((((((contactPoints[_local3].shape1.GetBody() == _arg1)) && ((contactPoints[_local3].shape2.GetBody() == _arg2)))) || ((((contactPoints[_local3].shape1.GetBody() == _arg2)) && ((contactPoints[_local3].shape2.GetBody() == _arg1)))))){
contactPoints.splice(contactPoints.indexOf(contactPoints[_local3]), 1);
_local3--;
};
_local3++;
};
}
override public function Persist(_arg1:b2ContactPoint):void{
var _local2:int;
while (_local2 < contactPoints.length) {
if (contactPoints[_local2].Equal(_arg1)){
contactPoints[_local2].position.SetV(_arg1.position);
contactPoints[_local2].normal.SetV(_arg1.normal);
};
_local2++;
};
}
public function RemoveBodyPoints(_arg1:b2Body):void{
var _local2:int;
while (_local2 < contactPoints.length) {
if ((((contactPoints[_local2].shape1.GetBody() == _arg1)) || ((contactPoints[_local2].shape2.GetBody() == _arg1)))){
contactPoints.splice(contactPoints.indexOf(contactPoints[_local2]), 1);
_local2--;
};
_local2++;
};
}
override public function Remove(_arg1:b2ContactPoint):void{
var _local2:int;
while (_local2 < contactPoints.length) {
if (contactPoints[_local2].Equal(_arg1)){
contactPoints.splice(contactPoints.indexOf(contactPoints[_local2]), 1);
_local2--;
};
_local2++;
};
}
override public function Result(_arg1:b2ContactResult):void{
var _local2:int;
while (_local2 < contactPoints.length) {
if (contactPoints[_local2].Equal(_arg1)){
contactPoints[_local2].normalImpulse = _arg1.normalImpulse;
};
_local2++;
};
}
public function IsTouching(_arg1:b2Body):Array{
var _local3:CustomContactPoint;
var _local2:Array = new Array();
for each (_local3 in contactPoints) {
if ((((_local3.shape1.GetBody() == _arg1)) || ((_local3.shape2.GetBody() == _arg1)))){
_local2.push(_local3);
};
};
if (_local2.length > 0){
return (_local2);
};
return (null);
}
public function Touch(_arg1:b2Body, _arg2:b2Body):Array{
var _local4:CustomContactPoint;
var _local3:Array = new Array();
for each (_local4 in contactPoints) {
if ((((((_local4.shape1.GetBody() == _arg1)) && ((_local4.shape2.GetBody() == _arg2)))) || ((((_local4.shape1.GetBody() == _arg2)) && ((_local4.shape2.GetBody() == _arg1)))))){
_local3.push(_local4);
};
};
if (_local3.length > 0){
return (_local3);
};
return (null);
}
}
}//package
Section 224
//Bullet (Bullet)
package {
import flash.display.*;
public dynamic class Bullet extends MovieClip {
}
}//package
Section 225
//ButtonFX (ButtonFX)
package {
import flash.media.*;
public dynamic class ButtonFX extends Sound {
}
}//package
Section 226
//CannonFX (CannonFX)
package {
import flash.media.*;
public dynamic class CannonFX extends Sound {
}
}//package
Section 227
//ChangeFX (ChangeFX)
package {
import flash.media.*;
public dynamic class ChangeFX extends Sound {
}
}//package
Section 228
//CheckPointFX (CheckPointFX)
package {
import flash.media.*;
public dynamic class CheckPointFX extends Sound {
}
}//package
Section 229
//Comics (Comics)
package {
import flash.events.*;
import flash.display.*;
import caurina.transitions.*;
import flash.geom.*;
import flash.utils.*;
import Types.*;
import flash.filters.*;
public class Comics extends MovieClip {
public var framesNum:int;// = 1
public var dropShadowDistance:Number;
public var frame:int;// = 1
public var lastFrameDelayTime:int;// = 500
public var frameClipSkewY:Number;
public var dropShadowFilter:DropShadowFilter;
public var preFrameTime:int;// = 0
public var lastFrameDelayTimer:Timer;
public var frameClip:Sprite;
public var shouldTurnLastFrame:Boolean;// = true
public function Comics():void{
addEventListener(MouseEvent.CLICK, comicsClickHandler, false, 0, true);
addEventListener(Event.ENTER_FRAME, comicsEnterFrameHandler, false, 0, true);
Preloader.sound.Play(SoundID.LOOP1);
}
public function comicsClickHandler(_arg1:MouseEvent):void{
if (preFrameTime > 10){
if ((((((frame <= framesNum)) && (shouldTurnLastFrame))) || ((((frame < framesNum)) && (!(shouldTurnLastFrame)))))){
if (frameClip){
removeChild(frameClip);
frameClip = null;
};
frameClip = (getChildByName(("comicsFrame" + frame)) as Sprite);
if (frameClip){
Tweener.addTween(frameClip, {x:-300, scaleX:0.5, time:0.5, transition:"easeInCubic"});
frameClipSkewY = 0;
Tweener.addTween(this, {frameClipSkewY:-0.25, time:0.5, transition:"easeInCubic"});
dropShadowDistance = 150;
dropShadowFilter = new DropShadowFilter(dropShadowDistance, 5, 0, 0.2, 0, 0, 1, 1, false, false, false);
frameClip.filters = [dropShadowFilter];
Tweener.addTween(this, {dropShadowDistance:20, time:0.5, transition:"easeInCubic"});
frame++;
preFrameTime = 0;
Preloader.sound.Play(SoundID.TURN_PAGE);
};
};
if (frame > framesNum){
lastFrameDelayTimer = new Timer(lastFrameDelayTime, 1);
lastFrameDelayTimer.addEventListener(TimerEvent.TIMER, lastFrameDelayHandler, false, 0, true);
lastFrameDelayTimer.start();
};
};
}
public function comicsEnterFrameHandler(_arg1:Event):void{
var _local2:Matrix;
var _local3:Array;
if (frameClip){
_local2 = frameClip.transform.matrix;
_local2.b = frameClipSkewY;
frameClip.transform.matrix = _local2;
_local3 = frameClip.filters;
_local3[0].distance = dropShadowDistance;
frameClip.filters = _local3;
};
preFrameTime++;
}
public function PrepearToDie():void{
removeEventListener(MouseEvent.CLICK, comicsClickHandler);
removeEventListener(Event.ENTER_FRAME, comicsEnterFrameHandler);
if (this.parent){
this.parent.removeChild(this);
};
frameClip = null;
lastFrameDelayTimer = null;
dropShadowFilter = null;
}
public function lastFrameDelayHandler(_arg1:TimerEvent):void{
PrepearToDie();
}
}
}//package
Section 230
//CreekFX (CreekFX)
package {
import flash.media.*;
public dynamic class CreekFX extends Sound {
}
}//package
Section 231
//CrownFX (CrownFX)
package {
import flash.media.*;
public dynamic class CrownFX extends Sound {
}
}//package
Section 232
//CustomContactPoint (CustomContactPoint)
package {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import Box2D.Dynamics.Contacts.*;
public class CustomContactPoint {
public var normal:b2Vec2;
public var position:b2Vec2;
public var shape1:b2Shape;
public var shape2:b2Shape;
public var normalImpulse:Number;
public var key:uint;
public function CustomContactPoint(_arg1:uint, _arg2:b2Shape, _arg3:b2Shape, _arg4:b2Vec2, _arg5:b2Vec2, _arg6:Number){
position = new b2Vec2();
normal = new b2Vec2();
super();
key = _arg1;
shape1 = _arg2;
shape2 = _arg3;
position.SetV(_arg4);
normal.SetV(_arg5);
normalImpulse = _arg6;
}
public function Equal(_arg1):Boolean{
if ((((((this.key == _arg1.id.key)) && ((this.shape1 == _arg1.shape1)))) && ((this.shape2 == _arg1.shape2)))){
return (true);
};
return (false);
}
}
}//package
Section 233
//Dark (Dark)
package {
import flash.display.*;
public dynamic class Dark extends MovieClip {
}
}//package
Section 234
//DieAnimation (DieAnimation)
package {
import flash.display.*;
public dynamic class DieAnimation extends MovieClip {
public function DieAnimation(){
addFrameScript(5, frame6);
}
function frame6(){
stop();
}
}
}//package
Section 235
//DieFX (DieFX)
package {
import flash.media.*;
public dynamic class DieFX extends Sound {
}
}//package
Section 236
//EmbedClip (EmbedClip)
package {
import flash.display.*;
public dynamic class EmbedClip extends MovieClip {
public function EmbedClip(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 237
//EmbedPreloader (EmbedPreloader)
package {
import flash.display.*;
public dynamic class EmbedPreloader extends MovieClip {
}
}//package
Section 238
//ferryBlue (ferryBlue)
package {
import flash.display.*;
public dynamic class ferryBlue extends MovieClip {
public function ferryBlue(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 239
//ferryGreen (ferryGreen)
package {
import flash.display.*;
public dynamic class ferryGreen extends MovieClip {
public function ferryGreen(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 240
//ferryRed (ferryRed)
package {
import flash.display.*;
public dynamic class ferryRed extends MovieClip {
public function ferryRed(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package
Section 241
//FireFX (FireFX)
package {
import flash.media.*;
public dynamic class FireFX extends Sound {
}
}//package
Section 242
//Flag (Flag)
package {
import flash.display.*;
public class Flag extends MovieClip {
public function Flag():void{
}
}
}//package
Section 243
//FlagDis (FlagDis)
package {
public dynamic class FlagDis extends Flag {
}
}//package
Section 244
//FlagFX (FlagFX)
package {
import flash.media.*;
public dynamic class FlagFX extends Sound {
}
}//package
Section 245
//FlagShip (FlagShip)
package {
public dynamic class FlagShip extends Flag {
}
}//package
Section 246
//Game (Game)
package {
import flash.display.*;
import ascb.util.*;
import flash.events.*;
import flash.geom.*;
import utils.*;
import Types.*;
import flash.filters.*;
import flash.text.*;
import com.kongregate.as3.client.*;
import Levels.*;
import caurina.transitions.*;
import flash.ui.*;
import com.midasplayer.*;
import flash.net.*;
public class Game extends MovieClip {
public var kingInGameButton:SimpleButton;
public var scoreLabel:MovieClip;
public var levelText:TextField;
public var sound:SoundManager;
public var pauseSprite:PauseMenu;
public var scoreText:TextField;
public var walktroughButton:SimpleButton;
public var restartButton:SimpleButton;
public var starText:TextField;
private var m_currLevel:Level;
public var kongregate:KongregateAPI;
public var menuButton:SimpleButton;
private var pause:Boolean;// = false
private var m_currId:int;
public function Game():void{
m_currId = Preloader.levelStart;
sound = Preloader.sound;
super();
addFrameScript(0, frame1);
pauseSprite.visible = false;
if (!Preloader.continueGame){
if (Preloader.levelStart == 1){
Preloader.scoreAvailable = true;
} else {
Preloader.scoreAvailable = false;
};
Preloader.score = 0;
} else {
Preloader.continueGame = false;
};
if (!Preloader.scoreAvailable){
scoreLabel.alpha = 0.7;
scoreText.alpha = 0.7;
};
SetLevel(m_currId);
addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
Preloader.stageLink.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler, false, 0, true);
sound.StopLoop();
sound.PlayRandomLoop();
}
public function QuitTo(_arg1:String, _arg2:Boolean=false):void{
sound.StopAll();
PrepearToDie();
ResetLevelsInfo();
Preloader.continueGame = _arg2;
if (!Preloader.continueGame){
Level.instructions[3] = false;
};
Preloader.bonusPlaying = false;
(parent as MovieClip).gotoAndStop(_arg1);
parent.removeChild(this);
}
public function buttonOverHandler(_arg1:MouseEvent):void{
sound.Play(SoundID.MENU_MOVE);
}
public function ResetLevelsInfo():void{
Level.lastCheckNum = 0;
Level.starsCollected = 0;
Level.diesOnThisLevel = 0;
Level.starsCollectedNumbers.splice(0, Level.starsCollectedNumbers.length);
Level.instructions = [false, false, false, Level.instructions[3], false];
}
private function KeyDownHandler(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case 80:
case Keyboard.ESCAPE:
Pause();
break;
case 82:
Restart();
break;
case 77:
sound.isMusic = !(sound.isMusic);
sound.isSoundFX = sound.isMusic;
pauseSprite.RefreshSoundButtons();
if (sound.isMusic){
sound.Play(SoundID.PAUSE);
};
break;
};
}
public function kingInGameButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openSignLink();
sound.Play(SoundID.MENU_SELECT);
}
private function PrepearToDie():void{
removeEventListener(Event.ENTER_FRAME, Update);
Preloader.stageLink.removeEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);
Tweener.removeAllTweens();
m_currLevel.PrepearToDie();
m_currLevel = null;
}
public function Pause():void{
var _local1:Array;
var _local2:Number;
var _local3:BitmapFilter;
var _local4:BlurFilter;
var _local5:Matrix;
var _local6:BitmapData;
var _local7:Bitmap;
pause = !(pause);
if (pause){
Tweener.pauseAllTweens();
_local1 = new Array();
_local2 = 0.333;
_local1 = _local1.concat([_local2, _local2, _local2, 0, 0]);
_local1 = _local1.concat([_local2, _local2, _local2, 0, 0]);
_local1 = _local1.concat([_local2, _local2, _local2, 0, 0]);
_local1 = _local1.concat([0, 0, 0, 1, 0]);
_local3 = new ColorMatrixFilter(_local1);
_local4 = new BlurFilter(2, 2);
_local5 = new Matrix(1, 0, 0, 1, m_currLevel.x, m_currLevel.y);
_local6 = new BitmapData(Preloader.stageWidth, Preloader.stageHeight);
_local6.draw(m_currLevel, _local5);
_local6.applyFilter(_local6, _local6.rect, new Point(0, 0), _local3);
_local6.applyFilter(_local6, _local6.rect, new Point(0, 0), _local4);
_local7 = new Bitmap(_local6);
_local7.x = (-(Preloader.stageWidth) / 2);
_local7.y = (-(Preloader.stageHeight) / 2);
_local7.name = "screenBitmap";
pauseSprite.addChildAt(_local7, 0);
pauseSprite.visible = true;
pauseSprite.RefreshSoundButtons();
removeEventListener(Event.ENTER_FRAME, Update);
sound.StopFX();
} else {
Tweener.resumeAllTweens();
pauseSprite.removeChild(pauseSprite.getChildByName("screenBitmap"));
pauseSprite.visible = false;
addEventListener(Event.ENTER_FRAME, Update, false, 0, true);
};
sound.Play(SoundID.PAUSE);
}
public function restartButtonClickHandler(_arg1:MouseEvent):void{
Restart();
sound.Play(SoundID.MENU_SELECT);
}
function frame1(){
menuButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
restartButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
kingInGameButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
walktroughButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
menuButton.addEventListener(MouseEvent.CLICK, menuButtonClickHandler, false, 0, true);
restartButton.addEventListener(MouseEvent.CLICK, restartButtonClickHandler, false, 0, true);
kingInGameButton.addEventListener(MouseEvent.CLICK, kingInGameButtonClickHandler, false, 0, true);
walktroughButton.addEventListener(MouseEvent.CLICK, walktroughButtonClickHandler, false, 0, true);
}
public function SetLevel(_arg1:int):void{
sound.StopFX();
if (m_currLevel){
removeChild(m_currLevel);
m_currLevel.PrepearToDie();
m_currLevel = null;
};
m_currId = _arg1;
var _local2:Class = (Preloader.stageLoaderInfo.applicationDomain.getDefinition(("Levels.Level_" + m_currId.toString())) as Class);
m_currLevel = (getWR(new (_local2)).object as Level);
addChildAt(m_currLevel, 0);
RefreshBoard();
}
public function walktroughButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openSignLink();
Preloader.sound.Play(SoundID.MENU_SELECT);
}
public function RefreshBoard():void{
var _local1:NumberFormat = new NumberFormat("00000");
var _local2:NumberFormat = new NumberFormat("00");
levelText.text = ("Level " + _local2.format(m_currId));
starText.text = ((Level.starsCollected + "/") + m_currLevel.starsNeed);
scoreText.text = _local1.format(Preloader.score);
}
private function Restart():void{
if (pause){
Pause();
};
Preloader.score = (Preloader.score - 100);
Level.diesOnThisLevel++;
SetLevel(m_currId);
}
public function Update(_arg1:Event):void{
m_currLevel.Update(_arg1);
switch (m_currLevel.GetStatus()){
case LevelStatus.LOSE:
Preloader.score = (Preloader.score - 100);
Level.diesOnThisLevel++;
SetLevel(m_currId);
break;
case LevelStatus.WIN:
m_currId++;
Preloader.levelStart = m_currId;
if (Preloader.levelAvailable < m_currId){
Preloader.levelAvailable = m_currId;
Preloader.levelSave.data.levelAvailable = Preloader.levelAvailable;
Preloader.levelSave.flush(100);
};
ResetLevelsInfo();
if (m_currId <= Preloader.levelTotal){
if ((((((m_currId == 5)) || ((m_currId == 10)))) || ((m_currId == 15)))){
QuitTo("selectLevelMenu", true);
} else {
SetLevel(m_currId);
};
} else {
if (Preloader.bonusPlaying){
if (m_currId <= (Preloader.levelTotal + Preloader.bonusTotal)){
SetLevel(m_currId);
} else {
QuitTo("afterBonusLevelsComics");
};
} else {
if (Preloader.scoreAvailable){
switch (Preloader.scoreID){
case ScoreID.KING:
KingAPI.submitScore(Preloader.score);
break;
case ScoreID.KONGREGATE:
kongregate = KongregateAPI.getInstance();
kongregate.stats.submit("Score", Preloader.score);
break;
};
};
QuitTo("afterGameComics");
};
};
break;
};
}
public function menuButtonClickHandler(_arg1:MouseEvent):void{
Pause();
}
private function getWR(_arg1):WeakReference{
return (new WeakReference(_arg1));
}
}
}//package
Section 247
//GameObject (GameObject)
package {
import Box2D.Dynamics.*;
import flash.display.*;
import Types.*;
import caurina.transitions.*;
public class GameObject extends MovieClip {
public var clip:MovieClip;
private var levelIn:Level;
public var type:int;
private var objParams:Array;
public function GameObject(_arg1:MovieClip, _arg2:int, _arg3:Array):void{
var _local4:Boolean;
objParams = new Array();
super();
clip = _arg1;
type = _arg2;
levelIn = (clip.parent as Level);
objParams = _arg3.slice();
switch (type){
case ObjectType.BUTTON:
clip.stop();
if ((_arg3[0] is b2Body)){
objParams[0] = _arg3[0];
} else {
objParams[0] = levelIn.GetBodyByClip(_arg3[0]);
};
break;
case ObjectType.CHECKPOINT:
clip.stop();
if (Level.lastCheckNum >= objParams[0]){
clip.gotoAndStop(10);
};
break;
case ObjectType.FLAG:
clip.stop();
break;
case ObjectType.STAR:
_local4 = false;
if (objParams[0] > ((Level.lastCheckNum == 0)) ? -1 : levelIn.starCheckPoint[(Level.lastCheckNum - 1)]){
_local4 = true;
} else {
if (Level.starsCollectedNumbers.indexOf(objParams[0]) == -1){
_local4 = true;
};
};
if (_local4){
if (Level.starsCollectedNumbers.indexOf(objParams[0]) != -1){
Level.starsCollectedNumbers.splice(Level.starsCollectedNumbers.indexOf(objParams[0]), 1);
Preloader.score = (Preloader.score - 100);
};
objParams.push(true);
Level.starsCollected = Level.starsCollectedNumbers.length;
break;
} else {
levelIn.DestroyObject(this);
};
break;
};
}
public function Update():void{
var _local1:int;
switch (type){
case ObjectType.PIN:
if (levelIn.player.HitTestObjectControlPoints(clip, ((levelIn.id == 12)) ? true : false)){
levelIn.player.Kill();
};
break;
case ObjectType.BUTTON:
if (((levelIn.player.HitTestObjectControlPoints(clip)) && ((clip.currentFrame == 1)))){
clip.gotoAndStop(2);
switch (objParams[1]){
case ButtonAction.DESTROY:
levelIn.DestroyBody(objParams[0]);
break;
case ButtonAction.FALL:
levelIn.CreateBody(objParams[0].m_userData.clip, BodyType.STANDART, objParams[0].m_userData.geomType, objParams[0].m_userData.bodyParams, objParams[0].m_userData.geomParams);
levelIn.m_world.DestroyBody(objParams[0]);
break;
};
};
break;
case ObjectType.FLAG:
if (((levelIn.player.HitTestObjectControlPoints(clip)) && ((clip.currentFrame == 1)))){
if ((((Level.starsCollected >= levelIn.starsNeed)) && (levelIn.levelWinTerm))){
clip.play();
levelIn.SetStatus(LevelStatus.WIN);
levelIn.sound.Play(SoundID.FLAG);
} else {
if (((((!((levelIn.id == 20))) && (!((levelIn.id == 10))))) && (!((levelIn.id == 23))))){
if (levelIn.player.Tell((("You need to collect " + (levelIn.starsNeed - Level.starsCollected)) + " more stars."))){
levelIn.sound.Play(SoundID.NOT_AVAILABLE);
};
};
if ((((levelIn.id == 23)) && (!(levelIn.levelWinTerm)))){
if (levelIn.player.Tell("Kick the golf ball into the hole.")){
levelIn.sound.Play(SoundID.NOT_AVAILABLE);
};
};
};
};
if (clip.currentFrame == 20){
clip.stop();
};
break;
case ObjectType.CHECKPOINT:
if (((levelIn.player.HitTestObjectControlPoints(clip)) && ((clip.currentFrame == 1)))){
if (objParams[0] > Level.lastCheckNum){
Level.lastCheckNum = objParams[0];
levelIn.sound.Play(SoundID.CHECKPOINT);
};
clip.play();
};
if (clip.currentFrame == 10){
clip.stop();
};
break;
case ObjectType.STAR:
if (((levelIn.player.hitTestObject(clip)) && (objParams[1]))){
Level.starsCollected++;
Preloader.score = (Preloader.score + 100);
levelIn.sound.Play(SoundID.STAR_COLLECT);
_local1 = 0;
while (_local1 < levelIn.checkPointsNum) {
if (objParams[0] <= levelIn.starCheckPoint[_local1]){
Level.starsCollectedNumbers.push(objParams[0]);
break;
};
_local1++;
};
(levelIn.parent as Game).RefreshBoard();
objParams[1] = false;
Tweener.addTween(clip, {scaleX:0, scaleY:0, time:0.5, transition:"easeOutQuart"});
};
if (clip.scaleX == 0){
levelIn.DestroyObject(this);
};
break;
};
}
}
}//package
Section 248
//HelpText (HelpText)
package {
import flash.display.*;
import flash.text.*;
public dynamic class HelpText extends MovieClip {
public var text:TextField;
}
}//package
Section 249
//JumpFX (JumpFX)
package {
import flash.media.*;
public dynamic class JumpFX extends Sound {
}
}//package
Section 250
//Level (Level)
package {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import com.boristhebrave.Box2D.Controllers.*;
import flash.display.*;
import flash.events.*;
import Box2D.Dynamics.Contacts.*;
import flash.geom.*;
import Info.*;
import Types.*;
import flash.utils.*;
import caurina.transitions.*;
import flash.ui.*;
public class Level extends Sprite {
protected var m_controllers:Array;
public var sound:SoundManager;
private var m_boundaryListener:b2BoundaryListener;
private var blueBall:BlueBall;
public var starsNeed:int;// = 0
public var m_ground:b2Body;
public var id:int;
public var dialogues:Array;
public var killHeight:Number;// = 5000
private var Left:Boolean;// = false
public var background:Sprite;
private var jumpTimer:Timer;
public var m_joint:Sprite;
private var Up:Boolean;// = false
public var m_world:b2World;
public var levelWinTerm:Boolean;// = true
private var Down:Boolean;// = false
public var filterListener:BodyContactFilter;
protected var playerStartPosition:Point;
protected var m_bodies:Array;
public var m_sprite:Sprite;
public var starCheckPoint:Array;
public var player:Player;
private var m_objects:Array;
public var contactListener:BodyContactListener;
public var status:int;
public var checkPointsNum:int;// = 0
private var Right:Boolean;// = false
public static const m_physScale:Number = 30;
public static const m_timeStep:Number = 0.0333333333333333;
public static const m_iterations:int = 10;
public static var starsCollectedNumbers:Array = new Array();
public static var instructions:Array = [false, false, false, false, false];
public static var starsCollected:int = 0;
public static var lastCheckNum:int = 0;
public static var diesOnThisLevel:int = 0;
public function Level():void{
starCheckPoint = new Array();
m_joint = new Sprite();
contactListener = new BodyContactListener();
filterListener = new BodyContactFilter();
m_boundaryListener = new b2BoundaryListener();
m_objects = new Array();
m_bodies = new Array();
m_controllers = new Array();
dialogues = [false];
sound = Preloader.sound;
super();
m_sprite = this;
m_joint.x = 0;
m_joint.y = 0;
m_sprite.addChild(m_joint);
var _local1:b2AABB = new b2AABB();
_local1.lowerBound.Set(-1000, -1000);
_local1.upperBound.Set(1000, 1000);
var _local2:b2Vec2 = new b2Vec2(0, 10);
var _local3:Boolean;
m_world = new b2World(_local1, _local2, _local3);
m_ground = m_world.GetGroundBody();
m_world.SetContactListener(contactListener);
m_world.SetContactFilter(filterListener);
m_world.SetBoundaryListener(m_boundaryListener);
var _local4:b2DebugDraw = new b2DebugDraw();
_local4.m_sprite = m_joint;
_local4.m_drawScale = m_physScale;
_local4.m_fillAlpha = 1;
_local4.m_lineThickness = 1;
m_world.SetDebugDraw(_local4);
CreateFinishedObjects();
var _local5:* = getChildByName(("checkPoint" + lastCheckNum.toString()));
playerStartPosition = new Point((_local5.x - 20), _local5.y);
player = new Player(playerStartPosition, this);
jumpTimer = new Timer(500, 1);
SetControl();
var _local6:Rectangle = getBounds(this);
killHeight = ((_local6.y + _local6.height) + 250);
background = new Background();
background.x = playerStartPosition.x;
background.y = playerStartPosition.y;
background.cacheAsBitmap = true;
m_sprite.addChildAt(background, 0);
SetStatus(LevelStatus.PLAY);
if (((((!(Preloader.scoreAvailable)) && (!(instructions[3])))) && (!(Preloader.bonusPlaying)))){
player.Tell("Start from level 1 to submit score.");
instructions[3] = true;
};
if (((!((Level.diesOnThisLevel == 0))) && (((Level.diesOnThisLevel % 5) == 0)))){
player.Tell("See walktrough on King.com");
};
}
protected function CreateObject(_arg1:MovieClip, _arg2:int, _arg3:Array):GameObject{
var _local4:GameObject = new GameObject(_arg1, _arg2, _arg3);
m_objects.push(_local4);
return (_local4);
}
private function CreateFinishedObjects():void{
var _local2:int;
var _local3:*;
var _local1:int;
_local2 = 0;
while (_local2 < numChildren) {
_local3 = getChildAt(_local2);
if ((((_local3 is Pin)) || ((_local3 is Pin10)))){
CreateObject(_local3, ObjectType.PIN, []);
};
if ((_local3 is Flag)){
CreateObject(_local3, ObjectType.FLAG, []);
};
_local2++;
};
_local2 = 0;
while (_local2 < 10) {
_local3 = getChildByName(("checkPoint" + _local2.toString()));
if (_local3){
CreateObject(_local3, ObjectType.CHECKPOINT, [_local2]);
} else {
checkPointsNum = _local2;
break;
};
_local2++;
};
_local2 = 0;
while (_local2 < 30) {
if (!getChildByName(("star" + _local2.toString()))){
starsNeed = _local2;
break;
};
_local2++;
};
switch (id){
case 2:
starCheckPoint = [4, 5];
break;
case 3:
starCheckPoint = [2, 4, 6];
break;
case 4:
starCheckPoint = [3, 8];
break;
case 6:
starCheckPoint = [7, 11];
break;
case 13:
starCheckPoint = [7, 10];
break;
case 16:
starCheckPoint = [1, 4];
break;
default:
starCheckPoint = [(starsNeed - 1)];
break;
};
_local2 = 0;
while (_local2 < 30) {
_local3 = getChildByName(("star" + _local2.toString()));
if (_local3){
CreateObject(_local3, ObjectType.STAR, [_local2]);
} else {
break;
};
_local2++;
};
}
public function BodyInBuoyancy(_arg1:b2Body, _arg2:int=-1, _arg3:b2Controller=null):Boolean{
var _local4:b2Controller;
for each (_local4 in m_controllers) {
if ((((((_local4.m_userData.controllerType == ControllerType.BUOYANCY)) && (!((_local4 == _arg3))))) && ((((_arg2 == -1)) || (((!((_arg2 == -1))) && ((_local4.m_userData.controllerParams[0] == _arg2)))))))){
if ((_local4 as b2BuoyancyController).GetBodies().indexOf(_arg1) != -1){
return (true);
};
};
};
return (false);
}
private function KeyDownHandler(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case Keyboard.LEFT:
case 65:
Left = true;
break;
case Keyboard.RIGHT:
case 68:
Right = true;
break;
case Keyboard.UP:
case 87:
case Keyboard.SPACE:
Up = true;
break;
case Keyboard.DOWN:
case 83:
Down = true;
break;
};
}
public function GetBodyAtPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=true):Array{
var _local12:b2Shape;
var _local13:Boolean;
var _local4:Array = new Array();
var _local5:b2Vec2 = new b2Vec2(_arg1, _arg2);
var _local6:b2AABB = new b2AABB();
_local6.lowerBound.Set((_arg1 - 0.001), (_arg2 - 0.001));
_local6.upperBound.Set((_arg1 + 0.001), (_arg2 + 0.001));
var _local7 = 10;
var _local8:Array = new Array();
var _local9:int = m_world.Query(_local6, _local8, _local7);
var _local10:b2Body;
var _local11:int;
while (_local11 < _local9) {
if ((((_local8[_local11].GetBody().IsStatic() == false)) || (_arg3))){
_local12 = (_local8[_local11] as b2Shape);
_local13 = (_local8[_local11] as b2Shape).TestPoint(_local12.GetBody().GetXForm(), _local5);
if (_local13){
_local10 = _local12.GetBody();
_local4.push(_local10);
};
};
_local11++;
};
return (_local4);
}
public function DrawJoint(_arg1:b2Joint):void{
var _local2:b2Body;
var _local3:b2Body;
var _local8:b2PulleyJoint;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:Number;
var _local12:int;
var _local13:int;
var _local14:Rectangle;
var _local15:Rectangle;
_local2 = _arg1.m_body1;
_local3 = _arg1.m_body2;
var _local4:b2Vec2 = _local2.GetPosition();
var _local5:b2Vec2 = _local3.GetPosition();
var _local6:b2Vec2 = _arg1.GetAnchor1();
var _local7:b2Vec2 = _arg1.GetAnchor2();
switch (_arg1.m_type){
case b2Joint.e_distanceJoint:
DrawRope(new Point((_local6.x * m_physScale), (_local6.y * m_physScale)), new Point((_local7.x * m_physScale), (_local7.y * m_physScale)));
break;
case b2Joint.e_revoluteJoint:
DrawNail(new Point((_local7.x * m_physScale), (_local7.y * m_physScale)), 2);
break;
case b2Joint.e_pulleyJoint:
_local8 = (_arg1 as b2PulleyJoint);
_local9 = _local8.GetGroundAnchor1();
_local10 = _local8.GetGroundAnchor2();
_local11 = 20;
_local12 = 3;
_local13 = 3;
_local14 = _local2.m_userData.clip.getBounds(this);
_local15 = _local3.m_userData.clip.getBounds(this);
DrawRope(new Point((_local9.x * m_physScale), (_local9.y * m_physScale)), new Point((_local6.x * m_physScale), (_local14.y - _local11)), (_local8.GetLength1() * m_physScale));
DrawRope(new Point((_local6.x * m_physScale), (_local14.y - _local11)), new Point((_local14.x + _local12), (_local14.y + _local13)));
DrawRope(new Point((_local6.x * m_physScale), (_local14.y - _local11)), new Point(((_local14.x + _local14.width) - _local12), (_local14.y + _local13)));
DrawNail(new Point((_local6.x * m_physScale), (_local14.y - _local11)));
DrawNail(new Point((_local14.x + _local12), (_local14.y + _local13)));
DrawNail(new Point(((_local14.x + _local14.width) - _local12), (_local14.y + _local13)));
DrawRope(new Point((_local10.x * m_physScale), (_local10.y * m_physScale)), new Point((_local7.x * m_physScale), (_local15.y - _local11)), (_local8.GetLength2() * m_physScale));
DrawRope(new Point((_local7.x * m_physScale), (_local15.y - _local11)), new Point((_local15.x + _local12), (_local15.y + _local13)));
DrawRope(new Point((_local7.x * m_physScale), (_local15.y - _local11)), new Point(((_local15.x + _local15.width) - _local12), (_local15.y + _local13)));
DrawNail(new Point((_local7.x * m_physScale), (_local15.y - _local11)));
DrawNail(new Point((_local15.x + _local12), (_local15.y + _local13)));
DrawNail(new Point(((_local15.x + _local15.width) - _local12), (_local15.y + _local13)));
DrawRope(new Point((_local9.x * m_physScale), (_local9.y * m_physScale)), new Point((_local10.x * m_physScale), (_local10.y * m_physScale)), (_local8.GetLength2() * m_physScale));
DrawNail(new Point(((_local9.x * m_physScale) + 2), ((_local9.y * m_physScale) + 2)), 5);
DrawNail(new Point(((_local10.x * m_physScale) - 2), ((_local10.y * m_physScale) + 2)), 5);
break;
};
}
public function DrawRope(_arg1:Point, _arg2:Point, _arg3:Number=1):void{
var _local17:Point;
var _local4:Number = (_arg2.x - _arg1.x);
var _local5:Number = (_arg2.y - _arg1.y);
var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
var _local7:Number = Math.acos((_local4 / _local6));
var _local8:Number = 3;
var _local9:Number = ((_local8 / 2) * Math.cos(_local7));
var _local10:Number = ((_local8 / 2) * Math.sin(_local7));
m_joint.graphics.lineStyle(0.5, 0x333333, 1);
m_joint.graphics.beginFill(13147213, 1);
m_joint.graphics.moveTo((_arg1.x + _local10), (_arg1.y - _local9));
m_joint.graphics.lineTo((_arg1.x - _local10), (_arg1.y + _local9));
m_joint.graphics.lineTo((_arg2.x - _local10), (_arg2.y + _local9));
m_joint.graphics.lineTo((_arg2.x + _local10), (_arg2.y - _local9));
m_joint.graphics.endFill();
var _local11:Number = 12;
var _local12:Number = (Math.PI / 10);
var _local13:Number = (_local8 / (2 * Math.sin(_local12)));
var _local14:Number = (_local13 * Math.cos(((Math.PI - _local7) - _local12)));
var _local15:Number = (_local13 * Math.sin(((Math.PI - _local7) - _local12)));
m_joint.graphics.lineStyle(0.25, 0x333333, 0.5);
var _local16:Number = ((_local11 / 2) + (_arg3 % _local11));
while (_local16 < _local6) {
_local17 = new Point((_arg1.x + (_local16 * Math.cos(_local7))), (_arg1.y + (_local16 * Math.sin(_local7))));
m_joint.graphics.moveTo((_local17.x - _local14), (_local17.y + _local15));
m_joint.graphics.lineTo((_local17.x + _local14), (_local17.y - _local15));
_local16 = (_local16 + _local11);
};
}
private function loseStatusTimerHandler(_arg1:TimerEvent):void{
status = LevelStatus.LOSE;
}
public function DestroyController(_arg1:b2Controller):void{
var _local2:int = m_controllers.indexOf(_arg1);
if (_local2 != -1){
m_controllers.splice(_local2, 1);
};
if (((((_arg1.m_userData.clip) && (_arg1.m_userData.clip.parent))) && (_arg1.m_userData.clip.parent.contains(_arg1.m_userData.clip)))){
_arg1.m_userData.clip.parent.removeChild(_arg1.m_userData.clip);
};
}
public function DrawNail(_arg1:Point, _arg2:Number=2):void{
m_joint.graphics.lineStyle(1, 0x444444, 1);
m_joint.graphics.beginFill(0xBBBBBB, 1);
m_joint.graphics.drawCircle(_arg1.x, _arg1.y, _arg2);
m_joint.graphics.endFill();
m_joint.graphics.lineStyle();
m_joint.graphics.beginFill(0, 1);
m_joint.graphics.drawCircle(_arg1.x, _arg1.y, 1);
m_joint.graphics.endFill();
}
public function DestroyBody(_arg1:b2Body, _arg2:Boolean=false):void{
contactListener.RemoveBodyPoints(_arg1);
if (m_bodies.indexOf(_arg1) != -1){
m_bodies.splice(m_bodies.indexOf(_arg1), 1);
};
if (_arg2){
Tweener.addTween(_arg1.m_userData.clip, {scaleX:0, scaleY:0, time:0.5, transition:"easeOutQuart"});
sound.Play(SoundID.REMOVE);
} else {
if (((((((_arg1.m_userData) && (_arg1.m_userData.clip))) && (_arg1.m_userData.clip.parent))) && (_arg1.m_userData.clip.parent.contains(_arg1.m_userData.clip)))){
_arg1.m_userData.clip.parent.removeChild(_arg1.m_userData.clip);
};
};
m_world.DestroyBody(_arg1);
}
public function PrepearToDie():void{
var _local3:int;
jumpTimer.stop();
Tweener.removeAllTweens();
Preloader.stageLink.removeEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);
Preloader.stageLink.removeEventListener(KeyboardEvent.KEY_UP, KeyUpHandler);
var _local1:b2Body = m_world.m_bodyList;
while (_local1) {
DestroyBody(_local1);
_local1 = _local1.m_next;
};
var _local2:b2Joint = m_world.m_jointList;
while (_local2) {
DestroyJoint(_local2);
_local2 = _local2.m_next;
};
_local3 = 0;
while (_local3 < m_controllers.length) {
DestroyController(m_controllers[_local3]);
_local3++;
};
_local3 = 0;
while (_local3 < m_objects.length) {
DestroyObject(m_objects[_local3]);
_local3++;
};
_local3 = 0;
while (_local3 < numChildren) {
removeChildAt(_local3);
_local3++;
};
id = null;
status = null;
killHeight = null;
starsNeed = null;
player = null;
playerStartPosition = null;
Left = null;
Right = null;
Up = null;
Down = null;
jumpTimer = null;
m_world = null;
m_sprite = null;
m_joint = null;
m_ground = null;
contactListener = null;
filterListener = null;
m_boundaryListener = null;
m_objects = null;
m_bodies = null;
m_controllers = null;
background = null;
starCheckPoint = null;
}
private function KeyUpHandler(_arg1:KeyboardEvent):void{
switch (_arg1.keyCode){
case Keyboard.LEFT:
case 65:
Left = false;
break;
case Keyboard.RIGHT:
case 68:
Right = false;
break;
case Keyboard.UP:
case 87:
case Keyboard.SPACE:
Up = false;
break;
case Keyboard.DOWN:
case 83:
Down = false;
break;
};
}
public function DestroyObject(_arg1:GameObject):void{
var _local2:int = m_objects.indexOf(_arg1);
if (_local2 != -1){
m_objects.splice(_local2, 1);
};
var _local3:b2Body = GetBodyByClip(_arg1.clip);
if (_local3){
DestroyBody(_local3);
} else {
if (((((_arg1.clip) && (_arg1.clip.parent))) && (_arg1.clip.parent.contains(_arg1.clip)))){
_arg1.clip.parent.removeChild(_arg1.clip);
};
};
}
protected function SetBodiesFilter(_arg1:Array, _arg2:int):void{
var _local5:b2Body;
var _local6:b2Shape;
var _local3:b2FilterData = new b2FilterData();
_local3.groupIndex = _arg2;
var _local4:int;
while (_local4 < _arg1.length) {
if ((_arg1[_local4] is b2Body)){
_local5 = _arg1[_local4];
} else {
_local5 = GetBodyByClip(_arg1[_local4]);
};
_local6 = _local5.m_shapeList;
while (_local6) {
_local6.SetFilterData(_local3);
m_world.Refilter(_local6);
_local6 = _local6.m_next;
};
_local4++;
};
}
public function CreateSimpleJoint(_arg1, _arg2:int, _arg3:Array):b2Joint{
var _local4:b2Joint;
var _local5:JointInfo;
var _local6:b2DistanceJointDef;
var _local7:Number;
var _local8:b2Vec2;
var _local9:b2Vec2;
var _local10:b2Body;
var _local11:b2Body;
var _local12:b2RevoluteJointDef;
var _local13:b2Vec2;
var _local14:b2PrismaticJointDef;
var _local15:b2Vec2;
_local5 = new JointInfo(null, _arg2, _arg3);
switch (_arg2){
case JointType.DISTANCE:
_local6 = new b2DistanceJointDef();
_local7 = _arg3[0];
_local8 = _arg1[0];
_local9 = _arg1[1];
_local10 = GetBodyAtPoint(_local8.x, _local8.y)[0];
_local11 = GetBodyAtPoint(_local9.x, _local9.y)[0];
if (_local10 == null){
_local10 = m_ground;
};
if (_local11 == null){
_local11 = m_ground;
};
_local6.Initialize(_local10, _local11, _local8, _local9);
_local4 = m_world.CreateJoint(_local6);
break;
case JointType.REVOLUTE:
_local12 = new b2RevoluteJointDef();
_local13 = _arg1[0];
_local10 = GetBodyAtPoint(_local13.x, _local13.y)[1];
_local11 = GetBodyAtPoint(_local13.x, _local13.y)[0];
if (_local10 == null){
_local10 = m_ground;
};
if (_local11 == null){
_local11 = m_ground;
};
_local12.enableMotor = _arg3[0];
_local12.enableLimit = _arg3[1];
if (_local12.enableMotor){
_local12.motorSpeed = _arg3[2];
_local12.maxMotorTorque = _arg3[3];
};
if (_local12.enableLimit){
_local12.lowerAngle = ((_arg3[4] * Math.PI) / 180);
_local12.upperAngle = ((_arg3[5] * Math.PI) / 180);
};
_local12.Initialize(_local10, _local11, _local13);
_local4 = m_world.CreateJoint(_local12);
break;
case JointType.PRISMATIC:
_local14 = new b2PrismaticJointDef();
if (_arg1[0] == "By2Points"){
_local8 = _arg1[1];
_local9 = _arg1[2];
_local15 = new b2Vec2((_local9.x - _local8.x), (_local9.y - _local8.y));
_local15 = new b2Vec2((_local15.x / _local15.Length()), (_local15.y / _local15.Length()));
_local10 = GetBodyAtPoint(_local9.x, _local9.y)[0];
_local11 = GetBodyAtPoint(_local8.x, _local8.y)[0];
};
if (_arg1[0] == "ByAxis"){
_local10 = _arg1[1];
_local11 = m_ground;
_local15 = _arg1[2];
_local15 = new b2Vec2((_local15.x / _local15.Length()), (_local15.y / _local15.Length()));
_local8 = _local10.GetPosition();
};
if (_local10 == null){
_local10 = m_ground;
};
if (_local11 == null){
_local11 = m_ground;
};
_local14.enableMotor = _arg3[0];
_local14.enableLimit = _arg3[1];
if (_local14.enableMotor){
_local14.motorSpeed = _arg3[2];
_local14.maxMotorForce = _arg3[3];
};
if (_local14.enableLimit){
_local14.lowerTranslation = _arg3[4];
_local14.upperTranslation = _arg3[5];
};
_local14.Initialize(_local10, _local11, _local8, _local15);
_local4 = m_world.CreateJoint(_local14);
break;
};
_local4.m_userData = _local5;
return (_local4);
}
public function GetStatus():int{
return (status);
}
public function OutControl():void{
Preloader.stageLink.removeEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler);
Preloader.stageLink.removeEventListener(KeyboardEvent.KEY_UP, KeyUpHandler);
Left = false;
Right = false;
Up = false;
if (id != 25){
player.body.m_linearDamping = 5;
};
}
public function DestroyJoint(_arg1:b2Joint):void{
if (((((((_arg1.m_userData) && (_arg1.m_userData.clip))) && (_arg1.m_userData.clip.parent))) && (_arg1.m_userData.clip.parent.contains(_arg1.m_userData.clip)))){
_arg1.m_userData.clip.parent.removeChild(_arg1.m_userData.clip);
};
m_world.DestroyJoint(_arg1);
}
private function winStatusTimerHandler(_arg1:TimerEvent):void{
status = LevelStatus.WIN;
}
public function SetStatus(_arg1:int):void{
var _local2:Timer;
var _local3:Timer;
switch (_arg1){
case LevelStatus.PLAY:
status = LevelStatus.PLAY;
break;
case LevelStatus.WIN:
OutControl();
player.smile.gotoAndPlay("winSmile");
_local2 = new Timer(1500, 1);
_local2.addEventListener(TimerEvent.TIMER, winStatusTimerHandler, false, 0, true);
_local2.start();
break;
case LevelStatus.LOSE:
OutControl();
_local3 = new Timer(1000, 1);
_local3.addEventListener(TimerEvent.TIMER, loseStatusTimerHandler, false, 0, true);
_local3.start();
break;
};
}
public function CreateJoint(_arg1:Array, _arg2:int, _arg3:Array):b2Joint{
var _local4:Array;
var _local5:int;
var _local6:b2Joint;
var _local7:JointInfo;
var _local8:b2DistanceJointDef;
var _local9:Number;
var _local10:b2Vec2;
var _local11:b2Vec2;
var _local12:b2Body;
var _local13:b2Body;
var _local14:b2RevoluteJointDef;
var _local15:b2Vec2;
var _local16:b2PrismaticJointDef;
var _local17:b2Vec2;
var _local18:b2PulleyJointDef;
var _local19:b2Vec2;
var _local20:b2Vec2;
var _local21:b2Vec2;
var _local22:b2Vec2;
var _local23:Number;
var _local24:Number;
var _local25:Number;
var _local26:b2GearJointDef;
_local4 = new Array();
_local5 = 0;
while (_local5 < _arg1.length) {
if ((_arg1[_local5] is MovieClip)){
_local4.push(_arg1[_local5]);
} else {
_local4.push((this.getChildByName(_arg1[_local5]) as MovieClip));
};
_local5++;
};
_local7 = new JointInfo(_local4, _arg2, _arg3);
switch (_arg2){
case JointType.DISTANCE:
_local8 = new b2DistanceJointDef();
_local9 = _arg3[0];
_local10 = new b2Vec2((_local4[0].x / m_physScale), (_local4[0].y / m_physScale));
_local11 = new b2Vec2(((_local4[0].x + (_local9 * Math.cos(((_local4[0].rotation * Math.PI) / 180)))) / m_physScale), ((_local4[0].y + (_local9 * Math.sin(((_local4[0].rotation * Math.PI) / 180)))) / m_physScale));
_local12 = GetBodyAtPoint(_local10.x, _local10.y)[0];
_local13 = GetBodyAtPoint(_local11.x, _local11.y)[0];
if (_local12 == null){
_local12 = m_ground;
};
if (_local13 == null){
_local13 = m_ground;
};
_local8.Initialize(_local12, _local13, _local10, _local11);
_local6 = m_world.CreateJoint(_local8);
break;
case JointType.REVOLUTE:
_local14 = new b2RevoluteJointDef();
_local15 = new b2Vec2((_local4[0].x / m_physScale), (_local4[0].y / m_physScale));
_local12 = GetBodyAtPoint(_local15.x, _local15.y)[1];
_local13 = GetBodyAtPoint(_local15.x, _local15.y)[0];
if (_local12 == null){
_local12 = m_ground;
};
if (_local13 == null){
_local13 = m_ground;
};
_local14.enableMotor = _arg3[0];
_local14.enableLimit = _arg3[1];
if (_local14.enableMotor){
_local14.motorSpeed = _arg3[2];
_local14.maxMotorTorque = _arg3[3];
};
if (_local14.enableLimit){
_local14.lowerAngle = ((_arg3[4] * Math.PI) / 180);
_local14.upperAngle = ((_arg3[5] * Math.PI) / 180);
};
_local14.Initialize(_local12, _local13, _local15);
_local6 = m_world.CreateJoint(_local14);
break;
case JointType.PRISMATIC:
_local16 = new b2PrismaticJointDef();
_local10 = new b2Vec2((_local4[0].x / m_physScale), (_local4[0].y / m_physScale));
_local11 = new b2Vec2(((_local4[0].x + (100 * Math.cos(((_local4[0].rotation * Math.PI) / 180)))) / m_physScale), ((_local4[0].y + (100 * Math.sin(((_local4[0].rotation * Math.PI) / 180)))) / m_physScale));
_local12 = GetBodyAtPoint(_local11.x, _local11.y)[0];
_local13 = GetBodyAtPoint(_local10.x, _local10.y)[0];
if (_local12 == null){
_local12 = m_ground;
};
if (_local13 == null){
_local13 = m_ground;
};
_local17 = new b2Vec2((_local11.x - _local10.x), (_local11.y - _local10.y));
_local17 = new b2Vec2((_local17.x / _local17.Length()), (_local17.y / _local17.Length()));
_local16.enableMotor = _arg3[0];
_local16.enableLimit = _arg3[1];
if (_local16.enableMotor){
_local16.motorSpeed = _arg3[2];
_local16.maxMotorForce = _arg3[3];
};
if (_local16.enableLimit){
_local16.lowerTranslation = (_arg3[4] / m_physScale);
_local16.upperTranslation = (_arg3[5] / m_physScale);
};
_local16.Initialize(_local12, _local13, _local10, _local17);
_local6 = m_world.CreateJoint(_local16);
break;
case JointType.PULLEY:
_local18 = new b2PulleyJointDef();
_local19 = new b2Vec2((_local4[0].x / m_physScale), (_local4[0].y / m_physScale));
_local20 = new b2Vec2((_local4[1].x / m_physScale), (_local4[1].y / m_physScale));
_local21 = new b2Vec2((_local4[0].x / m_physScale), ((_local4[0].y + _local4[0].height) / m_physScale));
_local22 = new b2Vec2((_local4[1].x / m_physScale), ((_local4[1].y + _local4[1].height) / m_physScale));
_local12 = GetBodyAtPoint(_local21.x, _local21.y)[0];
if (_local12 == null){
_local12 = m_ground;
};
_local13 = GetBodyAtPoint(_local22.x, _local22.y)[0];
if (_local13 == null){
_local13 = m_ground;
};
_local23 = _arg3[0];
_local24 = (_local4[0].height / m_physScale);
_local25 = (_local4[1].height / m_physScale);
_local18.Initialize(_local12, _local13, _local19, _local20, _local21, _local22, _local23);
_local18.maxLength1 = (_local24 + _local25);
_local18.maxLength2 = (_local24 + _local25);
_local6 = m_world.CreateJoint(_local18);
break;
case JointType.GEAR:
_local26 = new b2GearJointDef();
_local26.joint1 = GetJointByClip(_local4[0]);
_local26.joint2 = GetJointByClip(_local4[1]);
_local26.body1 = _local26.joint1.GetBody2();
_local26.body2 = _local26.joint2.GetBody2();
_local26.ratio = _arg3[0];
_local6 = m_world.CreateJoint(_local26);
break;
case JointType.REVOLUTE_ANGLE_TARGET:
_local6 = CreateJoint(_arg1, JointType.REVOLUTE, [true, false, 0, 0]);
break;
};
_local6.m_userData = _local7;
_local5 = 0;
while (_local5 < _local4.length) {
if (m_sprite.contains(_local4[_local5])){
m_sprite.removeChild(_local4[_local5]);
};
_local5++;
};
return (_local6);
}
protected function CreateController(_arg1:Array, _arg2:int, _arg3:Array):b2Controller{
var _local4:Array;
var _local5:int;
var _local7:b2SpringController;
var _local8:Number;
var _local9:b2Vec2;
var _local10:b2Vec2;
var _local11:b2Body;
var _local12:b2Body;
var _local13:b2BuoyancyController;
var _local14:b2GravityController;
_local4 = new Array();
_local5 = 0;
while (_local5 < _arg1.length) {
if ((_arg1[_local5] is MovieClip)){
_local4.push(_arg1[_local5]);
} else {
_local4.push((this.getChildByName(_arg1[_local5]) as MovieClip));
};
_local5++;
};
var _local6:ControllerInfo = new ControllerInfo(_local4, _arg2, _arg3);
switch (_arg2){
case ControllerType.SPRING:
_local7 = new b2SpringController();
_local7.m_userData = _local6;
_local8 = _arg3[0];
_local9 = new b2Vec2((_local4[0].x / m_physScale), (_local4[0].y / m_physScale));
_local10 = new b2Vec2(((_local4[0].x + (_local8 * Math.cos(((_local4[0].rotation * Math.PI) / 180)))) / m_physScale), ((_local4[0].y + (_local8 * Math.sin(((_local4[0].rotation * Math.PI) / 180)))) / m_physScale));
_local11 = GetBodyAtPoint(_local9.x, _local9.y)[0];
_local12 = GetBodyAtPoint(_local10.x, _local10.y)[0];
if (_local11 == null){
_local11 = m_ground;
};
if (_local12 == null){
_local12 = m_ground;
};
_local7.SetBody1(_local11);
_local7.SetBody2(_local12);
_local7.SetAnchor1(_local9);
_local7.SetAnchor2(_local10);
_local7.length = (_local8 / m_physScale);
_local7.damping = _arg3[1];
m_controllers.push(_local7);
if (m_sprite.contains(_local4[0])){
m_sprite.removeChild(_local4[0]);
};
break;
case ControllerType.BUOYANCY:
_local13 = new b2BuoyancyController();
_local13.m_userData = _local6;
_local13.normal.Set(0, -1);
_local13.offset = (-(_local4[0].y) / m_physScale);
switch (_arg3[0]){
case Materials.WATER:
case Materials.STAR:
case Materials.TOXIC:
_local13.density = Materials.materialParams[_arg3[0]][0];
_local13.linearDrag = Materials.materialParams[_arg3[0]][1];
_local13.angularDrag = Materials.materialParams[_arg3[0]][2];
break;
default:
_local13.density = _arg3[1];
_local13.linearDrag = _arg3[2];
_local13.angularDrag = _arg3[3];
break;
};
m_controllers.push(_local13);
break;
case ControllerType.GRAVITY:
_local14 = new b2GravityController();
_local14.m_userData = _local6;
_local14.G = _arg3[0];
_local14.invSqr = _arg3[1];
_local5 = 0;
while (_local5 < _local4.length) {
_local14.AddBody(GetBodyByClip(_local4[_local5]));
_local5++;
};
m_controllers.push(_local14);
break;
};
return (m_controllers[(m_controllers.length - 1)]);
}
public function GetControllerByClip(_arg1:MovieClip):b2Controller{
var _local2:int;
while (_local2 < m_controllers.length) {
if (m_controllers[_local2].m_userData.clip[0] == _arg1){
return (m_controllers[_local2]);
};
_local2++;
};
return (null);
}
public function GetJointByClip(_arg1:MovieClip):b2Joint{
var _local2:b2Joint = m_world.m_jointList;
while (_local2) {
if (_local2.m_userData){
if (_local2.m_userData.clip[0] == _arg1){
return (_local2);
};
};
_local2 = _local2.m_next;
};
return (null);
}
public function SetControl():void{
Preloader.stageLink.addEventListener(KeyboardEvent.KEY_DOWN, KeyDownHandler, false, 0, true);
Preloader.stageLink.addEventListener(KeyboardEvent.KEY_UP, KeyUpHandler, false, 0, true);
Left = false;
Right = false;
Up = false;
}
public function CreateBody(_arg1, _arg2:int, _arg3:int, _arg4:Array, _arg5:Array):b2Body{
var _local6:b2Body;
var _local7:BodyInfo;
var _local8:b2BodyDef;
var _local9:b2PolygonDef;
var _local10:b2CircleDef;
var _local11:b2PrismaticJointDef;
var _local12:MovieClip;
var _local13:int;
var _local14:int;
var _local15:Number;
if ((_arg1 is MovieClip)){
_local12 = _arg1;
} else {
_local12 = (this.getChildByName(_arg1) as MovieClip);
};
_local7 = new BodyInfo(_local12, _arg2, _arg3, _arg4, _arg5);
_local8 = new b2BodyDef();
_local8.position = new b2Vec2((_local12.x / m_physScale), (_local12.y / m_physScale));
_local8.angle = (_local12.rotation * (Math.PI / 180));
_local8.userData = _local7;
if (_local7.bodyParams[0].length >= 2){
_local8.linearDamping = _local7.bodyParams[0][1];
};
if (_local7.bodyParams[0].length >= 3){
_local8.angularDamping = _local7.bodyParams[0][2];
};
if (_local7.bodyParams[0].length >= 4){
_local8.isBullet = _local7.bodyParams[0][3];
};
_local6 = m_world.CreateBody(_local8);
switch (_arg3){
case GeomType.POLYGON:
_local13 = 0;
while (_local13 < _arg5[0].length) {
_local9 = new b2PolygonDef();
_local9.vertexCount = _arg5[0][_local13].length;
_local14 = 0;
while (_local14 < _local9.vertexCount) {
_local9.vertices[_local14].Set(((_local12.scaleX * _arg5[0][_local13][_local14][0]) / m_physScale), ((_local12.scaleY * _arg5[0][_local13][_local14][1]) / m_physScale));
_local14++;
};
switch (_arg2){
case BodyType.STATIC:
case BodyType.DROP:
case BodyType.DISAP:
_local9.density = 0;
break;
default:
if ((_arg4[1] is Array)){
_local9.density = _arg4[1][0];
} else {
_local9.density = Materials.materialParams[_arg4[1]][0];
};
break;
};
if ((_arg4[1] is Array)){
_local9.friction = _arg4[1][1];
_local9.restitution = _arg4[1][2];
} else {
_local9.friction = Materials.materialParams[_arg4[1]][1];
_local9.restitution = Materials.materialParams[_arg4[1]][2];
};
_local6.CreateShape(_local9);
_local13++;
};
break;
case GeomType.CIRCLE:
_local10 = new b2CircleDef();
_local10.radius = (((_local12.scaleX * _arg5[0][0]) / m_physScale) / 2);
_local10.localPosition.Set(0, 0);
switch (_arg2){
case BodyType.STATIC:
case BodyType.DROP:
case BodyType.DISAP:
_local10.density = 0;
break;
default:
if ((_arg4[1] is Array)){
_local10.density = _arg4[1][0];
} else {
_local10.density = Materials.materialParams[_arg4[1]][0];
};
break;
};
if ((_arg4[1] is Array)){
_local10.friction = _arg4[1][1];
_local10.restitution = _arg4[1][2];
} else {
_local10.friction = Materials.materialParams[_arg4[1]][1];
_local10.restitution = Materials.materialParams[_arg4[1]][2];
};
_local6.CreateShape(_local10);
break;
};
_local6.SetMassFromShapes();
switch (_arg2){
case BodyType.MOVE_X:
CreateSimpleJoint(["ByAxis", _local6, new b2Vec2(1, 0)], JointType.PRISMATIC, [false, false]);
break;
case BodyType.MOVE_Y:
CreateSimpleJoint(["ByAxis", _local6, new b2Vec2(0, 1)], JointType.PRISMATIC, [false, false]);
break;
case BodyType.MOVE_XY:
CreateSimpleJoint(["ByAxis", _local6, new b2Vec2((_arg4[2] - _arg4[4]), (_arg4[3] - _arg4[5]))], JointType.PRISMATIC, [false, false]);
break;
case BodyType.UP_AND_DROP:
CreateSimpleJoint(["ByAxis", _local6, new b2Vec2(0, 1)], JointType.PRISMATIC, [false, false]);
break;
case BodyType.JUMP:
_local15 = (((_local12.rotation + 90) * Math.PI) / 180);
CreateSimpleJoint(["ByAxis", _local6, new b2Vec2(Math.cos(_local15), Math.sin(_local15))], JointType.PRISMATIC, [true, true, _arg4[3], 0, 0, _arg4[4]]);
break;
case BodyType.DISAP:
_local6.m_userData.bodyParams[2] = 0;
};
if (!_local6.IsStatic()){
m_bodies.push(_local6);
};
m_sprite.setChildIndex(m_joint, (numChildren - 1));
return (_local6);
}
public function GetBodyByClip(_arg1):b2Body{
if (!(_arg1 is MovieClip)){
_arg1 = (getChildByName(_arg1) as MovieClip);
};
var _local2:b2Body = m_world.m_bodyList;
while (_local2) {
if (_local2.m_userData){
if (_local2.m_userData.clip == _arg1){
return (_local2);
};
};
_local2 = _local2.m_next;
};
return (null);
}
public function Update(_arg1:Event):void{
var _local2:b2Body;
var _local3:b2Joint;
var _local4:b2Controller;
var _local5:Array;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Number;
var _local9:CustomContactPoint;
var _local10:Number;
var _local11:CustomContactPoint;
var _local12:int;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:b2Body;
var _local17:b2Body;
var _local18:b2Body;
var _local19:b2Shape;
var _local20:b2RevoluteJoint;
var _local21:Number;
var _local22:Number;
var _local23:Number;
var _local24:Number;
var _local25:MovieClip;
var _local26:b2Body;
var _local27:b2BuoyancyController;
var _local28:Boolean;
var _local29:Boolean;
var _local30:Point;
var _local31:Boolean;
var _local32:Boolean;
var _local33:*;
var _local34:int;
var _local35:Number;
m_world.Step(m_timeStep, m_iterations);
m_joint.graphics.clear();
_local2 = m_world.m_bodyList;
while (_local2) {
if (_local2.m_userData){
_local2.m_userData.clip.x = (_local2.GetPosition().x * m_physScale);
_local2.m_userData.clip.y = (_local2.GetPosition().y * m_physScale);
_local2.m_userData.clip.rotation = ((_local2.GetAngle() * (180 / Math.PI)) % 360);
if (_local2.m_userData.outBoundary){
DestroyBody(_local2);
};
switch (_local2.m_userData.bodyType){
case BodyType.DROP:
if (contactListener.Touch(_local2, player.body)){
CreateBody(_local2.m_userData.clip, BodyType.STANDART, _local2.m_userData.geomType, _local2.m_userData.bodyParams, _local2.m_userData.geomParams);
contactListener.RemoveBodyPoints(_local2);
m_world.DestroyBody(_local2);
};
break;
case BodyType.MOVE_X:
if (_local2.m_userData.clip.x < _local2.m_userData.bodyParams[2]){
_local2.m_userData.bodyParams[4] = 1;
};
if (_local2.m_userData.clip.x > _local2.m_userData.bodyParams[3]){
_local2.m_userData.bodyParams[4] = -1;
};
_local2.SetLinearVelocity(new b2Vec2((_local2.m_userData.bodyParams[4] * _local2.m_userData.bodyParams[5]), 0));
break;
case BodyType.MOVE_Y:
if (_local2.m_userData.clip.y < _local2.m_userData.bodyParams[2]){
_local2.m_userData.bodyParams[4] = 1;
};
if (_local2.m_userData.clip.y > _local2.m_userData.bodyParams[3]){
_local2.m_userData.bodyParams[4] = -1;
};
_local2.SetLinearVelocity(new b2Vec2(0, (_local2.m_userData.bodyParams[4] * _local2.m_userData.bodyParams[5])));
break;
case BodyType.MOVE_XY:
_local13 = Math.atan(((_local2.m_userData.bodyParams[5] - _local2.m_userData.bodyParams[3]) / (_local2.m_userData.bodyParams[4] - _local2.m_userData.bodyParams[2])));
if (_local2.m_userData.bodyParams[2] < _local2.m_userData.bodyParams[4]){
if (_local2.m_userData.clip.x < _local2.m_userData.bodyParams[2]){
_local2.m_userData.bodyParams[6] = 1;
};
if (_local2.m_userData.clip.x > _local2.m_userData.bodyParams[4]){
_local2.m_userData.bodyParams[6] = -1;
};
} else {
if (_local2.m_userData.clip.x < _local2.m_userData.bodyParams[4]){
_local2.m_userData.bodyParams[6] = 1;
};
if (_local2.m_userData.clip.x > _local2.m_userData.bodyParams[2]){
_local2.m_userData.bodyParams[6] = -1;
};
};
_local2.SetLinearVelocity(new b2Vec2(((_local2.m_userData.bodyParams[6] * _local2.m_userData.bodyParams[7]) * Math.cos(_local13)), ((_local2.m_userData.bodyParams[6] * _local2.m_userData.bodyParams[7]) * Math.sin(_local13))));
break;
case BodyType.UP_AND_DROP:
if (_local2.m_userData.clip.y < _local2.m_userData.bodyParams[2]){
_local2.m_userData.bodyParams[4] = 1;
};
if (_local2.m_userData.clip.y > _local2.m_userData.bodyParams[3]){
_local2.m_userData.bodyParams[4] = -1;
};
if (_local2.m_userData.bodyParams[4] == -1){
_local2.SetLinearVelocity(new b2Vec2(0, (_local2.m_userData.bodyParams[4] * _local2.m_userData.bodyParams[5])));
};
break;
case BodyType.JUMP:
if (contactListener.Touch(_local2, player.body)){
(_local2.GetJointList().joint as b2PrismaticJoint).SetMaxMotorForce(_local2.m_userData.bodyParams[2]);
};
if ((_local2.GetJointList().joint as b2PrismaticJoint).GetJointTranslation() >= (_local2.GetJointList().joint as b2PrismaticJoint).GetUpperLimit()){
(_local2.GetJointList().joint as b2PrismaticJoint).SetMaxMotorForce(0);
};
break;
case BodyType.LOST:
_local14 = (0.25 * _local2.m_userData.bodyParams[3]);
_local15 = (0.75 * _local2.m_userData.bodyParams[3]);
if (_local2.m_userData.bodyParams[2] >= 0){
_local2.m_userData.bodyParams[2] = (_local2.m_userData.bodyParams[2] - Preloader.frameTime);
_local2.m_userData.bodyParams[5] = _local14;
_local2.m_userData.bodyParams[6] = true;
} else {
if (_local2.m_userData.bodyParams[5] > 0){
_local2.m_userData.bodyParams[5] = (_local2.m_userData.bodyParams[5] + Preloader.frameTime);
};
if (_local2.m_userData.bodyParams[5] <= 0){
_local2.m_userData.bodyParams[5] = (_local2.m_userData.bodyParams[5] - Preloader.frameTime);
};
if (_local2.m_userData.bodyParams[5] > 0){
if (_local2.m_userData.bodyParams[5] <= _local14){
_local2.m_userData.clip.alpha = (_local2.m_userData.bodyParams[5] / _local14);
if (_local2.m_userData.bodyParams[5] > (_local14 / 20)){
_local2.m_userData.bodyParams[6] = true;
};
};
if (_local2.m_userData.bodyParams[5] >= _local15){
_local2.m_userData.clip.alpha = ((_local2.m_userData.bodyParams[3] - _local2.m_userData.bodyParams[5]) / (_local2.m_userData.bodyParams[3] - _local15));
if (_local2.m_userData.bodyParams[5] > (_local2.m_userData.bodyParams[3] - (_local14 / 20))){
_local2.m_userData.bodyParams[6] = false;
_local19 = _local2.m_shapeList;
while (_local19) {
m_world.Refilter(_local19);
contactListener.RemoveBodiesCommonPoints(_local2, player.body);
_local19 = _local19.m_next;
};
};
};
} else {
_local2.m_userData.clip.alpha = 0;
};
if (_local2.m_userData.bodyParams[5] > _local2.m_userData.bodyParams[3]){
_local2.m_userData.bodyParams[5] = -1;
};
if (_local2.m_userData.bodyParams[5] < -(_local2.m_userData.bodyParams[4])){
_local2.m_userData.bodyParams[5] = 1;
};
};
break;
case BodyType.DISAP:
_local16 = GetBodyAtPoint(player.body.GetPosition().x, (player.body.GetPosition().y + 0.4))[0];
_local17 = GetBodyAtPoint((player.body.GetPosition().x - 0.2), (player.body.GetPosition().y + 0.38))[0];
_local18 = GetBodyAtPoint((player.body.GetPosition().x + 0.2), (player.body.GetPosition().y + 0.38))[0];
if (((contactListener.Touch(_local2, player.body)) && ((((((_local16 == _local2)) || ((_local17 == _local2)))) || ((_local18 == _local2)))))){
var _local36 = _local2.m_userData.bodyParams;
var _local37 = 2;
var _local38 = (_local36[_local37] + 1);
_local36[_local37] = _local38;
};
if (((((((((!(contactListener.Touch(_local2, player.body))) && (!((_local16 == _local2))))) && (!((_local17 == _local2))))) && (!((_local18 == _local2))))) && ((_local2.m_userData.bodyParams[2] >= 1)))){
DestroyBody(_local2, true);
};
break;
};
switch (_local2.m_userData.bodyParams[0]){
case Materials.GLASS:
if (contactListener.Touch(_local2, player.body)){
DestroyBody(_local2);
};
break;
};
if (_local2.m_userData.bodyParams[0].length >= 1){
switch (_local2.m_userData.bodyParams[0][0]){
case Damage.KILL:
if (contactListener.Touch(_local2, player.body)){
player.Kill();
};
break;
};
};
};
_local2 = _local2.m_next;
};
_local3 = m_world.m_jointList;
while (_local3) {
switch (_local3.m_userData.jointType){
case JointType.REVOLUTE_ANGLE_TARGET:
_local20 = (_local3 as b2RevoluteJoint);
_local21 = _local20.GetJointAngle();
_local22 = _local3.m_userData.jointParams[1];
_local23 = _local3.m_userData.jointParams[2];
_local24 = _local3.m_userData.jointParams[3];
_local20.SetMaxMotorTorque(Math.abs(((_local21 * _local22) + (_local20.GetJointSpeed() * _local23))));
_local20.SetMotorSpeed(((_local21 > _local3.m_userData.jointParams[0])) ? -(_local24) : _local24);
break;
};
DrawJoint(_local3);
_local3 = _local3.m_next;
};
for each (_local4 in m_controllers) {
_local4.Step(m_timeStep);
if (_local4.m_userData){
switch (_local4.m_userData.controllerType){
case ControllerType.BUOYANCY:
_local12 = 0;
while (_local12 < numChildren) {
_local25 = (getChildAt(_local12) as MovieClip);
if ((_local25 is MovieClip)){
_local26 = GetBodyByClip(_local25);
if (((_local26) && (!(_local26.IsStatic())))){
_local27 = (_local4 as b2BuoyancyController);
_local28 = (_local4.m_userData.controllerParams[0] == Materials.STAR);
_local29 = (((_local4.m_userData.controllerParams[0] == Materials.WATER)) || ((_local4.m_userData.controllerParams[0] == Materials.TOXIC)));
_local30 = this.localToGlobal(new Point(_local25.x, _local25.y));
_local31 = (_local4 as b2BuoyancyController).m_userData.clip[0].hitTestPoint(_local30.x, _local30.y);
_local32 = (_local4 as b2BuoyancyController).m_userData.clip[0].hitTestObject(_local25);
if (((((_local28) && (_local31))) || (((_local29) && (_local32))))){
if (!BodyInBuoyancy(_local26)){
_local27.AddBody(_local26);
};
if (_local25 == player){
if (((!((_local4.m_userData.controllerParams[0] == Materials.WATER))) && (!((_local4.m_userData.controllerParams[0] == Materials.STAR))))){
switch (_local4.m_userData.controllerParams[4]){
case Damage.KILL:
player.Kill();
break;
case Damage.INJURE:
player.Injure((_local4.m_userData.controllerParams[5] / 30));
break;
};
};
};
} else {
_local27.RemoveBody(_local26);
};
if (_local29){
if (((((((((_local31) && ((_local27.centerInBodies.indexOf(_local26) == -1)))) && (!(BodyInBuoyancy(_local26, -1, _local27))))) && ((_local26.GetLinearVelocity().Length() > 3)))) || (((((((!(_local31)) && (!((_local27.centerInBodies.indexOf(_local26) == -1))))) && ((_local25.y < _local4.m_userData.clip[0].y)))) && ((_local26.GetLinearVelocity().Length() > 3)))))){
_local33 = ((_local4.m_userData.controllerParams[0] == Materials.WATER)) ? new WaterSpray() : new ToxicSpray();
_local33.x = _local25.x;
_local33.y = _local25.y;
_local33.alpha = 0.5;
addChildAt(_local33, (getChildIndex(m_joint) - 1));
sound.Play(SoundID.WATER_IN);
};
if (_local31){
if (_local27.centerInBodies.indexOf(_local26) == -1){
_local27.centerInBodies.push(_local26);
};
if (_local25 == player){
player.smile.gotoAndPlay("underWater");
};
} else {
_local34 = _local27.centerInBodies.indexOf(_local26);
if (_local34 != -1){
_local27.centerInBodies.splice(_local34, 1);
};
};
};
};
};
_local12++;
};
break;
case ControllerType.SPRING:
_local4.Draw(m_world.m_debugDraw);
break;
};
};
};
player.Update();
_local5 = contactListener.IsTouching(player.body);
_local6 = false;
_local7 = false;
_local8 = 0;
_local10 = 0;
for each (_local11 in _local5) {
if (_local11.position.y > player.body.GetPosition().y){
_local6 = true;
_local35 = ((((_local11.shape1.GetBody() == player.body)) ? -1 : 1 * _local11.normal.y) * player.JUMP_FORCE);
if (_local35 < _local8){
_local7 = true;
_local9 = _local11;
_local8 = _local35;
};
};
_local10 = (_local10 + _local11.normalImpulse);
};
if ((((_local10 > 10)) || (BodyInBuoyancy(player.body, Materials.TOXIC)))){
player.Injure(_local10);
player.smile.gotoAndPlay("injure");
};
if (((((((((_local6) && (!(Left)))) && (!(Right)))) && (!(Up)))) && (!(Down)))){
player.body.m_linearVelocity.x = (player.body.m_linearVelocity.x * 0.975);
};
if (Left){
player.body.WakeUp();
if (_local6){
if (player.body.m_linearVelocity.x > -(player.MAX_VX)){
player.body.m_linearVelocity.x = (player.body.m_linearVelocity.x - player.DV_FRAME);
};
} else {
if (player.body.m_linearVelocity.x > (-(player.MAX_VX) * player.FLY_VK)){
player.body.m_linearVelocity.x = (player.body.m_linearVelocity.x - (player.DV_FRAME * player.FLY_VK));
};
};
};
if (Right){
player.body.WakeUp();
if (_local6){
if (player.body.m_linearVelocity.x < player.MAX_VX){
player.body.m_linearVelocity.x = (player.body.m_linearVelocity.x + player.DV_FRAME);
};
} else {
if (player.body.m_linearVelocity.x < (player.MAX_VX * player.FLY_VK)){
player.body.m_linearVelocity.x = (player.body.m_linearVelocity.x + (player.DV_FRAME * player.FLY_VK));
};
};
};
if (Up){
player.body.WakeUp();
if (((((_local7) && (!(jumpTimer.running)))) && (!(BodyInBuoyancy(player.body))))){
if (player.body.m_linearVelocity.y > 0){
player.body.m_linearVelocity.y = 0;
};
player.body.ApplyForce(new b2Vec2(0, _local8), player.body.GetWorldCenter());
player.smile.gotoAndPlay("jump");
jumpTimer.start();
sound.Play(SoundID.JUMP);
} else {
if ((((player.body.m_linearVelocity.y < 0)) && (!(BodyInBuoyancy(player.body))))){
player.body.ApplyForce(new b2Vec2(0, -(player.JUMP_FRAME)), player.body.GetWorldCenter());
};
};
if (BodyInBuoyancy(player.body, Materials.STAR)){
player.body.ApplyForce(new b2Vec2(0, (-0.2 * player.JUMP_FRAME)), player.body.GetWorldCenter());
};
if (BodyInBuoyancy(player.body, Materials.WATER)){
player.body.ApplyForce(new b2Vec2(0, (-2 * player.JUMP_FRAME)), player.body.GetWorldCenter());
};
if (BodyInBuoyancy(player.body, Materials.TOXIC)){
player.body.ApplyForce(new b2Vec2(0, (-2 * player.JUMP_FRAME)), player.body.GetWorldCenter());
};
};
if (Down){
if (BodyInBuoyancy(player.body, Materials.STAR)){
player.body.ApplyForce(new b2Vec2(0, (3.5 * player.JUMP_FRAME)), player.body.GetWorldCenter());
};
if (BodyInBuoyancy(player.body, Materials.WATER)){
player.body.ApplyForce(new b2Vec2(0, (5 * player.JUMP_FRAME)), player.body.GetWorldCenter());
};
if (BodyInBuoyancy(player.body, Materials.TOXIC)){
player.body.ApplyForce(new b2Vec2(0, (5 * player.JUMP_FRAME)), player.body.GetWorldCenter());
};
if (((!(BodyInBuoyancy(player.body))) && (_local6))){
player.body.m_angularVelocity = (player.body.m_angularVelocity * 0.85);
player.body.m_linearVelocity.x = (player.body.m_linearVelocity.x * 0.85);
player.body.m_linearVelocity.y = (player.body.m_linearVelocity.y * 0.85);
};
};
if (((((((((((((!(Left)) && (!(Right)))) && (!(Up)))) && (!(Down)))) && ((player.body.m_linearVelocity.Length() < 1)))) && ((player.smile.currentFrame == 100)))) && ((Math.random() < 0.5)))){
player.smile.gotoAndPlay("eyesDance");
};
if ((killHeight - player.y) > 250){
Tweener.addTween(m_sprite, {x:((m_sprite.scaleX * -(player.x)) + (Preloader.stageWidth / 2)), y:(((m_sprite.scaleY * -(player.y)) + (Preloader.stageHeight / 2)) - 15), time:1, transition:"easeOutExpo"});
Tweener.addTween(background, {x:(player.x - ((player.x - playerStartPosition.x) / 10)), y:(player.y - ((player.y - playerStartPosition.y) / 10)), time:1, transition:"easeOutExpo"});
} else {
player.smile.gotoAndStop("creek");
if ((killHeight - player.y) > 200){
sound.Play(SoundID.CREEK);
};
};
if (player.y > killHeight){
player.Destroy();
};
_local12 = 0;
while (_local12 < m_objects.length) {
m_objects[_local12].Update();
_local12++;
};
}
}
}//package
Section 251
//LevelButton (LevelButton)
package {
import flash.display.*;
import flash.text.*;
import flash.filters.*;
public class LevelButton extends MovieClip {
public var nText:TextField;
private var _n:int;
public function LevelButton():void{
addFrameScript(0, frame1);
}
public function Init(_arg1:int):void{
_n = _arg1;
nText.text = n.toString();
mouseChildren = false;
filters = [new DropShadowFilter(0.5, 45, 0x333333, 1, 1, 1, 1, 1, false, false, false)];
}
function frame1(){
stop();
}
public function get n():int{
return (_n);
}
}
}//package
Section 252
//Loop1 (Loop1)
package {
import flash.media.*;
public dynamic class Loop1 extends Sound {
}
}//package
Section 253
//Loop2 (Loop2)
package {
import flash.media.*;
public dynamic class Loop2 extends Sound {
}
}//package
Section 254
//Loop3 (Loop3)
package {
import flash.media.*;
public dynamic class Loop3 extends Sound {
}
}//package
Section 255
//Loop4 (Loop4)
package {
import flash.media.*;
public dynamic class Loop4 extends Sound {
}
}//package
Section 256
//mcBannedSign (mcBannedSign)
package {
import flash.display.*;
public dynamic class mcBannedSign extends MovieClip {
public var bg:MovieClip;
}
}//package
Section 257
//mcCrownMask (mcCrownMask)
package {
import flash.display.*;
public dynamic class mcCrownMask extends MovieClip {
}
}//package
Section 258
//mcFerryLine (mcFerryLine)
package {
import flash.display.*;
public dynamic class mcFerryLine extends MovieClip {
}
}//package
Section 259
//mcLogoHolder (mcLogoHolder)
package {
import flash.display.*;
public dynamic class mcLogoHolder extends MovieClip {
}
}//package
Section 260
//mcLogoMask (mcLogoMask)
package {
import flash.display.*;
public dynamic class mcLogoMask extends MovieClip {
}
}//package
Section 261
//mcOtherGames (mcOtherGames)
package {
import flash.display.*;
public dynamic class mcOtherGames extends MovieClip {
}
}//package
Section 262
//mcPlay (mcPlay)
package {
import flash.display.*;
public dynamic class mcPlay extends MovieClip {
}
}//package
Section 263
//mcWaterRing (mcWaterRing)
package {
import flash.display.*;
public dynamic class mcWaterRing extends MovieClip {
public function mcWaterRing(){
addFrameScript(39, frame40);
}
function frame40(){
stop();
}
}
}//package
Section 264
//MenuMoveFX (MenuMoveFX)
package {
import flash.media.*;
public dynamic class MenuMoveFX extends Sound {
}
}//package
Section 265
//MenuSelectFX (MenuSelectFX)
package {
import flash.media.*;
public dynamic class MenuSelectFX extends Sound {
}
}//package
Section 266
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.system.*;
import flash.net.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var _local3:MochiBot = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var _local4 = "http://core.mochibot.com/my/core.swf";
var _local5:URLVariables = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
var _local6:String = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
var _local7:URLRequest = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
var _local8:Loader = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 267
//NotAvailableFX (NotAvailableFX)
package {
import flash.media.*;
public dynamic class NotAvailableFX extends Sound {
}
}//package
Section 268
//PauseFX (PauseFX)
package {
import flash.media.*;
public dynamic class PauseFX extends Sound {
}
}//package
Section 269
//PauseMenu (PauseMenu)
package {
import flash.display.*;
import flash.events.*;
import Types.*;
import com.midasplayer.*;
public dynamic class PauseMenu extends MovieClip {
public var pauseMenuRect:MovieClip;
public var mainMenuButton:SimpleButton;
public var resumeGameButton:SimpleButton;
public var walktroughButton:SimpleButton;
public var game:Game;
public var soundFXButton:MovieClip;
public var musicButton:MovieClip;
public function PauseMenu(){
addFrameScript(0, frame1);
}
public function buttonOverHandler(_arg1:MouseEvent):void{
game.sound.Play(SoundID.MENU_MOVE);
}
public function mainMenuButtonClickHandler(_arg1:MouseEvent):void{
game.sound.Play(SoundID.MENU_SELECT);
game.QuitTo("mainMenu");
game = null;
}
public function RefreshSoundButtons():void{
if (game.sound.isMusic){
musicButton.gotoAndStop(1);
} else {
musicButton.gotoAndStop(2);
};
if (game.sound.isSoundFX){
soundFXButton.gotoAndStop(1);
} else {
soundFXButton.gotoAndStop(2);
};
}
public function resumeGameButtonClickHandler(_arg1:MouseEvent):void{
game.Pause();
}
public function musicButtonOverHandler(_arg1:MouseEvent):void{
if (game.sound.isMusic){
musicButton.gotoAndStop(3);
} else {
musicButton.gotoAndStop(4);
};
}
public function soundFXButtonOverHandler(_arg1:MouseEvent):void{
if (game.sound.isSoundFX){
soundFXButton.gotoAndStop(3);
} else {
soundFXButton.gotoAndStop(4);
};
}
public function walktroughButtonClickHandler(_arg1:MouseEvent):void{
KingAPI.openSignLink();
game.sound.Play(SoundID.MENU_SELECT);
}
function frame1(){
musicButton.buttonMode = true;
musicButton.useHandCursor = true;
musicButton.mouseChildren = false;
soundFXButton.buttonMode = true;
soundFXButton.useHandCursor = true;
soundFXButton.mouseChildren = false;
game = (this.parent as Game);
resumeGameButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
walktroughButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
musicButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
soundFXButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
mainMenuButton.addEventListener(MouseEvent.MOUSE_OVER, buttonOverHandler, false, 0, true);
resumeGameButton.addEventListener(MouseEvent.CLICK, resumeGameButtonClickHandler, false, 0, true);
walktroughButton.addEventListener(MouseEvent.CLICK, walktroughButtonClickHandler, false, 0, true);
musicButton.addEventListener(MouseEvent.CLICK, musicButtonClickHandler, false, 0, true);
soundFXButton.addEventListener(MouseEvent.CLICK, soundFXButtonClickHandler, false, 0, true);
mainMenuButton.addEventListener(MouseEvent.CLICK, mainMenuButtonClickHandler, false, 0, true);
RefreshSoundButtons();
musicButton.addEventListener(MouseEvent.ROLL_OVER, musicButtonOverHandler, false, 0, true);
musicButton.addEventListener(MouseEvent.ROLL_OUT, musicButtonOutHandler, false, 0, true);
soundFXButton.addEventListener(MouseEvent.ROLL_OVER, soundFXButtonOverHandler, false, 0, true);
soundFXButton.addEventListener(MouseEvent.ROLL_OUT, soundFXButtonOutHandler, false, 0, true);
}
public function soundFXButtonOutHandler(_arg1:MouseEvent):void{
if (game.sound.isSoundFX){
soundFXButton.gotoAndStop(1);
} else {
soundFXButton.gotoAndStop(2);
};
}
public function soundFXButtonClickHandler(_arg1:MouseEvent):void{
game.sound.isSoundFX = !(game.sound.isSoundFX);
if (game.sound.isSoundFX){
soundFXButton.gotoAndStop(3);
game.sound.Play(SoundID.MENU_SELECT);
} else {
soundFXButton.gotoAndStop(4);
game.sound.StopFX();
};
}
public function musicButtonClickHandler(_arg1:MouseEvent):void{
game.sound.isMusic = !(game.sound.isMusic);
if (game.sound.isMusic){
musicButton.gotoAndStop(3);
game.sound.Play(SoundID.MENU_SELECT);
} else {
musicButton.gotoAndStop(4);
};
}
public function musicButtonOutHandler(_arg1:MouseEvent):void{
if (game.sound.isMusic){
musicButton.gotoAndStop(1);
} else {
musicButton.gotoAndStop(2);
};
}
}
}//package
Section 270
//Pin (Pin)
package {
import flash.display.*;
public dynamic class Pin extends MovieClip {
}
}//package
Section 271
//Pin10 (Pin10)
package {
import flash.display.*;
public dynamic class Pin10 extends MovieClip {
}
}//package
Section 272
//Player (Player)
package {
import Box2D.Dynamics.Joints.*;
import Box2D.Common.Math.*;
import Box2D.Dynamics.*;
import Box2D.Collision.*;
import Box2D.Collision.Shapes.*;
import Box2D.Common.*;
import flash.display.*;
import flash.events.*;
import Box2D.Dynamics.Contacts.*;
import flash.geom.*;
import Types.*;
import flash.filters.*;
import flash.text.*;
import caurina.transitions.*;
import com.midasplayer.*;
public class Player extends MovieClip {
public const JUMP_FORCE:Number = 120;
public const JUMP_FRAME:Number = 2;
public const MAX_VX:Number = 6;
public const MAX_VY:Number = 10;
public const DV_FRAME:Number = 0.55;
public const FLY_VK:Number = 0.5;
public var smile:MovieClip;
private var levelIn:Level;
private var helpTextFramesExist:int;// = 0
private var testPoints:Array;
public var light:PlayerLight;
public var health:Number;// = 100
public var body:b2Body;
private var helpText:HelpText;
private var material:int;// = 0
private var live:Boolean;// = true
public var crown:PlayerCrown;
public function Player(_arg1:Point, _arg2:Level):void{
testPoints = new Array();
light = new PlayerLight();
super();
x = _arg1.x;
y = _arg1.y;
name = "player";
cacheAsBitmap = true;
levelIn = _arg2;
body = levelIn.CreateBody(this, BodyType.PLAYER, GeomType.CIRCLE, [[Damage.NO, 0, 0, true], material], [[this.width]]);
levelIn.m_sprite.addChildAt(this, (levelIn.getChildIndex(levelIn.getChildByName("checkPoint0")) + 1));
levelIn.m_sprite.x = (-(this.x) + (Preloader.stageWidth / 2));
levelIn.m_sprite.y = (-(this.y) + (Preloader.stageHeight / 2));
light.x = x;
light.y = y;
light.cacheAsBitmap = true;
levelIn.m_sprite.addChildAt(light, (levelIn.getChildIndex(this) + 1));
if (Preloader.bonusPlaying){
crown = new PlayerCrown();
crown.x = x;
crown.y = y;
crown.rotation = rotation;
crown.cacheAsBitmap = true;
levelIn.m_sprite.addChildAt(crown, (levelIn.getChildIndex(light) + 1));
};
var _local3 = 16;
var _local4:Number = (this.width / 2);
var _local5:Number = ((2 * Math.PI) / _local3);
var _local6:int;
while (_local6 < _local3) {
testPoints.push(new Point((_local4 * Math.cos((_local5 * _local6))), (_local4 * Math.sin((_local5 * _local6)))));
_local6++;
};
}
public function Live():Boolean{
return (live);
}
public function Tell(_arg1:String):Boolean{
if (!helpText){
helpText = new HelpText();
helpText.text.text = _arg1;
helpText.x = (this.x + 14);
helpText.y = (this.y - 4);
helpText.filters = [new DropShadowFilter(1, 45, 0, 1, 1, 1, 1, 1, false, false, false)];
helpText.alpha = 0;
levelIn.addChildAt(helpText, levelIn.numChildren);
Tweener.addTween(helpText, {alpha:0.7, time:0.5, transition:"linear"});
helpTextFramesExist = 0;
if (helpText.text.text.indexOf("walktrough") != -1){
helpText.addEventListener(MouseEvent.CLICK, helpTextClickHandler, false, 0, true);
helpText.buttonMode = true;
helpText.useHandCursor = true;
helpText.mouseChildren = false;
};
return (true);
};
return (false);
}
public function HitTestObjectControlPoints(_arg1:DisplayObject, _arg2:Boolean=false):Boolean{
var _local4:Point;
var _local3:int;
while (_local3 < testPoints.length) {
_local4 = localToGlobal(testPoints[_local3]);
if (_arg1.hitTestPoint(_local4.x, _local4.y, _arg2)){
return (true);
};
_local3++;
};
return (false);
}
private function helpTextClickHandler(_arg1:MouseEvent):void{
KingAPI.openSignLink();
}
public function Destroy():void{
var _local1:DieAnimation;
var _local2:int;
if (((Live()) && (!((levelIn.status == LevelStatus.WIN))))){
if (y < levelIn.killHeight){
_local1 = new DieAnimation();
_local1.x = x;
_local1.y = y;
_local1.alpha = 0.8;
if (((levelIn.BodyInBuoyancy(body, Materials.WATER)) || (levelIn.BodyInBuoyancy(body, Materials.TOXIC)))){
_local2 = (levelIn.getChildIndex(this) + 1);
} else {
_local2 = (levelIn.getChildIndex(levelIn.m_joint) - 1);
};
levelIn.m_sprite.addChildAt(_local1, _local2);
};
levelIn.DestroyBody(this.body);
levelIn.m_sprite.removeChild(light);
if (crown){
levelIn.m_sprite.removeChild(crown);
crown = null;
};
if (((helpText) && (levelIn.contains(helpText)))){
levelIn.removeChild(helpText);
helpText = null;
};
live = false;
levelIn.SetStatus(LevelStatus.LOSE);
};
}
public function Injure(_arg1:Number):void{
health = (health - _arg1);
}
public function Update():void{
light.x = x;
light.y = y;
if (crown){
crown.x = x;
crown.y = y;
crown.rotation = rotation;
};
if (helpText){
helpText.x = (this.x + 14);
helpText.y = (this.y - 4);
helpTextFramesExist++;
if (helpTextFramesExist > (160 - 45)){
Tweener.addTween(helpText, {alpha:0, time:0.3, transition:"linear"});
};
if (helpTextFramesExist > 160){
levelIn.removeChild(helpText);
helpText = null;
helpTextFramesExist = 0;
};
};
if (health <= 0){
Kill();
};
}
public function Kill():void{
if (Live()){
levelIn.sound.Play(SoundID.DIE);
};
Destroy();
}
}
}//package
Section 273
//PlayerCrown (PlayerCrown)
package {
import flash.display.*;
public dynamic class PlayerCrown extends MovieClip {
}
}//package
Section 274
//PlayerLight (PlayerLight)
package {
import flash.display.*;
public dynamic class PlayerLight extends MovieClip {
}
}//package
Section 275
//PreGameComics (PreGameComics)
package {
import flash.events.*;
import flash.display.*;
import Types.*;
public class PreGameComics extends Comics {
public var comicsFrame5:MovieClip;
public var comicsFrame6:MovieClip;
public var comicsFrame3:MovieClip;
public var skipButton:SimpleButton;
public var comicsFrame1:MovieClip;
public var comicsFrame2:MovieClip;
public var comicsFrame4:MovieClip;
public function PreGameComics():void{
framesNum = 6;
skipButton.addEventListener(MouseEvent.MOUSE_OVER, skipButtonOverHandler, false, 0, true);
skipButton.addEventListener(MouseEvent.CLICK, skipButtonClickHandler, false, 0, true);
}
private function skipButtonClickHandler(_arg1:MouseEvent):void{
var _local2:MovieClip = (this.parent as MovieClip);
PrepearToDie();
_local2.gotoAndStop("mainMenu");
Preloader.sound.Play(SoundID.MENU_SELECT);
}
private function skipButtonOverHandler(_arg1:MouseEvent):void{
Preloader.sound.Play(SoundID.MENU_MOVE);
}
override public function lastFrameDelayHandler(_arg1:TimerEvent):void{
var _local2:MovieClip = (this.parent as MovieClip);
super.lastFrameDelayHandler(_arg1);
_local2.gotoAndStop("mainMenu");
}
override public function PrepearToDie():void{
skipButton.removeEventListener(MouseEvent.CLICK, skipButtonClickHandler);
super.PrepearToDie();
}
}
}//package
Section 276
//Preloader (Preloader)
package {
import flash.events.*;
import flash.display.*;
import com.kongregate.as3.client.*;
import utils.*;
import Types.*;
import flash.text.*;
import flash.net.*;
public class Preloader extends MovieClip {
private var mMemoryController:MemoryController;
public static const stageHeight:Number = 400;
public static const stageWidth:Number = 550;
public static const frameTime:Number = 33.3333333333333;
public static var levelStart:int;
public static var bonusPlaying:Boolean = false;
private static var _score:int = 0;
public static var sound:SoundManager = new SoundManager();
public static var scoreAvailable:Boolean = false;
public static var stageLink:Stage;
public static var levelTotal:int;
public static var levelSave:SharedObject;
public static var levelAvailable:int;
public static var bonusAvailable:Boolean = false;
public static var bonusTotal:int;
public static var scoreID:int;
public static var continueGame:Boolean = false;
public static var stageLoaderInfo:LoaderInfo;
public function Init(){
stop();
stage.showDefaultContextMenu = false;
stage.scaleMode = StageScaleMode.NO_SCALE;
stageLoaderInfo = loaderInfo;
stageLink = stage;
levelTotal = 20;
bonusTotal = 5;
levelSave = SharedObject.getLocal("RedBall2", "/");
if (levelSave.data.levelAvailable != undefined){
levelAvailable = levelSave.data.levelAvailable;
} else {
levelAvailable = 1;
};
if (isUrl(["king.com", "mygame.com", "king.de", "midasplayer.com", "notdoppler.com", "kongregate.com"])){
bonusAvailable = true;
};
scoreID = ScoreID.KING;
if (isUrl(["kongregate.com"])){
scoreID = ScoreID.KONGREGATE;
addChild(new KongregateAPI());
};
mMemoryController = new MemoryController();
}
public static function get score():int{
return (_score);
}
public static function set score(_arg1:int):void{
_score = ((_arg1 > 0)) ? _arg1 : 0;
}
public static function isUrl(_arg1:Array):Boolean{
var _local2:String = stageLink.loaderInfo.loaderURL;
var _local3:Number = (_local2.indexOf("://") + 3);
var _local4:Number = _local2.indexOf("/", _local3);
var _local5:String = _local2.substring(_local3, _local4);
var _local6:Number = (_local5.lastIndexOf(".") - 1);
var _local7:Number = (_local5.lastIndexOf(".", _local6) + 1);
_local5 = _local5.substring(_local7, _local5.length);
var _local8:int;
while (_local8 < _arg1.length) {
if (_local5 == _arg1[_local8]){
return (true);
};
_local8++;
};
return (false);
}
}
}//package
Section 277
//PulleyFX (PulleyFX)
package {
import flash.media.*;
public dynamic class PulleyFX extends Sound {
}
}//package
Section 278
//RemoveFX (RemoveFX)
package {
import flash.media.*;
public dynamic class RemoveFX extends Sound {
}
}//package
Section 279
//sfxBell (sfxBell)
package {
import flash.media.*;
public dynamic class sfxBell extends Sound {
}
}//package
Section 280
//sfxBounce (sfxBounce)
package {
import flash.media.*;
public dynamic class sfxBounce extends Sound {
}
}//package
Section 281
//SoundManager (SoundManager)
package {
import flash.events.*;
import flash.media.*;
import Types.*;
public class SoundManager {
private const loopsNumber:int = 4;
private var loopChannel:SoundChannel;
private var waterStreamFX:WaterStreamFX;
private var pulleyFX:PulleyFX;
private var creekFX:CreekFX;
private var fireFX:FireFX;
private var creekFXChannel:SoundChannel;
private var _isSoundFX:Boolean;// = true
private var fireFXChannel:SoundChannel;
private var _isMusic:Boolean;// = true
private var loop:Sound;
private var pulleyFXChannel:SoundChannel;
private var waterStreamFXChannel:SoundChannel;
public function SoundManager():void{
}
private function creekFXCompliteHandler(_arg1:Event):void{
creekFX = null;
creekFXChannel = null;
}
private function pulleyFXCompliteHandler(_arg1:Event):void{
pulleyFX = null;
pulleyFXChannel = null;
}
public function StopFX():void{
Stop(SoundID.CREEK);
Stop(SoundID.WATER_STREAM);
Stop(SoundID.PULLEY);
Stop(SoundID.FIRE);
}
private function waterStreamFXCompliteHandler(_arg1:Event):void{
waterStreamFX = null;
waterStreamFXChannel = null;
}
public function set isMusic(_arg1:Boolean):void{
_isMusic = _arg1;
if (isMusic){
PlayRandomLoop();
} else {
StopLoop();
};
}
public function Play(_arg1:String):void{
var _local2:Class;
var _local3:Class;
var _local4:Sound;
var _local5:SoundChannel;
if (((((isMusic) && (IsLoop(_arg1)))) && (!(loop)))){
_local2 = (Preloader.stageLoaderInfo.applicationDomain.getDefinition(_arg1) as Class);
loop = new (_local2);
loopChannel = loop.play(0, 1);
loopChannel.addEventListener(Event.SOUND_COMPLETE, LoopCompliteHandler, false, 0, true);
};
if (((isSoundFX) && (IsSoundFX(_arg1)))){
switch (_arg1){
case SoundID.CREEK:
if (!creekFXChannel){
creekFX = new CreekFX();
creekFXChannel = creekFX.play(0, 1);
creekFXChannel.addEventListener(Event.SOUND_COMPLETE, creekFXCompliteHandler);
};
break;
case SoundID.WATER_STREAM:
if (!waterStreamFXChannel){
waterStreamFX = new WaterStreamFX();
waterStreamFXChannel = waterStreamFX.play(0, 1);
waterStreamFXChannel.addEventListener(Event.SOUND_COMPLETE, waterStreamFXCompliteHandler);
};
break;
case SoundID.PULLEY:
if (!pulleyFXChannel){
pulleyFX = new PulleyFX();
pulleyFXChannel = pulleyFX.play(0, 1);
pulleyFXChannel.addEventListener(Event.SOUND_COMPLETE, pulleyFXCompliteHandler);
};
break;
case SoundID.FIRE:
if (!fireFXChannel){
fireFX = new FireFX();
fireFXChannel = fireFX.play(0, 1);
fireFXChannel.addEventListener(Event.SOUND_COMPLETE, fireFXCompliteHandler);
};
break;
default:
_local3 = (Preloader.stageLoaderInfo.applicationDomain.getDefinition(_arg1) as Class);
_local4 = new (_local3);
_local5 = _local4.play(0, 1);
break;
};
};
}
public function get isSoundFX():Boolean{
return (_isSoundFX);
}
private function IsSoundFX(_arg1:String):Boolean{
if (!IsLoop(_arg1)){
return (true);
};
return (false);
}
public function StopAll():void{
StopLoop();
StopFX();
}
public function Stop(_arg1:String):void{
if (IsLoop(_arg1)){
StopLoop();
};
if (IsSoundFX(_arg1)){
switch (_arg1){
case SoundID.CREEK:
if (creekFXChannel){
creekFXChannel.stop();
creekFX = null;
creekFXChannel = null;
};
break;
case SoundID.WATER_STREAM:
if (waterStreamFXChannel){
waterStreamFXChannel.stop();
waterStreamFX = null;
waterStreamFXChannel = null;
};
break;
case SoundID.PULLEY:
if (pulleyFXChannel){
pulleyFXChannel.stop();
pulleyFX = null;
pulleyFXChannel = null;
};
break;
case SoundID.FIRE:
if (fireFXChannel){
fireFXChannel.stop();
fireFX = null;
fireFXChannel = null;
};
break;
};
};
}
private function fireFXCompliteHandler(_arg1:Event):void{
fireFX = null;
fireFXChannel = null;
}
public function StopLoop():void{
if (loopChannel){
loopChannel.stop();
loopChannel = null;
loop = null;
};
}
private function LoopCompliteHandler(_arg1:Event):void{
StopLoop();
PlayRandomLoop();
}
public function set isSoundFX(_arg1:Boolean):void{
_isSoundFX = _arg1;
if (!isSoundFX){
StopFX();
};
}
private function IsLoop(_arg1:String):Boolean{
switch (_arg1){
case SoundID.LOOP1:
case SoundID.LOOP2:
case SoundID.LOOP3:
case SoundID.LOOP4:
case SoundID.LOOP5:
return (true);
};
return (false);
}
public function PlayRandomLoop():void{
Play(("Loop" + int(((loopsNumber * Math.random()) + 1))));
}
public function get isMusic():Boolean{
return (_isMusic);
}
}
}//package
Section 282
//Star (Star)
package {
import flash.display.*;
public dynamic class Star extends MovieClip {
}
}//package
Section 283
//StarCollect (StarCollect)
package {
import flash.display.*;
public dynamic class StarCollect extends MovieClip {
}
}//package
Section 284
//StarCollectFX (StarCollectFX)
package {
import flash.media.*;
public dynamic class StarCollectFX extends Sound {
}
}//package
Section 285
//ToxicSpray (ToxicSpray)
package {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class ToxicSpray extends MovieClip {
public var __id9_:MovieClipEmitter;
public function ToxicSpray(){
__setProp___id9__ToxicSpray_Layer1_0();
}
function __setProp___id9__ToxicSpray_Layer1_0(){
try {
__id9_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id9_.config = "{pps:75,x:0, y:0, width:15, height:1,size:1, circle:true, color:65280, movement:true, speed:[97.9,234.2] , angle:[339.5,205] , startScale:[0.7,1.5] , limit:20, gravity:18, lifespan:400}";
__id9_.movieClipName = "";
__id9_.pps = 75;
__id9_.rootEffect = false;
try {
__id9_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package
Section 286
//TurnPageFX (TurnPageFX)
package {
import flash.media.*;
public dynamic class TurnPageFX extends Sound {
}
}//package
Section 287
//WaterHolderB (WaterHolderB)
package {
import flash.display.*;
import com.midasplayer.extras.*;
public dynamic class WaterHolderB extends MovieClip {
public var BLUE:Water;
}
}//package
Section 288
//WaterHolderG (WaterHolderG)
package {
import flash.display.*;
import com.midasplayer.extras.*;
public dynamic class WaterHolderG extends MovieClip {
public var GREEN:Water;
}
}//package
Section 289
//WaterHolderR (WaterHolderR)
package {
import flash.display.*;
import com.midasplayer.extras.*;
public dynamic class WaterHolderR extends MovieClip {
public var RED:Water;
}
}//package
Section 290
//WaterInFX (WaterInFX)
package {
import flash.media.*;
public dynamic class WaterInFX extends Sound {
}
}//package
Section 291
//WaterSpray (WaterSpray)
package {
import flash.display.*;
import flash.events.*;
import com.roguedevelopment.pulse.emitter.*;
import flash.geom.*;
import flash.utils.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.system.*;
import flash.ui.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.xml.*;
public dynamic class WaterSpray extends MovieClip {
public var __id10_:MovieClipEmitter;
public function WaterSpray(){
__setProp___id10__WaterSpray_Layer1_0();
}
function __setProp___id10__WaterSpray_Layer1_0(){
try {
__id10_["componentInspectorSetting"] = true;
} catch(e:Error) {
};
__id10_.config = "{pps:75,x:0, y:0, width:15, height:1,size:1, circle:true, color:3381708, movement:true, speed:[97.9,234.2] , angle:[339.5,205] , startScale:[0.7,1.5] , limit:20, gravity:18, lifespan:400}";
__id10_.movieClipName = "";
__id10_.pps = 75;
__id10_.rootEffect = false;
try {
__id10_["componentInspectorSetting"] = false;
} catch(e:Error) {
};
}
}
}//package
Section 292
//WaterStreamFX (WaterStreamFX)
package {
import flash.media.*;
public dynamic class WaterStreamFX extends Sound {
}
}//package
Section 293
//WaterWave (WaterWave)
package {
import flash.display.*;
public dynamic class WaterWave extends MovieClip {
public function WaterWave(){
addFrameScript(14, frame15);
}
function frame15(){
stop();
this.parent.removeChild(this);
}
}
}//package